Browserify不会将module.exports转换为窗口属性?
目前我对浏览器的使用情况感到非常困惑。 我一直以来都觉得需要一个npm
模块,并使其在浏览器中npm
。 但是,如果我采用标准的npm
模块,通过browserify运行它,并将其包含在网页中,我发现该模块是完全无法访问的。
节点模块:
console.log('wtf'); function SayHi() { return 'hello world'; } module.exports = SayHi;
通过browserify运行它:
browserify test.js > browserify_test.js
现在,当我把它包含在一个简单的网页,并打开JS控制台,我看到:
"wtf"
但是无法访问该模块:
> SayHi ReferenceError: SayHi is not defined
为了访问我的模块,我需要添加一些样板代码到我的npm
模块:
... (previous test.js code)... if (typeof window === 'object') { window.SayHi = SayHi; }
现在,通过browserify并加载页面后,我有权访问我的模块:
"wtf" > SayHi function SayHi() > SayHi() "hello world"
我认为browserify的重点是让您的模块在浏览器中可用。 不要只在沙箱中运行它们,也不要让它进入模块本身。 在我添加所有模块之前,我想最好在这里问一下,以确保我不缺less一些基本的东西。
我也不明白这是如何在AMD环境下工作的。