我有一个使用Backbone和Marionette构建的相对较大的应用程序。这意味着在每个文件的顶部我都有:
var _ = require('underscore');
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
var Marionette = require('backbone.marionette');
我知道Browserify的部分想法是没有全局变量,但这似乎是很多不必要的样板。我想要的是让jQuery,Backbone,Underscore和Marionette像往常一样加载一个全局变量,只是假设它们可用。有没有办法在browserify中执行此操作?
答案 0 :(得分:-1)
我的首选方案是利用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
)并且它们会出现在window
对象。