SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等 JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令 JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的 逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript 编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。
更多介绍请参考官方主页:http://seajs.org/docs/。
E:\WORKSPACES\MYECLIPSE10\FRONTPROJECTEXAMPLE\WEBROOT |
|
│ build.bat |
自动打包压缩的执行文件 |
│ |
|
├─html |
存放前端展示页面 |
│ └─test |
|
│ css.html |
|
│ test1.html |
|
│ |
|
├─js |
javascrpt 文件 |
│ │ cmd.bat |
|
│ │ seajs-config.js |
seajs配置文件 |
│ │ update.bat |
更新seajs库的可执行文件 |
│ │ update.rd |
|
│ │ |
|
│ ├─apps |
项目脚本文件 |
│ │ │ package.json |
npm打包文件 |
│ │ │ |
|
│ │ ├─base |
基础公用的类方法 |
│ │ │ do.js |
|
│ │ │ in.js |
|
│ │ │ lab.js |
|
│ │ │ |
业务目录 |
│ │ └─test |
|
│ │ 1.css |
|
│ │ css.js |
|
│ │ |
|
│ ├─otherlib |
第三方脚本库 |
│ │ │ |
|
│ │ └─jquery |
|
│ │ ├─jquery |
|
│ │ │ jquery-1.10.2.js |
|
│ │ │ jquery-1.10.2.min.js |
|
│ │ │ |
|
│ │ └─jquery-easyui-1.3.4 |
|
│ │ |
|
│ └─sea-modules |
seajs库 |
│ ├─apps |
打包后的业务目录文件 |
│ │ |
|
│ ├─gallery |
自带的常用库 |
│ │ ├─handlebars |
|
│ │ │ └─1.0.2 |
|
│ │ │ handlebars-debug.js |
|
│ │ │ handlebars.js |
|
│ │ │ package.json |
|
│ │ │ runtime-debug.js |
|
│ │ │ runtime.js |
|
│ │ │ |
|
│ │ └─underscore |
|
│ │ └─1.4.4 |
|
│ │ package.json |
|
│ │ underscore-debug.js |
|
│ │ underscore.js |
|
│ │ |
|
│ ├─jquery |
|
│ │ └─jquery |
|
│ │ └─1.10.1 |
|
│ │ jquery-debug.js |
|
│ │ jquery.js |
|
│ │ package.json |
|
│ │ |
|
│ └─seajs |
seajs核心库 |
│ ├─seajs |
|
│ │ └─2.1.1 |
|
│ │ package.json |
|
│ │ sea-debug.js |
|
│ │ sea.js |
|
│ │ sea.js.map |
|
│ │ |
|
│ ├─seajs-style |
样式插件 |
│ │ └─1.0.2 |
|
│ │ package.json |
|
│ │ seajs-style-debug.js |
|
│ │ seajs-style.js |
|
│ │ |
|
│ └─seajs-text |
模版插件 |
│ └─1.0.3 |
|
│ package.json |
|
│ seajs-text-debug.js |
|
│ seajs-text.js |
|
│ |
|
├─META-INF |
|
│ MANIFEST.MF |
|
│ |
|
└─WEB-INF |
|
│ web.xml |
|
│ |
|
├─classes |
|
└─lib |
参照CMD规范。http://seajs.org/docs/#docs 文档的模块编写规范。
结构 |
规则 |
例如 |
类 |
驼峰式 |
ModuleClass() |
公有方法 |
混合式 |
getPosition() |
公有变量 |
混合式 |
frameStyle |
常量 |
大写式 |
DEFAULT_FRAME_LAYOUT |
结构 |
规则 |
私有方法 |
混合,例子:mixedCase |
私有变量 |
混合,例子:mixedCase |
方法(method)参数 |
混合,例子:mixedCase, mixedCase |
本地(local)变量 |
混合,例子:mixedCase, mixedCase |
while(!isDone){
doSomething();
isDone = moreToDo();
}
if(someCondition){
statements;
}elseif(someOtherCondition){
statements;
}else{
statements;
}
for(initialization; condition; update){
statements;
}
while(!isDone){
doSomething();
isDone = moreToDo();
}
do{
statements;
}while(condition);
switch(condition){
case ABC:
statements;
// fallthrough
case DEF:
statements;
break;
default:
statements;
break;
}
try{
statements;
}catch(ex){
statements;
}finally{
statements;
}
if(condition){ statement;}
while(condition){ statement;}
for(intialization; condition; update){ statement;}
具体的文档示例可以参考 https://github.com/senchalabs/jsduck/wiki
范例:@cfg {String} fieldName配置项的描述。
范例:@return {Number} 文字描述
范例:@param {Number/String} fieldName
范例:@param {String[]} fieldName
范例: /**
* @cfg {Object} opt
* @cfg {Number} [opt.age]
* @cfg {Number} [opt.name=0]
*/
该示例项目SVN : http://192.168.1.101:801/svn/998597/FrontProjectExample
第一步:安装文件下载
第二步:执行安装
$ npm install spm -g
$ npm install spm-chaos-build -g
关于 spm 和 spm-chaos-build的详细介绍可以参考
https://github.com/edokeh/spm-chaos-build
第三步:创建业务模块
3.1:创建js文件
在js/apps/test/目录下创建module1.js内容为:
3.2:创建html文件
在html/test/目录下创建module1.html内容为:
注意红色框的修改(与js文件名和目录一致)。
预览效果:
此时要保证seajs-config.js的production配置属性为flase,如下图:
3.3:修改package.json
修改js/apps目录下的package.json,修改如下红色框中的信息。
第四步:构建打包项目
双击根目录下的build.bat,可完成自动打包。
查看seajs-config.js文件
自动生成seajs的map
预览效果如下:
请注意两者之间的区别。
管理开发和打包的有效的管理规范。
相信看完下面两篇文章,可以了解Require为什么是异步加载的了,如果你需要依赖加载的文件加载器,请选择In.js: http://project.benben.cc/In/。
https://github.com/seajs/seajs/issues/259
https://github.com/seajs/seajs/issues/260
https://github.com/seajs/seajs/issues/242
强烈建议使用In.js 在seajs.use之前把需要的JS库加载进来,使用In.js主要有两个原因
不建议使用库中自带的。Require模块进行加载 在模块中使用(do,labjs, in)进行加载,原因:
https://github.com/seajs/seajs/issues/993
前文已经演示过,使用 pm-chaos-build 进行打包的过程,详细请看:
https://github.com/senchalabs/jsduck
这是一个可以把你的代码翻译成.Extjs 文档的好工具,但是前提要按照规则写代码。代码规则
http://llying.iteye.com/blog/258605
来自: http://cxc3214.blog.163.com/blog/static/23812806201310145015273/