1 require源码上可以看出来require.js有三个全局变量 require requirejs 和 define
define ([ module1,module2····] ,callback) 中的module路径依赖
require([ module1,module2····],callback) 中的module路径依赖
二者的路径依赖如何?
- 如果设置了data-main,那么module引入路径就是相对于data-main文件所在目录为基准
- 如果设置了require.config baseUrl 的路径,那么define和require依赖的mudule引入 路径就是相对于baseUrl的
2 以data-main路径为准,且不设置baseUrl
目录如下
|
|
index.html
|
|
main.js
|
|
test.js
|
|
3 设置baseUrl,看下路径变化
改变下目录结构
|
|
main.js 设置baseUrl
|
|
|
|
test.js 依赖模块路径以js/jq为准
|
|
4 如果直接以 绝对路径 / 引入包,文件名后缀 js 不能再省略了;代表相对于服务器的根目录
scheme:host : port / path 即path根目录
myvirtual 是我的一个虚拟主机
|
|
main.js
|
|
test.js
|
|
5 通过require.config直接设置模块的路径,requirejs支持跨域获取文件 require.config
|
|
index.html
|
|
main.js
|
|
test.js
|
|
module1.js
|
|
myvirtual2 / innervirtual2.js
|
|
6 submit
6.1 如果直接通过路径获取包,如 2,3部分,文件后缀js可以省略
6.2 如果直接通过绝对路径获取包,如4部分,文件后缀js不能省略
6.3 如果设置require.config paths 设置包的路径,文件后缀js可以省略