// 定義模塊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); }