Dojo对我来说还很陌生,我有些误会和缺乏知识。
我的应用程序(由其他人开发)使用AMD Dojo 1.8(虽然比较旧,但请保留原样)。 在主jsp文件dojo.js中,它是AMD在加载应用程序时执行的。
我想创建一个构建。据我了解,我已经创建了图层,并使用一些工具生成了build-将创建dojo.js文件(对吗?)。我该怎么办-用它替换现有的?如果是的话,我的意思是,如何装载AMD模块?正如我读到的那样,几乎不可能从AMD迁移到非AMD。
主要目标是优化应用程序,迫使登录页面加载更快。
答案 0 :(得分:1)
选中此repository
它包含已配置的Dojo + Webpack + TypeScript的工作示例
一些关键点:
您需要配置DojoWebpackPlugin:
new DojoWebpackPlugin({
loaderConfig: require.resolve("./src/loader-config.js"),
locales: ["de", "en"],
environment: {
dojoRoot: "/",
production: env && env.production
}, // used at run time for non-packed resources (e.g. blank.gif)
buildEnvironment: { dojoRoot: "node_modules", build: true }
})
您必须进行加载程序配置才能与dojo-webpack-plugin一起使用。
loader-config.js:
function getConfig(env) {
const loaderConfig = {
parseOnLoad: false,
tlmSiblingOfDojo: true,
has: {
"foreign-loader": true
},
isDebug: false,
async: false,
blankGif: "./assets/images/blank.gif",
production: env.production,
packages: [
{
name: "dojo",
location: env.dojoRoot + "/dojo",
lib: "."
},
{
name: "dijit",
location: env.dojoRoot + "/dijit",
lib: "."
}
]
}
if (!env.build) {
loaderConfig.locale = dojoConfig.locale
}
return loaderConfig
}
//For build export function getConfig
if (typeof module !== "undefined" && module) {
module.exports = getConfig
} else {
//To use it directly in index.html return config object
getConfig({ dojoRoot: "/" })
}
我正在使用从npm安装的dojo,您也可以采用这种方式,而不是将dojo文件存储在./src
文件夹中。
在示例示例中,我使用的是TypeScript,因此,如果要从TypeScript模块加载自己的AMD模块,则必须为其创建定义。
希望这会有所帮助。如果您有任何问题随时发表评论,我将尝试更新答案。