3

我有一个使用 Backbone 和 Marionette 构建的相对较大的应用程序。这意味着在每个文件的顶部我都有类似的内容:

var _ = require('underscore');
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
var Marionette = require('backbone.marionette');

我知道 Browserify 的部分想法是没有全局变量,但这似乎是很多不必要的样板文件。我想要的是让 jQuery、Backbone、Underscore 和 Marionette 像往常一样加载全局变量,并假设它们在任何地方都可用。有没有办法在browserify中做到这一点?

4

1 回答 1

-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您的应用程序的对象。你只是想减少样板。

如果您希望这些变量可用于全局范围内的其他代码,您可以var从 libraries.js 中删除语句(在这种情况下可能会命名它globals.js)并且它们会出现在window对象上。

于 2016-01-08T17:40:23.350 回答