【问题标题】:browserify-shim difference between alias and varName = require("module")别名和 varName = require("module") 之间的 browserify-shim 区别
【发布时间】:2016-02-02 05:18:25
【问题描述】:

我正在使用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'); 中添加别名有区别吗

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

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

【问题讨论】:

    标签: javascript jquery twitter-bootstrap browserify browserify-shim


    【解决方案1】:

    第一个问题:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多