1

browersify-shim用来将 jquery、bootstrap 和我的自定义 js 文件捆绑到一个最终包中。

我的自定义 js 文件对 没有任何依赖关系jQuery,但bootstrap确实如此。

我有以下package.json

"browser" : {
    "jquery": "path/to/jquery",
    "bootstrap": "path/to/bootstrap"
},
"browserify": {
    "transform": [ "browserify-shim" ]
},
"browserify-shim": {
    "jquery": "$",
    "bootstrap": {"depends" : "jquery:jQuery"}
},

现在在我的脚本文件中,我必须执行以下操作:

require('jquery');
require('bootstrap');

package.json在中添加别名到“jquery”和做之间有区别吗var window.$ = require('jquery');

在某些地方,我看到人们同时在做上述两个,难道只有一个就足够了吗?

其次,即使我的自定义 js 文件都不依赖于它,为什么我需要同时显式地require定义jQuery和。bootstrap有没有办法告诉browserify-shim把所有的东西都捆绑在package.json里面,反正我是在告诉那里的所有依赖项和别名。为什么要重复要求我的脚本文件中的每个模块。

4

1 回答 1

1

第一个问题:

在 package.json 中为“jquery”添加别名与 var window.$ = require('jquery'); 之间有区别吗?

人们这样做的原因是他们需要 jQuery 出现他们的 bundle.js 之外。例如,您可能$(document).ready()在 index.html 中直接有一个处理程序,在这种情况下,您需要在window对象上使用 jQuery。如果您没有任何外部的 jQuery 代码,bundle.js那么这不是必需的,您可以var $ = require('jquery');根据需要在bundle.js.

您的第二个问题使我认为上述情况可能是这种情况。答案是你绝对可以在你的bundle.js.

一个好的解决方案是通过<script></script>标签以通常的方式将它们简单地添加到您的捆绑包之外。然后,如果您在捆绑包中需要它们,则可以将它们作为全局要求,这样如果您在其中引用它们,bundle.js它们就不会被加载两次。

于 2016-02-02T13:15:33.000 回答