javascript - browserify-shim 别名和 varName 之间的区别 = require ("module")

标签 javascript jquery twitter-bootstrap browserify browserify-shim

我正在使用 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');之间有区别吗? p>

在某些地方,我看到人们同时执行上述两项操作,难道只执行一项就足够了吗?

其次,为什么我需要显式地require同时使用jQuerybootstrap,即使我的自定义js文件都不依赖于它。有没有办法告诉 browserify-shim 将所有内容捆绑在 package.json 中,无论如何我都会告诉那里的所有依赖项和别名。为什么要重复工作来要求我的脚本文件中的每个模块。

最佳答案

第一个问题:

Is there a difference between adding an alias to "jquery" in package.json, vs doing var window.$ = require('jquery');

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

你的第二个问题让我认为上述情况可能是这样。答案是你绝对可以在 bundle.js 之外加载 Bootstrap 和 jQuery 。

这里一个好的解决方案是简单地将它们以通常的方式添加到您的 bundle 之外,通过 <script></script>标签。然后,如果您的 bundle 中需要它们,您可以 require them as a global因此,如果您在 bundle.js 中引用它们它们不会被加载两次。

关于javascript - browserify-shim 别名和 varName 之间的区别 = require ("module"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35145590/

相关文章:

javascript - 用户输入的 If 语句放置(带有 code.gs、page.html、page-css.html、page-js.html 的谷歌应用程序脚本)

javascript - anchor 标记内的 div onclick

javascript - 此代码工作正常如果 ($(this).val() == "Spine") 但不是 ($(this).val() == "Spine"| |"Brian")

jquery - 使用 jQuery 保留切换状态

css - 我们如何更改 Bootstrap 弹出窗口中箭头的颜色?

javascript - 有没有一种 jQuery 方法可以使 <div> 出现在表格单元格的左下方,而不会破坏响应能力?

javascript - 在网络应用程序中缓存所有脚本

html - 根据屏幕宽度调整导航栏最小高度

html - bootstrap grid - form-control 占据了父 div 的整个宽度,如何在它旁边插入一些东西?

javascript - 如何判断jquery调用json是否没有返回数据