我已將我的第三方庫從我的應用程序代碼中分離出來,並將它們一起分組到vendor.js
文件中以供requirejs使用。在我的build.js
文件中,我使用modules
語法優化我的主應用程序,排除供應商腳本,並優化vendor.js
文件。我遇到的唯一問題是當我編譯的main
模塊請求vendor
時,它從配置文件中獲取baseUrl
,因此不加載優化的vendor.js
文件。我build.js
文件看起來像這樣:RequireJS baseUrl和多個優化文件
({
baseUrl: "js",
dir: "build",
mainConfigFile: "js/main.js",
removeCombined: true,
findNestedDependencies: true,
skipDirOptimize: true,
inlineText: true,
useStrict: true,
wrap: true,
keepBuildDir: false,
optimize: "uglify2",
modules: [
{
name: "vendor"
},
{
name: "main",
exclude: ["vendor"]
}
]
})
而且我main.js
文件看起來像這樣:
requirejs.config({
baseUrl: "js",
paths: {
jquery: 'vendor/jquery/jquery-2.1.3.min',
bootstrap: 'vendor/bootstrap/bootstrap.min',
handlebars: 'vendor/handlebars/handlebars-v2.0.0',
backbone: 'vendor/backbone/backbone-min',
underscore: 'vendor/lodash/lodash.underscore',
marionette: 'vendor/marionette/backbone.marionette.min',
models: 'common/models',
collections: 'common/collections'
}
});
define(['module', 'vendor'], function(module) {
var configPath = "config/config." + module.config().env;
require([configPath, 'app', 'jquery'], function(config, Application, $) {
$(function() {
// Kick off the app
Application.start(config);
});
});
});
所有開發在js
文件夾中完成的,而我的build.js
文件是文件夾之外。優化後的文件最終在build
,兄弟姐妹到js
,但是當我包括我的主要文件是這樣的:
<script data-main="build/main" src="js/vendor/require/require.max.js"></script>
它結束了裝載js/vendor.js
爲define()
電話。我在這裏錯過了什麼?我如何才能告訴優化的main
文件來加載build/vendor.js
而不允許尚未加載的優化版本js/vendor.js
?