RequireJS Optimer Ignore Plugins

时间:2015-11-03 22:48:10

标签: javascript dojo requirejs arcgis

我正在编写一个使用托管的dojo api的应用程序。我正在使用AMD编写我的应用程序的其余部分,以便与Dojo的amd loader完美匹配。我想使用dojo提供的一些AMD加载插件,特别是dojo / i18n进行翻译/

从源代码工作得很好,但是当我尝试优化代码时,我得到“TypeError:无法读取未定义的属性'normalize'。”我知道它正在尝试加载插件并检查normalize(),但该插件仅托管且无法下载。

我希望在优化代码时忽略此插件,并在运行时需要正确的转换文件。

1 个答案:

答案 0 :(得分:1)

我知道这个问题,在我的情况下,我遇到麻烦,让事情与dojo / text一起工作。 要解决它,请尝试以下操作:

  1. 在GitHub上获取i18n的requirejs版本https://github.com/requirejs/i18n/blob/master/i18n.js

  2. 将其包含在您的项目中。最好将它放在未部署的子文件夹中。在我的情况下,它的./libs/build/i18n.js(不用担心,它只用于优化,不会替换dojo / i18n)

  3. 转到build.js(build位于./build.js)并将以下项添加到路径中:

      paths: {
         dojo: "empty:",
         dojox: "empty:",
         i18n: "./libs/build/i18n"
     }
    
  4. 转到您有需求的索引文件(或将其添加到dojo.config)并添加新别名:

    require({
         aliases:[["i18n", "dojo/i18n"]]
    }, 
    ["..."], 
    function(...){});
    
  5. 用i18n!nls / strings.js替换你的应用程序中每个出现的dojo / i18n!nls / strings.js,所以实际上会使用别名。

    define(["dojo/i18n!./nls/strings.js"], function (nls) 
    

    替换为

    define(["i18n!./nls/strings.js"], function (nls) 
    
  6. 在第5步之后,requirejs将识别i18n的requirejs-version并且实际上可以调用normalize。但是你的应用程序仍将使用dojo / i18n,因为它隐藏在别名中。

    希望这会有所帮助。