书写规则

使用 SeaJS 书写模块代码时,需要遵循一些简单规则:

1. 正确拼写

在模块代码中,第一个参数 必须 命名为 require.

// 错误!
define(function(req) {
// ...
}); // 正确!
define(function(require) {
// ...
});

2. 不要修改

不要重命名 require 函数,或在任何作用域中给 require 重新赋值。

// 错误 - 重命名 "require"!
var req = require, mod = req("./mod"); // 错误 - 重定义 "require"!
require = function() {}; // 错误 - 重定义 "require" 为函数参数!
function F(require) {} // 错误 - 在内嵌作用域内重定义了 "require"!
function F() {
var require = function() {};
}

3. 使用直接量

require 的参数值 必须 是字符串直接量。

// 错误!
require(myModule); // 错误!
require("my-" + "module"); // 错误!
require("MY-MODULE".toLowerCase()); // 正确!
require("my-module");

在书写模块代码时,必须遵循这些规则。其实只要把 require 看做是语法关键字就好啦

动态依赖的小提示

偶尔会希望可以使用 require 来进行条件加载:

if (todayIsWeekend)
require("play");
else
require("work");

但请牢记,从静态分析的角度来看,这个模块同时依赖 play 和 work 两个模块,加载器会把这两个模块文件都下载下来。 这种情况下,推荐使用 require.async 来进行条件加载。

~~~seajs会用正则匹配模块定义函数体的内容( Function.prototype.toString() )中的 require(..) , 提取出依赖数组

转: seajs手册与文档之 -- require规则的更多相关文章

  1. 转: seajs手册与文档之 -- 快速参考 ( ~~useful )

    目录 快速参考 seajs.use seajs.config define require require.async exports module.exports 快速参考 该页面列举了 SeaJS ...

  2. 转: seajs手册与文档之 -- 配置选项

    config alias preload debug map base charset timeout noConflict config 可以使用 config 方法来配置seajs. seajs. ...

  3. 转: seajs手册与文档之 -- 模块标识

    目录 模块标识 相对标识 顶级标识 普通路径 文件后缀的提示 模块标识 模块标识是一个字符串,用来标识模块.在 require. require.async 等加载函数中,第一个参数都是模块标识.de ...

  4. 转: seajs手册与文档之--模块定义

    模块定义 define id dependencies factory exports require require.async require.resolve require.load requi ...

  5. Sea.js 手册与文档

    Sea.js 手册与文档 首页 | 索引 目录 何为 CommonJS 何为 CommonJS 模块 为何封装模块 何为 CommonJS? CommonJS 是一个有志于构建 JavaScript ...

  6. Seajs教程 配置文档

    seajs.config Obj alias Obj 别名配置,配置之后可在模块中使用require调用require('jQuery'); seajs.config({ alias:{ 'jquer ...

  7. 【数据库】6.0 MySQL入门学习(六)——MySQL启动与停止、官方手册、文档查询

    1.0 MySQL主要有四种启动方式:直接启动.安全启动.服务启动.多实例启动. 直接启动: 服务器启动: 安全启动(最常用): 多实例启动: 2.0如何获得MySQL帮助 2.1官方手册 下面提供百 ...

  8. Lucene 对文档打分的规则整理记录

    摘引自:http://www.cnblogs.com/forfuture1978/archive/2010/02/08/1666137.html Lucene的搜索结果默认按相关度排序,这个相关度排序 ...

  9. 一些在线开发手册api文档收藏

    java JavaSE8 api:https://docs.oracle.com/javase/8/docs/api/ JavaSE7 api:http://docs.oracle.com/javas ...

随机推荐

  1. gcc 的include path和lib path调整

    `gcc -print-prog-name=cc1plus` -v `g++ -print-prog-name=cc1plus` -v   ------------------------------ ...

  2. openStack core service Components Ins shell scripts and simple provision

    will to be announced,functional testing,tuning,debuging.....,Enthusiastic audience Please to wait pa ...

  3. CSSBox - Java HTML rendering engine

    CSSBox - Java HTML rendering engine CSSBox is an (X)HTML/CSS rendering engine written in pure Java. ...

  4. mysql的函数

  5. 编译器DIY——词法分析

    在上一篇文章中已经介绍了读文件的操作,那么这一篇文章中将会细致解释词法分析. 在源文件里解析出的单词流必须识别为保留字,标识符,常量,操作符和界符五大类 1.显然我们须要列举出全部的保留字,而这里与保 ...

  6. HTML5 RPG游戏示例

    演示地址 点击打开链接

  7. BaseAdapter使listview设置不同背景图片并添加selector

    前段时间为了实现根据item不同的内容实现不同的背景色google了好久只找到了个隔行换色,通过自定义SimpleAdapter终于实现了此功能,但是定义了selector并没有触发点击效果.今天重新 ...

  8. xcode UIView常用方法属性动画

    常见属性: @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 @property(nonatomic,readonly,copy) ...

  9. nginx 使用安装问题及解决方案

    如何安装清参考:http://www.runoob.com/linux/nginx-install-setup.html 可以先不用配置,等理解后在配置. 在启动nginx时,出现提示: nginx: ...

  10. 关于MATLAB中any和all的个人理解

    any: any=1,有一个元素是1,即可: any=0,全部元素为0,即可. all: all=1,全部元素是1,即可: all=0,有一个元素是0,即可. ALL True if all elem ...