坑人的 Javascript 模块化编程 sea.js
忧伤 加 蛋疼的 开始了 看文档
Sea.js 进行配置
seajs.config({ // 设置路径,方便跨目录调用 paths: { 'arale': 'https://a.alipayobjects.com/arale', //这特么是不是调用标识呀 通过alias 别名来进行调用 狗日的说清楚呀 'jquery': 'https://a.alipayobjects.com/jquery' }, // 设置别名,方便调用 alias: { 'class': 'arale/class/1.0.0/class', 'jquery': 'jquery/jquery/1.10.1/jquery' } });
// 加载一个模块 我屮艸芔茻 ,a 是哪个 哪个是a模块 你妹滴说清楚呀 seajs.use('./a'); // 加载一个模块,在加载完成时,执行回调 seajs.use('./a', function(a) { a.doSomething(); }); // 加载多个模块,在加载完成时,执行回调 seajs.use(['./a', './b'], function(a, b) { a.doSomething(); b.doSomething(); });
// 所有模块都通过 define 来定义 define(function(require, exports, module) { // 通过 require 引入依赖 var $ = require('jquery'); var Spinning = require('./spinning'); // 通过 exports 对外提供接口 exports.doSomething = ... // 或者通过 module.exports 提供整个接口 module.exports = ... });
另一种
define("js/main", ["jquery", "nivoslider", "css/nivo-slider.css", "css/default/default.css"], function (require) { //[] 这他娘滴是啥 var $ = require("jquery"), nav = require("./nav"), slider = require("./slider"); nav.render($(".nav:first")); slider.render(); }), define("js/data", { navList: [ { name: "案例展示", link: "gallery" }, { name: "服务条款", link: "service" }, { name: "联系我们", link: "contact" } ] }), //怎么还用上了json 我操
好了好了官方文档来了
define(id?, dependencies?, factory);
id
当前模块的唯一标识。该参数可选。如果没有指定,默认为模块所在文件的访问路径。如果指定的话, 必须是顶级或绝对标识(不能是相对标识)。
dependencies
当前模块所依赖的模块,是一个由模块标识组成的数组。该参数可选。如果没有指定,模块加载器会从factory.toString()
中解析出该数组。
** 注意:强烈推荐不要设定 id
和 dependencies
参数。 在开发阶段,模块加载器会自动获取这两个参数。部署上线时,则可以通过优化工具来提取这两个参数。
factory
模块的工厂函数。模块初始化时,会调用且仅调用一次该工厂函数。factory
可以是函数, 也可以是对象、字符串等任意值,这时 module.exports
会直接设置为 factory
值。
factory
函数在调用时,会始终传入三个参数: require
、exports
和 module
, 这三个参数在所有模块代码里可用。
define(function(require, exports, module) { // The module code goes here });