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これはあなたが求めているものとは少し異なりますが、これらの変数がアプリのオブジェクトを汚染することを実際に望んでいるとは思いません。定型文を減らしたいだけです。

これらの変数をグローバル スコープの他のコードで使用できるようにする場合は、varlibraries.js からステートメントを削除して (globals.jsその場合は名前を付けてください)、windowオブジェクトに表示されます。

于 2016-01-08T17:40:23.350 に答える