我正在使用grunt-browserify並特別遇到兩個問題。使用以下配置選項成功啓動並運行任務。變量jsFilesToConcat
代表Backbone.js + Marionette.js應用程序的所有JavaScript文件,主應用程序定義,前端實用程序資產(例如Bootstrap插件)以及與項目相關的所有JS。這是錯誤的方法?這個想法是一次加載整個250k JS應用程序(以及它的所有依賴項)。Backbone.Marionette - Grunt Browserify - 「require is not defined」
我想提供的聲明,這對我來說是一個新的領域,所以我覺得我的預期使用情況下可與已經可用插件的選項,但我的兩個錯誤很困惑:
1 )Backbone not defined
- 這意味着腳本實際上正在加載,但是,當我在Chrome Dev Tools中檢查調用堆棧時,它只顯示匿名自調用函數。所以我不清楚如何將Backbone對象傳遞給Marionette,以便在加載時進行擴展。
2)require is not defined
- 我聲明的線路錯誤var SampleApp = require('SampleApp')
。我需要在我的grunt配置中做些特別的事情,或者需要在node.js server.js配置文件中公開require
函數?
3)javascript本身是異步執行的,這是我不能正確處理的browserify預期行爲的一部分嗎?我認爲,因爲我在全局包裝中包裝了很多JS實用程序來保護名稱空間,這就是某些函數不可用的原因,但我不清楚爲什麼會影響require
。
// uses grunt-browserify task
browserify: {
developmentJs: {
options: {
debug: true,
alias: ["./js/app.dev.js:SampleApp"],
},
src: [
'<%= pkg.jsFilesToConcat %>'
],
dest: 'public-dev/js/app.dev.js'
}
}
,然後在我的單頁木偶應用的index.html
,我有。
(function ($) {
$(document).ready(function() {
var sampleApp = require('SampleApp');
console.log(SampleApp);
});
})(jQuery);
在配置中有一個別名應該使得require()暴露AFAIK。你看看生成的'public-dev/js/app.dev.js'文件嗎?另外,爲了確保你在index.html中正確包含了public-dev/js/app.dev.js? –
@AmitayDobo我認爲是一樣的,但我遇到了同樣的問題,需要不被全局定義 – pixshatterer