起因:有個md5.js文件,用來給字符串md5加密,一般要把一個js文件引入vue的script部分,通過export和import的模塊化方法進行,如果是在入口文件import的話,全部都可以用這個js文件,但是這個md5并不是通過export的方式導出,讓我很是疑惑.
解決:這個js文件有個關鍵的代碼段如下圖:
md5.js模塊化代碼
這是一段AMD規范的代碼,經查require.js和amd規范發現:define(function(){})和require()是AMD規范定義模塊的方式,同樣的,es6用export和import處理,commonjs用module.exports和require來處理。
AMD/es6/commonJS規范:AMD commonJS ES6 es6? ? ??monjs cmd amd? 總結的很好
2,md5.js的寫法用了一個IIFE的技巧,所有的方法封裝到一個IIFE里面,這樣可以達到不暴露私有成員的目的,又能模塊化使用里面的成員方法。IIFE只需要把要暴露出的方法return出來就可以。里面的變量外部無法訪問。這也是模塊化編程的基本寫法。
var module1 = (function(){
var _count = 0;
var m1 = function(){
};
var m2 = function(){
//...Javascript模塊化編程(二):commonJS和AMD規范
};
return {
m1 : m1,
m2 : m2
};
})();