Javascript 如何对不同的路径js文件仅使用一个RequireJS配置文件?
我正在将RequireJS集成到我的项目中。我的项目结构如下:Javascript 如何对不同的路径js文件仅使用一个RequireJS配置文件?,javascript,requirejs,amd,Javascript,Requirejs,Amd,我正在将RequireJS集成到我的项目中。我的项目结构如下: $ tree . |-- common.js |-- lib | |-- jquery.min.js | `-- require.js `-- view |-- a | |-- a.html | |-- a.js | `-- b | |-- b.html | `-- b.js |-- c.html `-- c.js r
$ tree
.
|-- common.js
|-- lib
| |-- jquery.min.js
| `-- require.js
`-- view
|-- a
| |-- a.html
| |-- a.js
| `-- b
| |-- b.html
| `-- b.js
|-- c.html
`-- c.js
requirejs.config({
baseUrl: '../lib',
paths: {
'jquery': 'jquery.min'
}
});
common.js是我的RequireJS配置文件,内容如下:
$ tree
.
|-- common.js
|-- lib
| |-- jquery.min.js
| `-- require.js
`-- view
|-- a
| |-- a.html
| |-- a.js
| `-- b
| |-- b.html
| `-- b.js
|-- c.html
`-- c.js
requirejs.config({
baseUrl: '../lib',
paths: {
'jquery': 'jquery.min'
}
});
/view中有不同路径的js文件
c.js运行良好,如下所示:
requirejs(['../common'], function (common) {
requirejs(['jquery'], function($){
.......
});
});
但是如何在a.js或b.js中插入'jquery',并且仍然使用common.js?别忘了更改common.js的路径。应该是:
requirejs(['../../common'], function (common) { ... });
来自a.js和
requirejs(['../../../common'], function (common) { ... });
从b.js开始,因为路径是相对于当前文件的
或者,使用绝对路径。这样,无论您从哪个文件requirejs
ing,路径都是相同的。例如,如果common.js
位于,则使用
。(前导的
/
使其成为绝对路径。)您是否忘记将路径更改为common.js
?它当然应该是requirejs(['../../common'],function(common){…})代码>来自a.js
和requirejs(['../../../common'],函数(common){…})
来自b.js
,因为路径是相对于当前文件的。我更改了,但是jquery路径也必须更改,我不想更改它,我想对a.js、b.js和c.js使用“jquery”。就像AngularJS注入一样。不,不需要更改jquery的路径。它通过查看common.js
找到jquery路径。但是查找common.js
本身的方式有所不同:您将其作为相对于正在搜索它的文件的路径('../common'
来自c.js
)。或者,您可以使用绝对路径:“/common”
。假设common.js
位于URL目录树的根目录,例如http://example.com/common.js
而非http://example.com/scripts/common.js
,在这种情况下,您可以使用/scripts/common.js
。感谢您的提醒,我已将相对路径更改为绝对路径。这是否解决了问题?