我用RequireJS 2.2.0我用下面的配置項目:RequireJS優化 - 的Oracle MapViewer有不止一個匿名定義
require.config({
baseUrl: "Scripts/js/kendo",
paths: {
"kendo.datepicker.min": "kendo.datepicker.min",
"jquery-ui": "../../lib/jquery-ui.min",
"modules": "../../modules",
"colorpicker": "../../lib/colorpicker",
"eye": "../../lib/eye",
"layout": "../../lib/layout",
"utils": "../../lib/utils",
"oraclemaps": "../../lib/oraclemapsv2"
},
shim: {
"kendo.datepicker.min": ["oraclemaps"],
"jquery-ui": ["oraclemaps"],
"colorpicker": ["jquery-ui"],
"eye": ["colorpicker"],
"layout": ["eye"],
"utils": ["layout"]
}
});
oraclemaps
是一個第三方庫,其中包括jQuery的。我使用他們的版本,所以我定義了Kendo和jQuery-UI依賴關係。 oraclemaps有一個組件,按要求順序需要jquery-ui, colorpicker, eye, layout, and utils
。這也是我在墊片中定義的。該應用程序運行良好。
問題現在與優化器。使用配置,我得到了一個錯誤oraclemapsv2.js has more than one anonymous define
。我GOOGLE了它,我發現這是一個jQuery Hammer(包含在oraclemaps中)的issue。運行應用程序導致mismatched anonymous define() module
。
我試着把的oraclemaps加載到HTML中,但我得到了Script error for "jquery", needed by: jquery-ui, kendo.core.min
。
這裏是我的優化配置:
({
baseUrl: "../js/kendo",
paths: {
"kendo.datepicker.min": "kendo.datepicker.min",
"jquery-ui": "../../lib/jquery-ui.min",
"modules": "../../modules",
"colorpicker": "../../lib/colorpicker",
"eye": "../../lib/eye",
"layout": "../../lib/layout",
"utils": "../../lib/utils",
"oraclemaps": "../../lib/oraclemapsv2"
},
shim: {
"kendo.datepicker.min": ["oraclemaps"],
"jquery-ui": ["oraclemaps"],
"colorpicker": ["jquery-ui"],
"eye": ["colorpicker"],
"layout": ["eye"],
"utils": ["layout"]
},
include: ["../../lib/require.min"],
exclude: ["oraclemaps"],
name: "../../app",
out: "../build/app-built.js"
})
我該怎麼辦?有任何想法嗎?
你能告訴我如何爲匿名模塊添加名字嗎?例如,這是Hammer的部分。 a.Hammer = e,「undefined」!= typeof module && module.exports &&(module.exports = e),「function」== typeof define && define.amd? define([「jquery」],function(b){return d(a.Hammer,b)}):d(a.Hammer,a.jQuery || a.Zepto) – springrolls
您只需要將名稱添加爲第一個參數。像'define(「Hammer」,[「jquery」],...' – Louis
我嘗試加載我自己的jQuery並將noConflict設置爲true,但它沒有工作。我會再看看雖然,避風港試了足夠長的時間 – springrolls