javascript - 将 Browserify 与 JavaScript 库(例如 Backbone 或 Underscore)一起使用?

标签 javascript backbone.js underscore.js browserify

我知道我可以使用 npm 安装下划线,但这不是我在工作环境中可以做的事情。我需要能够下载 Underscore.js 库,然后使其“浏览器兼容”。

所以我们假设 Underscore.js 看起来像这样:

(function() {
    var root = this;

    // Rest of the code

}.call(this));

我将该文件下载到硬盘上并将其另存为 under.js。

我的需要下划线的文件如下所示:

var underscore = require("./under");
console.log(underscore);

然后我从 cli 运行 browserify

我有一个名为 test.html 的 HTML 页面,基本上它所做的就是加载生成的 bundle.js

但是,console.log(underscore) 行失败 - 表示 underscore未定义

我尝试了什么?

显然,我将 module.exports 添加到第一行 - 就在 under.js 中的函数定义之前,这就是我收到上述错误的原因。我也尝试了this answer中的方法,仍然遇到同样的错误。

那么,在不使用 npm 安装的模块的情况下,如何使用 Browserify 加载 Underscore.js 或 Backbone 等库?

最佳答案

这是因为 browserify 不会将变量添加到全局范围。您下载的版本与您通过 NPM 安装的版本相同。

您需要将其显式附加到窗 Eloquent 能将其导出到顶级范围。

如果您创建一个名为“expose_underscore.js”的文件并将其放入其中:

var _ = require('./under');
window._ = _;

会做,然后是:browserify expose_underscore.js > bundle.js然后添加bundle.js作为<script>标记您将能够在控制台中执行以下操作:

it does work

但是,如果您使用 browserify,则不应执行此操作。它(以及 Node 的 commonJS 版本)背后的要点是,您在需要它的任何地方都明确需要它。因此,您拥有的每个需要下划线的文件都应该将其导入到局部变量中。

别担心——您仍然只会加载一份副本。

关于javascript - 将 Browserify 与 JavaScript 库(例如 Backbone 或 Underscore)一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26363193/

相关文章:

javascript - Backbone.js 未捕获类型错误 : Object [object Array] has no method 'on'

javascript - 如何将数组渲染为特定形式以供 mustache 渲染

javascript - 使用 WebRTC 在浏览器之间传输 JSON

javascript - Emberjs linkTo 助手不加载模型

javascript - 表格 - 隐藏一个元素,显示另一个元素

javascript - 从一个 View 触发事件到另一个 View

javascript - 如何隐藏所有小于特定像素的文本并在以后使用 Javascript 将它们恢复?

Javascript - BackboneJS - Backbone.sync 覆盖 - YDN - 异步错误

javascript - 通过使用点添加值将数组更改为对象(大写)

javascript - 通过它的 id 从数组中删除一个对象( Angular )