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环境下工作的。