在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模塊加載的幾種情況: