7

{これはTwitterとは何の関係もありません}

ちょっとおもしろい質問です。おそらくばかげていて、笑うことができるという点でおもしろいですが、少なくともこのひどいかゆみに対する答えはあります。

現在使用しています

var Bootstrap = require('library/Bootstrap');
Bootstrap.run();

Bootstrap index.jsでこのようなことができれば、本当に素晴らしいと思います。

module.exports.Bootstrap = My_Bootstrap;

そしてそれをこのようにウィリーニリーと呼んでください

require('library/Bootstrap');
Bootstrap.run();

私のスペースに別の変数を宣言する必要なしに、これを行う方法はありますか、それとも私は不思議に思ったり、夢を見たり、迷子になったり、戻ってきたり、時間を無駄にしたりする画面を見つめていますか?

編集 だから、これは私が最後にしたことです:

単一のグローバルオブジェクトを作成し、それにアクセスしてインスタンス化できるように重要なモジュールのみを追加しています。これは驚くべき答えと解決策であり、本当に便利であることが判明しました

4

3 に答える 3

7

globalオブジェクトを変更するだけです。これは、ブラウザのウィンドウオブジェクトに似ています。したがって、次のようにモジュールのラッパーを作成できます。

global.Bootstrap = My_Bootstrap

グローバルオブジェクトはモジュール間で共有されます。Bootstrapそうすれば、どこにいても使用できます。

于 2012-07-16T15:08:55.557 に答える
1

いいえ、変数を宣言する必要があります。requireただし、関数の内部に入り、それで作業を行うことができます。私はBootstrapの内部アーキテクチャにあまり精通していませんが、次のような方法でうまくいくようです。

// put this in some out-of-the-way cubbyhole somewhere
var oldRequire = require;
function require(path) {
    Bootstrap = oldRequire(path);
}

// and this would go in your main file
require("library/Bootstrap");
Bootstrap.run();
于 2012-07-16T15:05:02.000 に答える
1

あなたが言うようにそれをすることはできません、それはグローバルを意味します、それはあなたが望むものではないことはほぼ確実です。

しかし、あなたができることはこれです:

require('your_library').call(this,arg1,arg2);

たとえば、ノードバリデーターライブラリを使用している可能性があります。

あなたはそれを次のように使用することを意図しています:

sanitize = require('validator').sanitize
var str = sanitize('aaaaaaaaab').ltrim('a');

しかし、あなたはそれをすべてスキップして行うことができます

var str = require('validator').sanitize('aaaaaaaaab').ltrim('a')

私が理解している限り、メモリ/速度の観点からもこれを行うことの欠点はありません。

あなたの特定のケースでは、あなたはあなたが少しスキップできることを知っています...

ファイル:MyBootStrap.js

Module.exports = MyBootstrap

ファイル:index.js(またはその他)

require('library/Bootstrap.js')()
于 2013-04-05T21:27:47.983 に答える