如今前端項目愈來愈變得像大型工程了,並且愈來愈複雜了,須要處理好組員之間的協做,也須要作好業務分塊、去耦合來下降維護成本,而且還要保持高效率開發。css
工程目錄結構的優化是能達到這個目的的一種方式。通常而言,不是多頁面工程仍是單頁面應用,抑或兩者都有,目錄結構都是如下兩種方式:html
這種方式是以文件類型、業務類型或其餘類型進行分組。前端
多頁面工程vue
|-- src/ 源代碼目錄 |-- html/ html 文件目錄 |-- page1.html page1 頁面的 html 文件 |-- module1/ 子目錄 |-- page2.html page2 頁面的 html 文件 |-- ... |-- ... |-- js/ js 文件目錄 |-- common/ 公共文件目錄 |-- page1/ page1 頁面的 js 目錄 |-- module1/ 子目錄 |-- page2/ page2 頁面的 js 目錄 |-- ... |-- ... |-- css/ css 文件目錄 |-- common/ 公共文件目錄 |-- page1/ page1 頁面的 css 目錄 |-- module1/ 子目錄 |-- page2/ page2 頁面的 css 目錄 |-- ... |-- ... |-- less/ less 文件目錄(內部結構跟上面相似) |-- images/ 圖片文件目錄(內部結構跟上面相似) |-- data/ api-mock 文件目錄(內部結構跟上面相似) |-- ...
單頁面應用react
|-- src/ 源代碼目錄 |-- components/ 組件文件目錄(如 react) |-- common/ 公共文件目錄 |-- page1.js page1 頁面的組件文件 |-- module1/ 子目錄 |-- page2.js page2 頁面的組件文件 |-- ... |-- ... |-- services/ service 文件目錄 |-- service1.js page1 頁面的 service |-- module1/ 子目錄 |-- service2.js page2 頁面的 service |-- ... |-- ... |-- models/ model 文件目錄 |-- model1.js page1 頁面的 model |-- module1/ 子目錄 |-- model2.js page2 頁面的 model |-- ... |-- ... |-- ... |-- images/ 圖片文件目錄(內部結構跟上面相似) |-- data/ api-mock 文件目錄(內部結構跟上面相似) |-- ...
這種方式的優點是能使文件分類、功能分類很是清晰,而且可以在必定程度上約束組員的書寫方式(目錄結構),也清晰明瞭、簡單易懂。但這種方式有很明顯的缺點:git
因此,對前端項目而言,多數狀況下我不會使用這種目錄結構。github
這種方式是以頁面模塊、業務模塊或其餘類型進行分塊。ajax
多頁面工程json
|-- src/ 源代碼目錄 |-- page1/ page1 頁面的工做空間 |-- index.html html 入口文件 |-- index.js js 入口文件 |-- index.(css|less|scss) 樣式入口文件 |-- html/ html 片斷目錄 |-- js/ js 文件目錄 |-- (css|less|scss)/ 樣式文件目錄 |-- data/ 本地 json 數據模擬 |-- images/ 圖片文件目錄 |-- components/ 組件目錄(若是基於 react, vue 等組件化框架) |-- ... |-- module1/ 子目錄 |-- page2/ page2 頁面的工做空間(內部結構跟 page1 相似) |-- ... |-- html/ 公共 html 片斷 |-- less/ 公共 less 目錄 |-- components/ 公共組件目錄 |-- images/ 公共圖片目錄 |-- data/ 公共 api-mock 文件目錄 |-- ...
單頁面應用api
|-- src/ 源代碼目錄 |-- page1/ page1 頁面的工做空間 |-- index.js 入口文件 |-- service.js |-- model.js |-- data/ 本地 json 數據模擬 |-- images/ 圖片文件目錄 |-- components/ 組件目錄(若是基於 react, vue 等組件化框架) |-- ... |-- module1/ 子目錄 |-- page2/ page2 頁面的工做空間(內部結構跟 page1 相似) |-- ... |-- images/ 公共圖片目錄 |-- data/ 公共 api-mock 文件目錄 |-- components/ 公共組件目錄 |-- ...
這種方式避免了「類型分組」的問題,但也有一些不足:
儘管有一些不足,可是能夠配合構建工具消除,因此通常狀況下我會選擇這種目錄結構。
不少狀況下,這兩種方式是能夠配合使用的,好比多頁面工程中有小型單頁面應用。
|-- src/ 源代碼目錄 |-- page1/ page1 頁面的工做空間 |-- index.html html 入口文件 |-- index.js js 入口文件 |-- index.(css|less|scss) 樣式入口文件 |-- html/ html 片斷目錄 |-- js/ js 文件目錄 |-- ajax/ 對 ajax 封裝的目錄 |-- util/ 工具類函數的目錄 |-- pages/ spa 應用頁面目錄 |-- data/ 靜態數據目錄 |-- tpl/ 模板目錄 |-- (event|view)/ 事件監聽文件目錄 |-- ... |-- data/ 本地 json 數據模擬 |-- (css|less|scss)/ 樣式文件目錄 |-- images/ 圖片文件目錄 |-- components/ 組件目錄(若是基於 react, vue 等組件化框架) |-- ... |-- ...
更多博客,查看 https://github.com/senntyou/blogs
版權聲明:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)