// 定义模块math.js var basicNum = 0; function add(a, b) { return a + b; } module.exports = { //在这里写上须要向外暴露的函数、变量 add: add, basicNum: basicNum } // 引用自定义的模块时,参数包含路径,可省略.js var math = require(‘./math’); math.add(2, 5); // 引用核心模块时,不须要带路径 var http = require(‘http’); http.createService(…).listen(3000);
/** 网页中引入require.js及main.js **/ /** main.js 入口文件/主模块 **/ // 首先用config()指定各模块路径和引用名 require.config({ baseUrl: “js/lib”, paths: { “jquery”: “jquery.min”, //实际路径为js/lib/jquery.min.js “underscore”: “underscore.min”, } }); // 执行基本操做 require([“jquery”,”underscore”],function($,_){ // some code here }); 引用模块的时候,咱们将模块名放在[]中做为reqiure()的第一参数;若是咱们定义的模块自己也依赖其余模块,那就须要将它们放在[]中做为define()的第一参数。 // 定义math.js模块 define(function () { var basicNum = 0; var add = function (x, y) { return x + y; }; return { add: add, basicNum :basicNum }; }); // 定义一个依赖underscore.js的模块 define([‘underscore’],function(_){ var classify = function(list){ _.countBy(list,function(num){ return num > 30 ? ‘old’ : ‘young’; }) }; return { classify :classify }; }) // 引用模块,将模块放在[]内 require([‘jquery’, ‘math’],function($, math){ var sum = math.add(10,20); $(“#sum”).html(sum); });
define([“a”, “b”, “c”, “d”, “e”, “f”], function(a, b, c, d, e, f) { // 等于在最前面声明并初始化了要用到的全部模块 if (false) { // 即使没用到某个模块 b,但 b 仍是提早执行了 b.foo() } }); CMD是另外一种js模块化方案,它与AMD很相似,不一样点在于:AMD 推崇依赖前置、提早执行,CMD推崇依赖就近、延迟执行。此规范实际上是在sea.js推广过程当中产生的。 /** AMD写法 **/ define([“a”, “b”, “c”, “d”, “e”, “f”], function(a, b, c, d, e, f) { // 等于在最前面声明并初始化了要用到的全部模块 a.doSomething(); if (false) { // 即使没用到某个模块 b,但 b 仍是提早执行了 b.doSomething() } }); /** CMD写法 **/ define(function(require, exports, module) { var a = require(‘./a’); //在须要时申明 a.doSomething(); if (false) { var b = require(‘./b’); b.doSomething(); } }); /** sea.js **/ // 定义模块 math.js define(function(require, exports, module) { var $ = require(‘jquery.js’); var add = function(a,b){ return a+b; } exports.add = add; }); // 加载模块 seajs.use([‘math.js’], function(math){ var sum = math.add(1+2); });
/** 定义模块 math.js **/ var basicNum = 0; var add = function (a, b) { return a + b; }; export { basicNum, add }; /** 引用模块 **/ import { basicNum, add } from ‘./math’; function test(ele) { ele.textContent = add(99 + basicNum); }
/** export default **/ //定义输出 export default { basicNum, add }; //引入 import math from ‘./math’; function test(ele) { ele.textContent = math.add(99 + math.basicNum); }