require.js + cldrjs 为啥重命名配置路径条目会破坏它?
Posted
技术标签:
【中文标题】require.js + cldrjs 为啥重命名配置路径条目会破坏它?【英文标题】:require.js + cldrjs Why renaming a config paths entry break it?require.js + cldrjs 为什么重命名配置路径条目会破坏它? 【发布时间】:2014-04-08 22:06:36 【问题描述】:总结
下面的重命名 (s/cldr/cldrjs) 破坏了加载功能。
require.config(
paths:
- cldr: "./bower_components/cldrjs/dist/cldr"
+ cldrjs: "./bower_components/cldrjs/dist/cldr"
);
要求([ - “cldr”, - “cldr/补充” + "cldrjs", +“cldrjs/补充” ],函数(Cldr) console.log("Cldr 实例", new Cldr("en")); , 功能()
设置
安装库。
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>
正文>
【参考方案1】:https://github.com/jrburke/requirejs/issues/1084#issuecomment-40112805
我在 IRC 上与@jrburke 聊天,他指出
`../cldr' 相对于'supplemental'首先被解析为一个ID,最终在ID中以'cldr'结束,然后将其转换为路径 但由于该路径已用于名为“cldrjs”的模块,这是一个问题,在其中找不到“cldr”模块 在我建立项目之后 但我认为最终结果是您将要使用地图或包配置
解决方案:
一般的经验法则是:如果包只包含一个 JS 模块,那么路径配置就足够了。如果它包含多个模块(在这种情况下)包配置通常更合适 除非包管理器知道前端模块
谢谢@jrburke
【讨论】:
以上是关于require.js + cldrjs 为啥重命名配置路径条目会破坏它?的主要内容,如果未能解决你的问题,请参考以下文章