javascript节点模块和纯脚本引用如何在浏览器中共存?

当采用模块化JavaScript方法进行开发时,使用Node.JS + npm和browserify捆绑到浏览器,如何处理这种情况,您可能需要使用不是以npm分发的JavaScript库? 最终,这些库甚至不能兼容模块化(amd / commonJs),因为它们不以模块化方式暴露任何东西。 其中一些存在于鲍尔,我明白,对于这些情况下,有资源,如browserify转换debowerify,但如果预期的图书馆本身不像一个模块行为,这将是没有任何帮助。

所以,我也想弄清楚的是:一旦你已经通过node.js + npm模块走了模块化JavaScript的path,是否达不到模块兼容的任何库的使用?

让我举一个具体的例子:

我有一个应用程序(npm包装淘汰赛)的main.js入口点,代码如下:

var ko = require('knockout');

我知道,当这个kovariables通过browserify到达浏览器时,它并没有绑定到全局范围,而是具有自己的范围,基本上包含了由npm加载的敲除文件/模块中定义的所有内容。

然后我有一个不是节点模块的第三方库,通过使用knockout来实现dom操作。 我将不得不提供第三方库的前提条件,作为一个额外的明确的<script>标记,在我的html文件中引用knockout,这样就把它钩到了全局(窗口)范围。 然后我会在两个地方淘汰赛,但是彼此孤立。 例如,我的main.js中的一个ko.applyBindings对于依赖于全局范围的挖空的另一个库是未知的。

如何(如果可能的话)我的模块化JavaScript实现处理这些双方共同的dom操作? 或者对于这种情况,它是一个互斥的编程模式,必须被采用(所有模块或所有非模块)?

那么,两个字:

browserify垫片

希望有人以前回答过。 无论如何,这是非常值得自己发现的。 我已经做了,它的工作。 很好的阅读。

使CommonJS不兼容的文件可以浏览