RequireJS 优化忽略插件
RequireJS Optimer Ignore Plugins
我正在编写一个使用托管的 dojo api 的应用程序。我正在使用 AMD 编写我的应用程序的其余部分,以很好地适应 Dojo 的 amd 加载程序。我想使用dojo提供的一些AMD加载插件,具体是dojo/i18n for translation/
从源头上运行良好,但每当我尝试优化代码时,我都会得到 "TypeError: Cannot read property 'normalize' of undefined." 我知道它正在尝试加载插件并检查 normalize(),但该插件仅托管,不能待下载。
我希望在优化代码时忽略此插件,并在运行时要求正确的翻译文件。
我知道这个问题,就我而言,我在使用 dojo/text 时遇到了麻烦。
要解决它,请尝试以下操作:
在 GitHub https://github.com/requirejs/i18n/blob/master/i18n.js
上获取 i18n 的 requirejs 版本
将其添加到您的项目中。最好将它放在未部署的子文件夹中。在我的例子中是 ./libs/build/i18n.js(别担心,它只用于优化,不会替换 dojo/i18n)
转到 build.js(构建位于 ./build.js)并将以下项目添加到路径:
paths: {
dojo: "empty:",
dojox: "empty:",
i18n: "./libs/build/i18n"
}
转到您需要的索引文件(或将其添加到 dojo.config)并添加一个新别名:
require({
aliases:[["i18n", "dojo/i18n"]]
},
["..."],
function(...){});
用 i18n!nls/strings.js 替换您应用中出现的每个 dojo/i18n!nls/strings.js,这样别名就会被实际使用。
define(["dojo/i18n!./nls/strings.js"], function (nls)
替换为
define(["i18n!./nls/strings.js"], function (nls)
在第 5 步之后,requirejs 将识别 i18n 的 requirejs 版本,并且可以实际调用 normalize。但是您的应用仍将使用 dojo/i18n,因为它隐藏在别名中。
希望这会有所帮助。
我正在编写一个使用托管的 dojo api 的应用程序。我正在使用 AMD 编写我的应用程序的其余部分,以很好地适应 Dojo 的 amd 加载程序。我想使用dojo提供的一些AMD加载插件,具体是dojo/i18n for translation/
从源头上运行良好,但每当我尝试优化代码时,我都会得到 "TypeError: Cannot read property 'normalize' of undefined." 我知道它正在尝试加载插件并检查 normalize(),但该插件仅托管,不能待下载。
我希望在优化代码时忽略此插件,并在运行时要求正确的翻译文件。
我知道这个问题,就我而言,我在使用 dojo/text 时遇到了麻烦。 要解决它,请尝试以下操作:
在 GitHub https://github.com/requirejs/i18n/blob/master/i18n.js
上获取 i18n 的 requirejs 版本
将其添加到您的项目中。最好将它放在未部署的子文件夹中。在我的例子中是 ./libs/build/i18n.js(别担心,它只用于优化,不会替换 dojo/i18n)
转到 build.js(构建位于 ./build.js)并将以下项目添加到路径:
paths: { dojo: "empty:", dojox: "empty:", i18n: "./libs/build/i18n" }
转到您需要的索引文件(或将其添加到 dojo.config)并添加一个新别名:
require({ aliases:[["i18n", "dojo/i18n"]] }, ["..."], function(...){});
用 i18n!nls/strings.js 替换您应用中出现的每个 dojo/i18n!nls/strings.js,这样别名就会被实际使用。
define(["dojo/i18n!./nls/strings.js"], function (nls)
替换为
define(["i18n!./nls/strings.js"], function (nls)
在第 5 步之后,requirejs 将识别 i18n 的 requirejs 版本,并且可以实际调用 normalize。但是您的应用仍将使用 dojo/i18n,因为它隐藏在别名中。
希望这会有所帮助。