前言
seajs是一个Javascript模块加载框架,遵循CommonJS规范,实现模块化开发和Javascript加载机制。不同的Javascript框架如jQuery,SeaJS不延长封装语言特征,但只有模块化的Javascript加载的模块,seajs的主要目的是使Javascript开发模块易载。它解放了前端工程师从繁重的Javascript文件和对象的依赖性处理,并可以专注于代码itself.seajs逻辑可以用jQuery框架的完美结合,seajs的使用可以提高程序的可读性和Javascript代码清晰,解决问题依赖的混乱和代码纠缠,这是常见的Javascript编程,方便代码的编写和维护。
seajs是淘宝的前端工程师,作者于波。
seajs本身遵循的吻的概念(保持简单,愚蠢的),只有个位数的API本身,所以没有压力的学习。在学习SeaJS的过程中,你可以感受到无处不在的KISS原则的本质做一件事情,做一个好工作。
本文首先对传统的Javascript编程的一个例子,seajs模块化的Javascript编程,然后讨论了seajs详细的使用,最后给出了相关的一些资料seajs。

传统模式与seajs模块化
假设我们现在正在开发一个Web应用程序的TinyApp,我们决定在tinyapp.module1.js使用jQuery框架的使用在TinyApp的头版,module1.js取决于module2.js和module3.js,和module3.js依靠module4.js。
传统的发展
使用传统的开发方法,js文件代码如下所示:
复制代码代码如下: / / module1.js
VaR在= { {
运行:函数(){
返回。合并({ 'module1},美元。合并(module2.run()(),module3.run())))
}
}

/ / module2.js
VAR模2 = { {
运行:函数(){
返回'module2'} {;
}
}

/ / module3.js
VaR模块= { {
运行:函数(){
返回。合并({ 'module3},module4.run());
}
}

/ / module4.js
无功module4 = { {
运行:函数(){
返回'module4'} {;
}
}
在这一点上总需要引用module1.js及其所有下级依赖(注意顺序):
复制代码代码如下所示:



tinyapp









$(内容),Html(module1.run());



随着项目的进行,js文件将变得越来越依赖,依赖关系变得越来越复杂,使得js代码和HTML中的脚本列表很难维护。
seajs模块开发
这里有一个看看如何使用seajs实现相同的功能。
第一个是index.html:
复制代码代码如下所示:



tinyapp





seajs.use('。 /初始化功能(init){
Init.initPage();
});



你可以看到HTML页面不再需要将所有相关的JS文件,却引入了一个sea.js,sea.js将处理所有的依赖性,加载相应的js文件,加载策略可以选择渲染页面时,一次性加载所有的JS文件可以按需加载(加载响应JS),使用特定的加载策略下面讨论的方法。
index.html加载初始化模块的初始化和页面数据与本模块initPage方法,其中代码细节不讨论。
现在来看一下模块化Javascript的编写。
复制代码代码如下: / / jquery.js
定义(函数(需求,导出,模块)= {)

原始代码…

module.exports =美元。任何(真正的);
});

/ / init.js
定义(函数(需求,导出,模块)= {)
var $ =需要('jquery);
VaR M1 =需要('module1);

exports.initpage =函数(){
$(内容),Html(m1.run());
}
});

/ / module1.js
定义(函数(需求,导出,模块)= {)
var $ =需要('jquery);
VaR M2 =需要('module2);
var m3 =需要('module3);

exports.run =函数(){
返回。合并({ 'module1},美元。合并(m2.run()(),m3.run())))
}
});

/ / module2.js
定义(函数(需求,导出,模块)= {)
exports.run =函数(){
返回'module2'} {;
}
});

/ / module3.js
定义(函数(需求,导出,模块)= {)
var $ =需要('jquery);
VaR M4 =需要('module4);

exports.run =函数(){
返回。合并({ 'module3},m4.run());
}
});

/ / module4.js
定义(函数(需求,导出,模块)= {)
exports.run =函数(){
返回'module4'} {;
}
});
乍一看,这个代码似乎是复杂的,因为例子太简单了,如果它是一个大项目,seajs代码的优势将进一步显现。但从这里我们可以窥探一些SeaJS的特点:
一是HTML页面不需要维护一长串长的脚本标签,只要sea.js介绍。
二是JS代码是按模块组织的,每个模块通过需求介绍自己的模块。代码清晰明了。
在这个例子中,朋友应该有一个直观的印象seajs。本文具体讨论的seajs使用。