3

我有一个项目,我使用 require.js 和 hbs.js(require-handlebars-plugin)等。在我的开发环境中一切正常,但是在我使用 r.js 优化项目(需要js优化)之后,我遇到了问题。

那是; 因为 hbs.js 只预编译了一个语言环境,整个 i18n 逻辑被破坏了,不再可能更改语言环境。我怀疑我必须以某种方式对每个语言环境进行优化,但我不知道如何。如果有人可以分享他们对这个问题的解决方案,那就太好了

谢谢!

4

1 回答 1

1

好的,这是我解决它的方法:

首先,我为每种语言创建了一个 require.js 引导文件。然后我修改了我的 maven pom.xml 以执行两次 javascript 优化,每个语言环境一次。我使用了带有两个执行元素的 requirejs-maven-plugin,每个语言环境一个。每个元素都有一个 configFile 值,它指向各自的 r.js 构建文件。(每种语言一个)。语言环境的构建文件然后指向该语言的引导文件。

运行优化后,您现在将拥有每个语言环境的 uglified js 文件。但很可能这些都没有包含在最终的战争文件中。您必须将 r.js build_out 文件夹中的 uglified 文件复制到战争中。我通过向 maven-war-plugin 添加配置元素来做到这一点;warSourceDirectory 和 webResources 复制我的两个语言环境。我还使用了 webSourceInclude 和 webSourceExlude 来删除我不想要的文件。

最后一步是在加载站点时加载正确的需要引导文件。为此,只需在 index.html 中创建一个 javascript 片段,它首先确定您的语言环境(例如,从 cookie 中),然后动态加载引导文件

document.write("<script data-main='bootstrap_" + getLocaleString() + "' src='/js/lib/require.js'><\/script>");

感谢https://github.com/SlexAxton/require-handlebars-plugin的作者帮助我解决这个问题。

于 2013-05-30T20:34:32.567 回答