let message="Hello CommonJS!"; module.exports.message=message; module.exports.add=(m,n)=>console.log(m+n);
var common=require("./common"); //讀取common.js文件
console.log(common.message); //調用
common.add(100,200);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="js/app.js"></script> </body> </html>
npm install -g browserify
browserify app.js > apps.js
生成apps.js文件html
apps.js文件內容:前端
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ var common=require("./common"); console.log(common.message); common.add(100,200); },{"./common":2}],2:[function(require,module,exports){ let message="Hello CommonJS!"; module.exports.message=message; module.exports.add=(m,n)=>console.log(m+n); },{}]},{},[1]);
index.html引用apps.jsnode
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="js/apps.js"></script> </body> </html>
運行結果:jquery
AMD 是 RequireJS 在推廣過程當中對模塊定義的規範化產出es6
AMD異步加載模塊。它的模塊支持對象 函數 構造器 字符串 JSON等各類類型的模塊。npm
適用AMD規範適用define方法定義模塊。數組
//定義模塊 define(function(){ return{ message:"Hello AMD!", add:function(n1,n2){ return n1+n2; } } })
require(['amd'],function(amd){ console.log(amd.message); console.log(amd.add(100,200)) })
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="AMD/require.js" data-main="AMD/app.js"></script>
</body>
</html>
require(['amd','jquery'],function(amd){
console.log(amd.message);
console.log(amd.add(100,200));
$("body").text("引用了第三方插件")
})
實例:瀏覽器
導入Seajs庫app
去官網下載最新的seajs文件,http://seajs.org/docs/#downloads異步
cmd.js
define(function(require,exports,module){ var obj={ msg:"Hello SeaJS!", show:()=>console.log(obj.msg) } exports.cmd=obj; })
app.js
seajs.config({ //Sea.js 的基礎路徑(修改這個就不是路徑就不是相對於seajs文件了) base: './js/', //別名配置(用變量表示文件,解決路徑層級過深和實現路徑映射) alias: { 'jquery': 'CMD/jquery' }, //路徑配置(用變量表示路徑,解決路徑層級過深的問題) paths: { 'm': 'CMD/' } }) seajs.use(["m/cmd.js",'jquery'],function(cmd,$){ cmd.cmd.show(); $("body").text("Hello CMD!"); })
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="js/sea.js"></script> <script src="js/CMD/app.js"></script> </body> </html>
es6.js
//定義模塊 export let msg="Hello Es6(原生模塊)"; export function add(n,m){ return n+m; }
es6.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="module"> //導入 import {msg,add} from './es6/es6.js'; console.log(add(100,200)); console.log(msg); </script> </body> </html>
UMD(Universal Module Definition)通用的模塊定義、UMD等於CommonJS加上AMD。UMD的工做其實就是作了一個判斷:
CommonJs和AMD風格同樣流行,彷佛缺乏一個統一的規範。因此人們產生了這樣的需求,但願有支持兩種風格的「通用」模式,因而通用模塊規範(UMD)誕生了。
(function (global, factory) { if (typeof define === 'function' && (define.amd || define.cmd)) { // AMD規範. 註冊一個匿名模塊,兼容AMD與CMD define([], factory); } else if (typeof module === 'object' && module.exports) { //CommonJS規範,NodeJS運行環境 module.exports = factory(); } else { //瀏覽器全局對象註冊 global.UMD = factory(); } }(this, function () { var msg = "UMD!"; //返回要導出的對象 return { show: function () { console.log("Hello " + msg); } }; }));
二、在CommonJS規範下運行
useUtils.js
var utils=require('./Utils.js'); utils.show();
運行結果:
在AMD規範下運行
app.js
require(['amd','jquery','../Utils.js'],function(amd,$,u){ console.log(amd.message); console.log(amd.add(100,200)); $("body").text("引用了第三方插件"); u.show(); })
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="require.js" data-main="app.js"></script> </body> </html>
運行結果:
三、在CMD規範下運行
app.js
seajs.use(["cmd.js",'jquery','../Utils.js'],function(cmd,$,u){ cmd.cmd.show(); $("body").text("Hello CMD!"); u.show(); })
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="sea.js"></script> <script src="app.js"></script> </body> </html>
運行結果:
四、原生瀏覽器環境運行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="../Utils.js"></script> <script> UMD.show(); </script> </body> </html>
運行結果: