当采用模块化javascript方法进行开发时,使用Node.JS + npm和browserify捆绑到浏览器,如何处理可能需要使用未在npm中分发的javascript库的情况?最终这些库甚至不兼容模块化(amd / commonJs),因为它们不会以模块化方式暴露任何东西。其中一些存在于凉亭中,我知道对于那些情况,有一些资源,例如browserify变换debowerify,但如果目标库本身不像模块那样,它将不会有任何帮助。
所以,我也想弄清楚的是:一旦你通过node.js + npm模块走了模块化javascript的道路,它是否会影响到任何库的使用& #39;不是模块兼容的吗?
让我举一个具体的例子:
我有app和main.js入口点(安装了npm包knockout),代码如下:
var ko = require(' knockout');
我知道当这个ko变量通过browserify访问浏览器时,它不依赖于全局范围,而是有自己的范围,基本上捕获由npm加载的淘汰文件/模块中定义的所有内容。
然后我有一个不是节点模块的第三方库,通过使用knockout来提供dom操作。我必须提供第三方库的先决条件作为在我的html文件上引用敲除的附加显式<script>
标记,这样将它挂钩到全局(窗口)范围。然后我会在两个地方进行淘汰赛,但彼此隔离。例如,我的main.js中的ko.applyBindings对于依赖于全局范围的淘汰的其他库来说是未知的。
如何(如果可能的话)我的模块化JavaScript实现如何处理这两方面的dom操作的共存?或者对于这种情况,是否必须采用互斥的编程模式(所有模块或所有非模块)?
答案 0 :(得分:1)