导航:首页 > 编程语言 > seajs加载非cmd木块

seajs加载非cmd木块

发布时间:2023-02-16 14:58:35

Ⅰ 用类似Requirejs和SeaJS异步加载有什么好处

定位有差异。RequireJS 想成为浏览器端的模块加载器,同时也想成为 Rhino / Node 等环境的模块加载器。SeaJS 则专注于 Web 浏览器端,同时通过 Node 扩展的方式可以很方便跑在 Node 服务器端。

遵循的规范不同。RequireJS 遵循的是 AMD(异步模块定义)规范,SeaJS 遵循的是 CMD
(通用模块定义)规范。规范的不同,导致了两者 API 的不同。SeaJS 更简洁优雅,更贴近 CommonJS Moles/1.1 和
Node Moles 规范。
社区理念有差异。RequireJS 在尝试让第三方类库修改自身来支持 RequireJS,目前只有少数社区采纳。SeaJS 不强推,采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略。
代码质量有差异。RequireJS 是没有明显的 bug,SeaJS 是明显没有 bug。
对调试等的支持有差异。SeaJS 通过插件,可以实现 Fiddler 中自动映射的功能,还可以实现自动 combo 等功能,非常方便。RequireJS 无这方面的支持。

Ⅱ 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 $;
});

Ⅲ seajs怎么调用jquery的插件

方法一,将js插件cmd模块化(define封装成seajs模块,返回匿名函数,包含插件的源码)。/** * Created with JetBrains PhpStorm. * User: ph * Date: 13-3-11 * Time: 上午9:24 * To change this template use File | Settings | File Templates. */ define(function(require,exports,moudles){ return function(jquery){ (function($) { $.fn.pri= function() { alert($("a").attr("href")) // 代码区域。 }; })(jquery); } })jquery库在总js文件(调用该插件的文件)中加载。通过require("t1/jquery_pligun")()来传递jquery变量(参数) ,保证了jquery在调用js插件模块之前加载/** * Created with JetBrains PhpStorm. * User: ph * Date: 13-3-11 * Time: 上午9:40 * To change this template use File | Settings | File Templates. */define(function (require, exports, moudles) { var $=require("jquery") require("t1/jquery_pligun")($) $(document).ready(function () { $("a").pri() })})补充:SeaJS是一个遵循CommonJS规范的javaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。seajs怎么调用jquery的插件

Ⅳ sea.js快速上手

一、seajs.config配置说明:

1.base说明:

base是字符串类型,表示基础或叫做根路径(最好绝对地址)

备注:

(1)base如果不写的话是根据你引用sea.js的地址目录

(2)base如果写了’.’或者 ‘/’或者’ ’这些,会默认从服务根目录开始

(3)base如果写了’js/’之类的相对路径,会默认根据你引用sea.js的地址目录

例如:

seajs.config({

base: 'http://example.com/path/to/base/'

});

2.alias说明

例如:

seajs.config({

base: 'http://example.com/path/to/base/',

// 别名配置

alias: {

'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe',

'jquery': 'jquery/jquery/1.10.1/jquery'

}

});

引入的时候:加载模块(seajs.use("es5-safe"))  引入模块 :(require("jquery"));

3.paths说明:

当目录比较深,或需要跨目录调用模块时,可以使用paths来简化书写。

例如:

seajs.config({

base:'http://example.com/path/to/base/',

//表示路径配置

paths:{

'cwd':'static/common/js'

},

alias: {

'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe',

'jquery': 'jquery/jquery/1.10.1/jquery',

'jquery':'cwd/common/jquery-1.11.3'//alias中使用 static/common/js/common/jquery-1.11.3

}

})

seajs.use('cwd/project/AA');//static/common/js/project/AA

var index = require(cwd/index)//  static/common/js/index.js

4.map说明:

map是Array类型,表示配置可对模块路径进行映射修改,可用于路径转换、在线调试等。

例如:

seajs.config({

map: [

//[ '.js' ,  '-debug.js' ]

['.js' , '.js?_t='+(new Date).getTime()]

]

});

define(function(require, exports, mole) {

var a = require('./a');

//=> 加载的是 path/to/a-debug.js

});

5.preload说明:(备注该属性在V2.3版本时候去除了)

preload是Array或String类型,表示预加载项,可以在普通模块加载前,提前加载并初始化好指定模块。

备注:preload中的空字符串会被忽略掉。使用时需要等到 use 才加载

例如:

seajs.config({

preload: ["jquery"]

});

6.debugBoolean 调试使用

值为 true 时,加载器不会删除动态插入的 script 标签。插件也可以根据 debug 配置,来决策 log 等信息的输出。

seajs.config({

debug:true

});

7.vars变量配置

有些场景下,模块路径在运行时才能确定,这时可以使用vars变量来配置。

seajs.config({

vars: {

'locale': 'zh-cn'

}

});

define(function(require, exports, mole) {

var lang = require('./i18n/{locale}.js');

//=> 加载的是 path/to/i18n/zh-cn.js

});

vars配置的是模块标识中的变量值,在模块标识中用{key}来表示变量。

二、 define

1.所有模块都通过 define 来定义

define(function(require, exports, mole) {

(1). // 通过require.async引入依赖(引入模块);

require.async是异步加载的在引入后,的回调函数中才能使用,函数返回值就是require对象

require.async("jquery",fun) 异步加载模块  jquery(别名)  fun回调函数(可选参数)

require.async(['lib/common/common.js','lib/common/index.js'],function(){

Echo.init({

offset: 150,  //离可视区域多少像素的图片可以被加载

throttle: 10  //图片延迟多少毫秒加载

});

});  //调用多个模块    fun回调函数可选()

(2).require引入依赖(引入模块);

Require引入就可以使用

var Spinning = require('lib/common/common.js');  基础地址/lib/common/common.js

Spinning.tostring();      调用Spinning里面的tostring方法

require直接引入整个文件

require.async(["swiper"], function() {

require('mole/Mycenter/mycenter');

})

2.对外暴露接口

// 通过exports对外提供接口

exports.tonumber = function(){ var  a = 0;}

// 或者通过mole.exports提供整个接口  (推荐使用)

mole.exports.tonumber = function(){ var  a = 0;}

});

三 、use()

seajs.use 用来在页面中加载模块。通过 use 方法,可以在页面中加载任意模块。use 的模块路径相对于当前页面

语法:seajs.use(id, callback?)

// 加载模块 main,并在加载完成时,执行指定回调

seajs.use(‘./main’)加载模块

seajs.use(‘./main’, function(main) {

main.init();

});

use 方法还可以一次加载多个模块:

// 并发加载模块 a 和模块 b,并在都加载完成时,执行指定回调

seajs.use(['./a', './b'], function(a, b) {        加载多个模块  fun回调函数(可选参数);

a.init();

b.init();

});

四、注意

引入 sea.js 时,可以把 sea.js 与其他文件打包在一起,可提前合并好,或利用 combo 服务动态合并。无论哪一种方式,为了让 sea.js内部能快速获取到自身路径,推荐手动加上 id 属性:

Ⅳ sea.js的用法

seajs的作用:
当你的网站开发越来越复杂的时候,会经常遇到这些问题吗?
冲突回
性能
依赖

seajs如何解决?
①引答入sea.js的库
②如何变成模块?
define 在模块grunt合并的时候 define里面要多2个参数 一个id ,一个依赖模块的数组
③如何调用模块?
exports
seajs.use
④如何依赖模块?
require https://github.com/seajs/seajs/issues/259 requie还是严格书写约定不能被修改。 (但是自己在rrd上却看到被修改了很疑惑)

深入学习seajs
define
require
seajs.use
seajs.config
alias
preload
debug

模块化历史
ECMAScrpt第六版将正式支持模块语法
nodeJS
commonJS
AMD
requireJS
跟seajs一样,web端模块化
seajs采用cmd规范

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

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

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

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

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

//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();
});

Ⅶ Seajs的使用

seajs.config
alias
别名配置,配置之后可在模块中使用require调用 require('jquery');

paths
设置路径,方便跨目录调用。通过灵活的设置path可以在不影响base的情况下指定到某个目录。

vars
变量配置。有些场景下,模块路径在运行时才能确定,这时可以使用 vars变量来配置。
vars 配置的是模块标识中的变量值,在模块标识中用 {key}来表示变量。

map
该配置可对模块路径进行映射修改,可用于路径转换、在线调试等。

preload
使用preload配置项,可以在普通模块加载前,提前加载并初始化好指定模块。
注:preload中的空字符串会被忽略掉。

注:preload中的配置,需要等到 use 时才加载。比如:

注:preload 配置不能放在模块文件里面:

debug
值为true时,加载器不会删除动态插入的 script 标签。插件也可以根据debug配置,来决策 log 等信息的输出。

base
Sea.js 在解析顶级标识时,会相对 base 路径来解析。

charset
获取模块文件时,<script> 或 <link> 标签的charset属性。 默认是utf-8
charset还可以是一个函数:

seajs.use
用来在页面中加载一个或多个模块。seajs.use(id, callback?)

注意:seajs.use 与 DOM ready 事件没有任何关系。如果某些操作要确保在 DOM ready 后执行,需要使用 jquery 等类库来保证。比如

注意:use方法第一个参数一定要有,但是可以是null,也可以是一个变量

seajs.cache
通过 seajs.cache,可以查阅当前模块系统中的所有模块信息。
比如,打开 seajs.org,然后在 WebKit Developer Tools 的 Console 面板中输入 seajs.cache,可以看到:

seajs.reslove
类似require.resolve,会利用模块系统的内部机制对传入的字符串参数进行路径解析。

seajs.data
通过 seajs.data,可以查看 seajs 所有配置以及一些内部变量的值,可用于插件开发。当加载遇到问题时,也可用于调试。

Ⅷ CommonJS AMD CMD KISSY SeaJs之间是什么关系

CMD是国内玉伯大神在开发SeaJS的时候提出来的,属于CommonJS的一种规范,此外还有内AMD,其对于的框架是RequireJS
1、二者都容是异步模块定义(Asynchronuous Mole Definition)的一个实现;
2、CMD和AMD都是CommonJS的一种规范的实现定义,RequireJS和SeaJS是对应的实践;
3、CMD和AMD的区别:CMD相当于按需加载,定义一个模块的时候不需要立即制定依赖模块,在需要的时候require就可以了,比较方便;而AMD则相反,定义模块的时候需要制定依赖模块,并以形参的方式引入factory中。

Ⅸ jquery.1.12.3怎样cmd,让seajs模块化加载呢

直接require引入就可以了。

//别名
alias:{
'jquery':'路径xxx/jquery.1.12.3.min'
},
//需要预加载的js
preload:['jquery']

在seajs的config中增加这个。

Ⅹ seajs是什么

js的一种框架

追求简单、自然的代码书写和组织方式,具有以下核心特性:
简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码。
自然直观的代码组织方式:依赖的自动加载、配置的简洁清晰,可以让我们更多地享受编码的乐趣。
Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口。

阅读全文

与seajs加载非cmd木块相关的资料

热点内容
系统apk图标修改工具 浏览:121
苹果6手机网络没信号怎么回事啊 浏览:378
手机扫描文件转换成word 浏览:636
手机本地视频的文件夹在哪里 浏览:908
苹果11无法安装app找不到描述文件 浏览:363
咋新建cad文件 浏览:969
窝窝app怎么样自动关 浏览:228
苹果电脑怎么用wps生成多个文件夹 浏览:309
苹果手机哪里有卖 浏览:83
app登录状态为什么不过期 浏览:160
win10创意者无法升级 浏览:59
如何查杀后门程序 浏览:498
定类数据可以用哪些描述统计方法 浏览:278
微信公众号阅读全文怎么跳转文件 浏览:935
迷你编程怎么免费进入 浏览:354
苹果应用设置密码 浏览:21
windowsmac共享文件夹 浏览:274
数据安全性和固态硬盘哪个好 浏览:433
word为什么图片不能旋转 浏览:732
qq上本机文件怎么删除不了怎么办 浏览:117

友情链接