-1

概括

下面的重命名 (s/cldr/cldrjs) 破坏了加载功能。

require.config({ paths: { - cldr: "./bower_components/cldrjs/dist/cldr" + cldrjs: "./bower_components/cldrjs/dist/cldr" } });

require([ - "cldr", - "cldr/supplemental" + "cldrjs", + "cldrjs/supplemental" ], function( Cldr ) { console.log( "Cldr instance", new Cldr( "en" ) ); }, function() {

设置

安装库。

bower install cldrjs requirejs

你应该得到:

cldrjs /tmp/cldrjs ├── cldrjs#0.3.2 extraneous └── requirejs#2.1.11 extraneous

用法

打开index.html(可在https://gist.github.com/rxaviers/10194312获得)。Require.js 应该加载 Cldr,并且您的控制台应该记录它的一个实例,例如:

Cldr instance Object { attributes={...}, locale="en", supplemental=function(), more...}

问题

为什么重命名会破坏它?

为了方便您,我放置了两个主要文件(可在https://gist.github.com/rxaviers/10194312获得)。只需更改参考即可对其进行测试。

--- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> </head> <body> - <script data-main="main.cldr.js" src="bower_components/requirejs/require.js"></script> + <script data-main="main.cldrjs.js" src="bower_components/requirejs/require.js"></script>

</body> </html>

附录

一条值得了解的信息...

cldr.js 的标头:(可在https://gist.github.com/rxaviers/10194312获得)

define(function() { // implementation... Yeap, no dependencies. })

cldr/supplemental.js 的标头:(可在https://gist.github.com/rxaviers/10194312获得)

define(["../cldr"], function() { // implementation... Dependency is the above cldr.js file. })

4

1 回答 1

0

https://github.com/jrburke/requirejs/issues/1084#issuecomment-40112805

我在 IRC 上与@jrburke 聊天,他指出

`../cldr' 首先相对于 'supplemental' 解析为 ID,最终在 ID 中以 'cldr' 结尾,然后将其转换为路径,但由于该路径已用于名为 'cldrjs 的模块' 这是一个问题,在我设置项目后,在其中找不到更多的 'cldr' 模块,但我认为最终结果是您将要使用地图或包配置

解决方案:

一般的经验法则是:如果包只包含一个 JS 模块,那么路径配置就足够了。如果它包含多个模块(在这种情况下)包配置通常更合适,除非包管理器知道前端模块

谢谢@jrburke

于 2014-04-10T17:23:21.600 回答