pangguoqing / rsjs

A Module Loader for the Web

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

前端模块加载器

##示例 https://github.com/pangguoqing/rs-examples/tree/master

##原理 参看https://github.com/pangguoqing/rsjs/wiki

##配置 如果请求的是跨域资源(比如从cdn服务器请求资源),那么需要在静态服务器上进行一定的配置。详情,请参见wiki。 在http header中添加 Access-Control-Allow-Origin:* 在静态域名根目录下添加 crossdomain.xml

注:这个配置并不是必须的,打包工具生成的目标文件,可以直接通过script标签引用。

##大概了解 1.更加贴合nodejs中模块的编写方式,无需define包裹。

2.任何后缀的文本文件都可以被认为是一个模块。可以是.js,.json,.css,.text等,如果没有后缀,默认为.js。

3.api更简单,去除了define,调整了入口函数。

4.所有模块都可以被打包在一个文件里面。(官方提供了专门的grunt脚本)

5.兼容seajs定义的模块(并不推荐在rsjs里使用seajs定义的模块,考虑到seajs用户众多,方便大家调试)。

##API参考 ###rsjs.config 用来对rsjs进行配置

rsjs.config({
  // 别名配置
  alias: {
    'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe',
    'json': 'gallery/json/1.0.2/json',
    'jquery': 'jquery/jquery/1.10.1/jquery'
  },
  // 路径配置
  paths: {
    'gallery': 'https://a.alipayobjects.com/gallery'
  },
  // 变量配置
  vars: {
    'locale': 'zh-cn'
  },
  // 映射配置
  map: [
    ['http://example.com/js/app/', 'http://localhost/js/app/']
  ],
  // Sea.js 的基础路径
  base: 'http://example.com/path/to/base/'
});

###rsjs.main rsjs的入口

// 加载一个模块
rsjs.main('./a');
// 加载一个模块,在加载完成时,执行回调
rsjs.main('./a', function(a) {
  a.doSomething();
});
// 加载多个模块,在加载完成时,执行回调
rsjs.main(['./a', './b'], function(a, b) {
  a.doSomething();
  b.doSomething();
});

###require require 用来获取指定模块的接口。

  // 获取模块 a 的接口
  var a = require('./a');
  // 调用模块 a 的方法
  a.doSomething();

###require.async 用来在模块内部异步加载一个或多个模块。

  // 异步加载一个模块,在加载完成时,执行回调
  require.async('./b', function(b) {
    b.doSomething();
  });
  // 异步加载多个模块,在加载完成时,执行回调
  require.async(['./c', './d'], function(c, d) {
    c.doSomething();
    d.doSomething();
  });

###exports 用来在模块内部对外提供接口。

  // 对外提供 foo 属性
  exports.foo = 'bar';
  // 对外提供 doSomething 方法
  exports.doSomething = function() {};

###module.exports 与 exports 类似,用来在模块内部对外提供接口。

// 对外提供接口
  module.exports = {
    name: 'a',
    doSomething: function() {};
  };

About

A Module Loader for the Web

License:MIT License


Languages

Language:JavaScript 96.4%Language:ActionScript 2.2%Language:HTML 0.5%Language:CSS 0.4%Language:Batchfile 0.4%