@Tyson Phalp の提案に基づいて、これは SO questionを意味します。
あなたの質問に合わせて調整し、RequireJS 2.1.2 とSHIM 構成を使用してテストしました。
これはmain.js
ファイルで、requireJS 構成は次の場所にあります。
require.config({
/* The shim config allows us to configure dependencies for
scripts that do not call define() to register a module */
shim: {
underscoreBase: {
exports: '_'
},
underscore: {
deps: ['underscoreBase'],
exports: '_'
}
},
paths: {
underscoreBase: '../lib/underscore-min',
underscore: '../lib/underscoreTplSettings',
}
});
require(['app'],function(app){
app.start();
});
次に、次のunderscoreTplSettings.js
ように templateSettings を使用してファイルを作成する必要があります。
define(['underscoreBase'], function(_) {
_.templateSettings = {
evaluate: /\{\{(.+?)\}\}/g,
interpolate: /\{\{=(.+?)\}\}/g,
escape: /\{\{-(.+?)\}\}/g
};
return _;
});
したがって、モジュールunderscore
にはアンダースコア ライブラリとテンプレート設定が含まれます。
アプリケーション モジュールから、次のようにモジュールを要求するだけですunderscore
。
define(['underscore','otherModule1', 'otherModule2'],
function( _, module1, module2,) {
//Your code in here
}
);
私が持っている唯一の疑いは、同じシンボルを_
2 回エクスポートしていることです。これが良い習慣と見なされるかどうかはわかりません。
=========================
代替ソリューション:
これも問題なく動作し、上記のソリューションのように追加のモジュールを作成して必要としないようにすることで、もう少しクリーンになると思います。初期化関数を使用して、Shim 構成の「エクスポート」を変更しました。さらに理解を深めるには、Shim 構成リファレンスを参照してください。
//shim config in main.js file
shim: {
underscore: {
exports: '_',
init: function () {
this._.templateSettings = {
evaluate:/\{\{(.+?)\}\}/g,
interpolate:/\{\{=(.+?)\}\}/g,
escape:/\{\{-(.+?)\}\}/g
};
return _; //this is what will be actually exported!
}
}
}