如何从AMD dojo创建构建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从AMD dojo创建构建相关的知识,希望对你有一定的参考价值。
Dojo对我来说很新,我有一些误解和缺乏知识。
我的应用程序(由其他人开发)使用AMD Dojo 1.8(相当旧,但让它保持原样)。在主jsp文件中,在加载应用程序时执行AMD的dojo.js。
我想创建一个构建。据我所知,我已创建图层并使用一些工具生成build - dojo.js文件将被创建(这是对的吗?)。我应该怎么做 - 用它替换现有的?如果是的话,我的意思是,AMD模块将如何加载?当我读到从AMD转向非AMD几乎是不可能的。
主要目标是优化应用程序,强制登陆页面加载更快。
答案
检查这个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一起使用。
装载机-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,你也可以这样,而不是在./src
文件夹中存储dojo文件。
在示例存储库中我使用TypeScript,因此如果要从TypeScript模块加载自己的AMD模块,则必须为它们创建定义。
希望这会有所帮助。如果您有任何问题可以在评论中随意提问,我会尝试更新我的答案。
以上是关于如何从AMD dojo创建构建的主要内容,如果未能解决你的问题,请参考以下文章
如何在 post create dojo AMD 模块中调用按钮单击事件