[英]Using requirejs and trying to optimize javascript into a vendor file and an app file
我正在使用requirejs進行項目,並且正在嘗試將JavaScript優化為兩個文件:供應商庫和應用程序代碼。 不幸的是,我似乎無法使其正常工作。
資料夾結構:
config.js:
require.config({
baseUrl: '../js/',
paths: {
jquery: '../../bower_components/jquery/dist/jquery',
underscore: '../../bower_components/lodash/dist/lodash',
backbone: '../../bower_components/backbone/backbone',
text: '../../bower_components/requirejs-text/text'
},
enforeceDefine: true
});
define(['backbone', 'main'], function(Backbone, app) {
});
Gruntfile.js:
requirejs: {
options: {
dir: 'dist/js/',
mainConfigFile: 'app/js/config.js',
optimize: 'none',
normalizeDirDefines: 'all',
skipDirOptimize: true
},
dist: {
options: {
modules: [
{
name: 'vendor',
include: ['jquery', 'underscore', 'backbone', 'text'],
},
{
name: 'app',
exclude: ['vendor']
}
]
}
}
});
當我運行grunt
,出現以下錯誤:“錯誤:錯誤:錯誤:模塊路徑不存在:/path/to/project/app/js/app/js/vendor.js對於名為:供應商的模塊。”
為什么它不存在時會尋找“供應商”?
我認為您要優化的源代碼中沒有名為vendor
模塊。 如果這是正確的,那么您得到的錯誤是因為r.js
正在尋找一個名為vendor
的模塊。 您必須告訴它使用create
選項創建它:
modules: [
{
name: 'vendor',
create: true, // <--- Add this option!
include: ['jquery', 'underscore', 'backbone', 'text']
},
{
name: 'app',
exclude: ['vendor']
}
]
如果沒有該選項, r.js
理解為您實際上是在說“采用vendor
模塊並包括jquery
等”。 使用該選項,就告訴它從頭開始創建vendor
。
create
選項記錄在此文件中 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.