马轩

个人主页

欢迎来到我的个人站~


Commonjs

Common.js 的工作原理

common.js本身是node中的模块管理方式,但是浏览器本身不支持commonjs。

一、原理

common.js无法在浏览器运行的原因是因为浏览器中缺少require,exports,module,global这几个node中的全局环境变量。

只要拥有了这几个变量,在浏览器中依然可以使用该管理方式。

demo

var module = {
	exports:{}
};
(function(module,module.exports){
	exports.mutlply = function(n){return n*1000}
})(module,module.exports)
var f = module.exports.mutiply
f(10) // 10000

上述代码通过一个立即执行函数将一个模块放到exports中去(注意是同步的放置进去)。

二、Browserify 的实现

Browserify是目前最为流行的commonjs的格式转换库,目的就是能够让前端能够像node后端一样去实现require加载模块。

Browerify 加工之后的结果就是,它将所有的模块放置在一个list中,然后该list中的每一项都是一个模块,代码直接放在该项中。

$ browser-unpack < compiled.js

[
  {
    "id":1,
    "source":"module.exports = function(x) {\n  console.log(x);\n};",
    "deps":{}
  },
  {
    "id":2,
    "source":"var foo = require(\"./foo\");\nfoo(\"Hi\");",
    "deps":{"./foo":1},
    "entry":true
  }
]

(over)

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦