假设我想创建一个本身依赖于其他AMD模块的AMD模块。无论什么,但要有形,假设它的一些新的日期选择器小部件依赖于moment.js
所以我设置了一个看起来像这样的bower.json:
{
"name": "sampleLib",
"version": "0.0.1",
"description": "test",
"main": "myControl.js",
"moduleType": [
"amd"
],
"dependencies": {
"moment": "~2.8.1"
}
}
好的,很酷。没问题。
我的问题是如何消耗它......我看到两种选择,我都不喜欢:
将我的代码和moment.js转换为统一脚本,然后发布。它很容易让客户消费,因为他们只需要依赖我的模块。在这种情况下:
不要连接我的代码并将moment.js声明为bower.json中的依赖项。因此,当客户bower install
成为我的图书馆时,他们也会关闭moment.js。这很酷。但我担心的是命名空间...假设我依赖于时刻作为'lib / moment',但是客户端的结构是否仅仅依赖于时刻作为'时刻'?在运行时,我的代码是否因为未定义lib / moment而失败?我担心这太脆了,有没有办法加强这个,除了好的文档?
发布具有依赖关系的AMD模块的最强大的方法是什么?
答案 0 :(得分:1)
选项1 - 虽然连接更容易分发代码,但是您遇到了其中一个问题 - 您可能会遇到与其他库冲突的风险。您还可以增加js库的大小。
选项2 - 我认为你并不是指这里的命名空间,而是模块的路径。那是对的吗? RequireJS有一个配置块,您可以更改基本路径和映射,以解决您所指的问题。 http://requirejs.org/docs/1.0/docs/api.html#config
所以,在你的情况下,如果你想发布一个AMD模块和依赖项,我仍然会选择2。