require.js的路径问题

在requirejs的demo练习中对其中的路径进行设置时跳了很多坑,下面就来一一说明,本人亲测有效

demo目录结构如下

 其中a依赖于b,main作为加载的入口文件

在不设置baseUel的情况下

1.1.当requirejs只是被包含在html页面中,且没用增加data-main设置

index页面

 此时,js文件加载根路径以index.html页面的加载路径为基准,在main.js中

 结果

 修改main.js

 或

 注意:以“/”开头时要加上.js后缀

1.2.当增加data-main这只项时

在index页面中

此时main.js文件以异步方式加载,在requirejs加载完成后才加载,Js文件加载的路径是以data-main设置的路径为基准

修改main.js文件

 结果

 修改main.js文件

 在设置baseUrl的情况下

2.1.在baseUrl为“/”时

此时,ja文件上的加载路径以根路径为基准,修改main.js

 结果:

 修改main.js

 2.2.在baseUrl不为“/”时

此时,js文件加载的根路径以index页面的加载路径为基准

1.修改main.js

 结果:

 再次修改:通过

2.修改main.js

 结果:

 修改main.js

以上情况都是针对启动页面index.html与入口js文件main.js之间的路径设置关系,下面就来说明具有依赖关系的js文件之间的路径设置。在前面的目录结构截图中,a.js依赖于b.js,在a.js中依赖b.js时,可以以a.js文件为基准来写b.js的路径,如下

 

也可以以前面说到的情况的路径基准来写b.js的路径

 

 

注意:baseUrl设置为“/”慎用

因为在实际开发中,一般都采用前后端分离的方式,在部署代码的时候,存放前端代码的文件夹不一定是存放在根目录下,对于这一点的对比可以在webstrom和vscode中运行代码的异同点中清晰体会。

本次的demo测试的代码我放在require文件下,以下是在浏览器中打开的情况

Webstrom:

Vscode:

可以看出,同样的代码以不同的工具打开运行的结果却不同,也可以明显看出,在webstrom中路径是加上了require的,所以在设置baseUrl为“/”时,是以路径中第一个“/”为基准来加载的,所以再在webstrom中修改main.js

 

 require模块加载的几种情况:

猜你喜欢

转载自www.cnblogs.com/onyli/p/11571685.html