我有一个使用 Backbone 和 Marionette 构建的相对较大的应用程序。这意味着在每个文件的顶部我都有类似的内容:
var _ = require('underscore');
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
var Marionette = require('backbone.marionette');
我知道 Browserify 的部分想法是没有全局变量,但这看起来像是很多不必要的样板文件。我想要的是让 jQuery、Backbone、Underscore 和 Marionette 像往常一样加载全局变量,并假设它们在任何地方都可用。有没有办法在 browserify 中做到这一点?
最佳答案
我的首选方案是利用 ES6 (ECMAScript 2015) 特性并制作一个名为 libraries.js
的文件:
var _ = require('underscore');
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
var Marionette = require('backbone.marionette');
module.exports = { _, $, Backbone, Marionette };
...然后在您的其他文件的顶部,您可以使用:
// libraries.js should be in /node_modules/, or use ... = require('/path/to/libraries.js');
// This requires ES6 (ECMAScript 2015)
const { _, $, Backbone, Marionette } = require('libraries');
这与您的要求略有不同,但我认为您实际上并不想让这些变量污染您应用的 global
对象。您只想减少样板文件。
如果您希望这些变量可用于全局范围内的其他代码,您可以从 libraries.js 中删除 var
语句(可以将其命名为 globals.js
case) 并且它们会出现在 window
对象上。
关于javascript - 在 Browserify 中制作 jQuery、Backbone 等全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581680/