什么是 seaJS ?
和requireJS相似的,seaJS 也是用JavaScript编写的JS框架,主要功能是可以按不同的先后依赖关系对 JavaScript 等文件的进行加载工作,可简单理解为JS文件的加载器,它非常适合在浏览器中使用,它可以确保所依赖的JS文件加载完成之后再加载当前的JS文件,这在大量使用JS文件的项目中可确保各个JS文件的先后加载顺序,确保避免了以前因某些原因某个文件加载慢而导致其它加载快的文件需要依赖其某些功能而出现某函数或某变量找不到的问题,这点非常有用,也是 seaJS (遵守CMD) 的主要价值所在吧;但和 requireJS (遵守AMD规范)有所区别。
快速简要知识点: 1、seajs.config({...}); //用来对 Sea.js 进行配置。 2、seajs.use(['a','b'],function(a,b){...}); //用来在页面中加载一个或多个模块。 3、define(function(require, exports, module){...}); //用来定义模块。Sea.js 推崇一个模块一个文件,遵循统一的写法: 4、require(function(require){var a = require("xModule"); ... }); //require 用来获取指定模块的接口。 5、require.async, //用来在模块内部异步加载一个或多个模块。 例如: define(function(require){ require.async(['aModule','bModule'],function(a,b){ // 异步加载多个模块,在加载完成时,执行回调 a.func(); b.func(); }) }); 6、exports, //用来在模块内部对外提供接口。 例如: define(function(require, exports){ exports.varName01 = 'varValue'; // 对外提供 varName01 属性 exports.funName01 = function(p1,p2){ // 对外提供 funName01 方法 .... } }); 7、module.exports, 与 exports 类似,用来在模块内部对外提供接口。例如: define(function(require, exports, module) { module.exports = { // 对外提供接口 name: 'a', doSomething: function() {...}; }; }); 以上 7 个接口是最常用的,要牢记于心。 好了,简要介绍就到这。下面看一个实际例子: 这个例子的设计要求是 hellowMain.js 文件依赖 hellow.js, jQuery作为备用加载到项目中,只有等依赖文件加载完了,才进行业务的JS代码初始化工作; 首先看例子文件目录结构: //file of folder structure //----------------------------------------------------- //seaJS对项目的目录一般格式如下,如userExample01下的结构 userExample01 |-----sea-modules | |--sea.js 等框架JS文件 |-----app | |----*.html 页面html文件 |-----static | |---hellow | |---*.js/*.css //----------------------------------------------------- (责任编辑:yang) |