博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

坑人的 Javascript 模块化编程 sea.js

Posted on 2015-06-12 12:12  SmarTom  阅读(229)  评论(0)    收藏  举报

坑人的 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 函数在调用时,会始终传入三个参数: requireexports 和 module, 这三个参数在所有模块代码里可用。

define(function(require, exports, module) {

  // The module code goes here
  
});