白话:就像Jquery的$, 把你打包后的函数挂在window下你指定的名字下
废话:白话看不懂,就看下面的废话,你不得不花更多时间理解
--standalone AAA的含义
$ browserify foo.js --standalone AAA > bundle.js
This command will export the contents of foo.js under the external module name AAA. If a module system is detected in the host environment, it will be used. Otherwise a window global named AAA will be exported.
当在主机上检测到module system时,直接使用module system。没有检测到module system时,使用window global named AAA
在浏览器中时,window.AAA下挂的是你的module.exports
而在node环境下,AAA不起作用
看下面的代码
if (typeof exports === "object" && typeof module !== "undefined") { module.exports = f() } else if (typeof define === "function" && define.amd) { define([], f) } else { var g; if (typeof window !== "undefined") { g = window } else if (typeof global !== "undefined") { g = global } else if (typeof self !== "undefined") { g = self } else { g = this } g.AAA = f() }
所以说standalone其实是一种模式。这么重要的功能设计成一个不起眼的选项,
名字还这么长,这么怪。可以说设计的缺点。
顺便聊下bare的含义
--bare
假设在程序中用了Buffer(Buffer在nodejs中是一个内建的类)的是时候。browserify遇到Buffer,会在bundle中添加Buffer类的前端实现。然而,--bare会阻止它添加Buffer类。这样,Buffer在node中是什么就是什么,程序是原汁原味的,原来是什么,现在还是什么,这也是为什么叫bare的原因。
时间: 2024-10-12 19:20:42