我的應用程序將消息的對象以給定的語言加載到應用程序中。我的結構,像這樣:Browserify動態單獨的包
/lang
/en.js (100 kb file)
/ru.js (100 kb file)
/... many more
app.js (this is `MyApp` as below)
語言文件是非常大的,所以我想創建單獨的包,然後你只包括你需要<script src="lang/en.js"></script>
的文件。該語言也可以隨時在應用程序中「切換」。
我該如何告訴browserify爲所有語言文件構建主應用程序和單獨的捆綁包,並仍允許MyApp
至require
這些語言文件?
function MyApp(lang) {
this.messages = {};
this.switchLang(lang);
};
MyApp.prototype.loadLang = function(lang) {
this.messages = require('./lang/' + lang + '.js');
};
MyApp.prototype.switchLang = function(lang) {
this.lang = lang;
this.loadLang(lang);
};
MyApp.prototype.sayHello = function() {
alert(this.messages.HELLO);
};
module.exports = MyApp;
謝謝你的幫助!當運行'browserify -x ./lang/en.js ....'時不會添加對其他語言文件的引用,所以當'MyApp.js'試圖要求它們時,它不知道它們在哪裏。我認爲這是因爲lang文件在'loadLang'中被動態地'required',所以browserify不會選擇它們。我已經通過添加一個函數來調用這個函數,所有的lang文件都需要像'require('./lang/en.js')'和'require('./lang/ru.js')'這樣可行。似乎有點哈克,但?也得到一些奇怪的Windows路徑問題。 –
'不會添加對其他語言文件的引用,所以當MyApp.js試圖要求它們時,它不知道它們在哪裏。'是的,你只需要語言文件,當它們被包含在你的HTML頁面中'MyApp.js'之前。我將編輯我的答案以獲得其他更好的解決方案... – marcel