导航:首页 > 编程语言 > seajs依赖

seajs依赖

发布时间:2023-10-14 02:55:53

① Seajs优缺点 什么是CMD 和AMD 如何使用

1.简介

Seajs,一个Web模块加载框架,追求简单、自然的代码书写和组织方式,:Sea.js 遵循 CMD 规范,模块化JS代码。依赖的自动加载、配置的简洁清晰,可以让程序员更多地专注编码。

2.优缺点

优点:
1).提高可维护性。
2).模块化编程。
3).动态加载,前端性能优化

缺点:
1).学习文档偏少且混乱,会更改团队使用JS的编写习惯,必须使用模块化编程。
2).不太适合团队目前的情况,多JS文件但少改动,动态加载优势和模块化优势不明显。
3). 需要配套使用SPM工具,JS的打包和管理工具。

2.什么是CMD 和AMD ?

异步模块定义(AMD)是Asynchronous Mole Definition的缩写,是 RequireJS 在推广过程中对模块定义的规范化产出。
通用模块定义(CMD)是Common Mole Definition的缩写,是SeaJS 在推广过程中对模块定义的规范化产出。
RequireJS 和 SeaJS 都是模块化框架的代表,AMD和CMD,是他们各自定义模块化的方式,大同小异,主要是代码风格和API不同。

3.如何使用?
代码如下:<script src="../js/examples-master/sea-moles/seajs/seajs/2.1.1/sea.js"></script>
<script>
//配置js路径
seajs.config({
alias:{
"jquery":"../examples-master/sea-moles/jquery/jquery/1.10.1/jquery.js"
}
});
//加载模块
seajs.use('../js/seajs/init',function($){
$("#test_div").click(function(){alert(1);});
});
</script>
代码如下:
//init.js
define(function(require,exports,mole){
var $ = require('jquery');
return $;
});

② angularJS关于依赖和模块与amd/cmd的区别,分享下结合使用示例

双向绑定,可测试性的代码结构,模型视图分离的一个前端MV*框架

其中angular也提供了模型的概念和依赖管理,不过这个依赖都是要在js对象都已经定义的前提下,没有像amd/cmd提供按需加载。

我个人比较喜欢cmd(seajs),它对顶级作用域window的使用约束较多,全局对象和方法少,缺点就是很多原生库,都需要手工wrap下。

angular定义的controller一般都是全局的,我想用seajs来管理angular的代码和依赖,下面是一起使用的示例,有类似需求的童鞋可以参考下:

java">//fileng_mole2.js
define(function(require){
varLog=require('log');
return{
init:function(){
Log.w('Loadangularmole:m2');

varag=window.angular;
if(!ag){
Log.w('Errorwhenloadangularmole:m2:noangular');
return;
}

varm2=ag.mole('m2',[]);
m2.filter('greet',function(){
returnfunction(name){
return'Hello,'+name+'!';
};
});
}
};
});
//fileng_mole1.js
define(function(require){
require('mole/demo/ng_mole2').init();
varLog=require('log');

return{
init:function(){
Log.w('Loadangularmole:m1');

varag=window.angular;
if(!ag){
Log.w('Errorwhenloadangularmole:m1:noangular');
return;
}

varm1=ag.mole('m1',['m2']);
m1.directive('testDateFormat',function(){
returnfunction(scope,el,attrs,ctrl){
varformat='yyyy-MM-dd';
varupdateTime=function(){
el.text(newDate().format(format));
};

//watchscope.formatinctrl
scope.$watch('format',function(value){
format=value;
updateTime();
});

updateTime();
}
});
}
};
});
//filedemo/ng1.js
//初始化页面
define(function(require){
varLog=require('log');

require('mole/demo/ng_mole1').init();
varagAdaptor=require('x/x.ex.angular');

return{
initPage:function(from,pageInfo,params){
varTestCtrl=function($scope){
$scope.format='yyyy/MM/dd';
};
window.TestCtrl=TestCtrl;

agAdaptor.init(['m1'],'TestCtrl','ngContext');
},

mp:''
};
});
//filex/x.ex.angular.js
//angularbootstrap适配——在bootstrap之前动态修改下dom
define(function(require){
var$=require('jquery');
varLog=require('log');

return{
init:function(moles,ctrlName,contextId){
if(!window.angular){
Log.w('Noangluardefined!','WARN');
return;
}

var_context=$('#'+contextId);
this.initCtrl(_context,ctrlName);
this.initModel(_context);
this.bootstrapAngular(moles);
},

//把ng-controller补上
initCtrl:function(_context,ctrlName){
if(ctrlName)
_context.attr('ng-controller',ctrlName);
},

//根据name把ng-model补上
initModel:function(_context){
_context.find('[name^=f_]').each(function(){
var_el=$(this);
varname=_el.attr('name');
varmodelName=name.split('_').remove(0).join('.');
_el.attr('ng-model',modelName);
});
},

bootstrapAngular:function(moles){
window.angular.bootstrap(document,moles);
}
};
});
	<divclass="m_10">
<h3>Angular——WorkwithSeaJS</h3>

<divid="ngContext">
Dateformat:<inputng-model="format">
<br/>
Currenttimeis:<spantest-date-format=""></span>
</div>
</div>

seajs.use('mole/demo/ng1',function(IPage){
IPage.initPage();
});

③ 如何在一个js中调用另一个js,以及载入多个有依赖关系的js

方法:直接调用对方的函数就行。

步骤:

1、两个或者多个js文件加载到同一版个页面中

2、js文件中的方权法直接相互访问。

示例:

a.js中定义一个方法
functiona(){
}

b.js中定义一个方法
functionb(){
}

在a.js中访问b.js中方法
b();//就可以直接访问b方法

④ 使用seajs后,jquery的扩展怎么办

将js插件cmd模块化(define封装成seajs模块,返回匿名函数,包含插件的源码)。专

⑤ seajs怎么控制js的加载顺序

举个栗子:

require("zepto");
require("zepto.touch");
zepto.touch.js是依赖zepto的,而且,zepto尺寸要比zepto.touch大很多,所以上面代码的情况通常版是zepto.touch已经加载权完并执行好,zepto才执行,导致touch模块不能使用。
目前折中但不太完美的解决办法是,在zepto.touch.js中加入zepto依赖的声明:

define(function(require){
require("zepto");
// 原zepto.touch.js代码
});

阅读全文

与seajs依赖相关的资料

热点内容
找不到指定的文件是什么意思 浏览:659
cad打不出stl文件 浏览:439
红米4进入最近应用程序 浏览:943
word2013官方下载免费版win7 浏览:80
在线考试系统数据库设计表 浏览:190
win10访问不了ftp共享文件夹权限 浏览:1
打印机错误709删除哪个文件 浏览:281
java如何编程模拟一个骰子 浏览:572
微信账号文件android 浏览:254
linux下库文件 浏览:721
javascript自动全屏 浏览:263
视频文件显示十几个小时 浏览:276
mediacoder最新版本 浏览:80
电脑桌面文件分布软件 浏览:116
迪拜iphone6什么版本 浏览:884
编程的表现有哪些 浏览:871
手机上面显示的文件是什么 浏览:659
哪些网络路由器有API 浏览:134
炉石安卓dpi修改器 浏览:144
复杂网络边的权重 浏览:891

友情链接