单页应用的三个问题

1、id冲突。

如果多个页面有相同id,通过id取dom节点时不能准确定位。

解决方式:用xid代替id,加载组件时会自动生成不同的id。

xid相关api:

this.getIDbyXID(xid);//根据xid获取id

this.comp(xid);//根据xid获取组件

document.getElementByXid(xid);//根据xid获取dom节点(性能最优)

注意事项:

xid和id不允许同时使用,否则xid相关api会失效。

 

2、css冲突

多个页面有相同名称的class属性值

解决:html5中的scoped属性可以(浏览器未广泛支持);

        webx5:样式局部化。与.w页面同名的.css文件只作用于当前的.w页面,页面加载编译的时候会在每个css后加上唯一标识。

 

3、js冲突

多个页面定义了同名的js方法,多次调用后出现冲突。

解决:js模块化。有两种方式AMD(requirejs)(webx5使用该方式);CMD(seajs)。

        js模块化优点:解决命名冲突,更好的进行js模块化管理,提高可维护性,提高客户端性能。

下面是一个典型的js模块化定义。

define(function(require){
  var $ = require("jquery");
  var justep = require("$UI/system/lib/justep");


  var Model = function(){
    this.callParent();
  };

  Model.prototype.methodname= function(event){

  };

  return Model;
});

 

posted @ 2016-10-28 10:28  lanware-shi  阅读(547)  评论(0)    收藏  举报