如何从AMD dojo创建构建

问题描述 投票:0回答:1

Dojo对我来说很新,我有一些误解和缺乏知识。

我的应用程序(由其他人开发)使用AMD Dojo 1.8(相当旧,但让它保持原样)。在主jsp文件中,在加载应用程序时执行AMD的dojo.js。

我想创建一个构建。据我所知,我已创建图层并使用一些工具生成build - dojo.js文件将被创建(这是对的吗?)。我应该怎么做 - 用它替换现有的?如果是的话,我的意思是,AMD模块将如何加载?当我读到从AMD转向非AMD几乎是不可能的。

主要目标是优化应用程序,强制登陆页面加载更快。

optimization build dojo amd
1个回答
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一起使用。

装载机-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模块,则必须为它们创建定义。

希望这会有所帮助。如果您有任何问题可以在评论中随意提问,我会尝试更新我的答案。

© www.soinside.com 2019 - 2024. All rights reserved.