摘要:本文首發于的技術博客實用至上,非經作者同意,請勿轉載。原文地址如果您對本系列文章感興趣,歡迎關注訂閱這里這系列文章講什么本系列文章主要介紹如何用這一當前流行的構建工具來設計一個多頁應用的架構。
本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。這系列文章講什么?
原文地址:https://segmentfault.com/a/1190000006843916
如果您對本系列文章感興趣,歡迎關注訂閱這里:https://segmentfault.com/blog/array_huang
本系列文章主要介紹如何用webpack這一當前流行的構建工具來設計一個多頁應用的架構。請注意,本文并非新手教程,著重點更多是在于提供解決問題的思路,而非手把手帶你裝逼。
作者介紹本人供職于某互聯網物流公司,專職前端,公司雖仍處于創業階段,但產品線已經拉得挺長的了,因此所碰到的癢點、痛點也不少。我本是PHPer出身,對傳統前端茹毛飲血的境況恨之入骨,幸得webpack這一神器,我感覺現在寫前端已經跟寫PHP差不多了(大誤)。
示例代碼諸位看本系列文章,搭配我的腳手架項目食用更佳哦(笑):Array-Huang/webpack-seed(https://github.com/Array-Huang/webpack-seed)。
上個文件目錄結構讓大家一睹為快:
├─build # 編譯后生成的所有代碼、資源(圖片、字體等,雖然只是簡單的從源目錄遷移過來) ├─node_modules # 利用npm管理的所有包及其依賴 ├─vendor # 所有不能用npm管理的第三方庫 ├─.babelrc # babel的配置文件 ├─.eslintrc # ESLint的配置文件 ├─index.html # 僅作為重定向使用 ├─package.json # npm的配置文件 ├─webpack.config.js # webpack的配置文件 ├─src # 當前項目的源碼 ├─pages # 各個頁面獨有的部分,如入口文件、只有該頁面使用到的css、模板文件等 │ ├─alert # 業務模塊 │ │ └─index # 具體頁面 │ ├─index # 業務模塊 │ │ ├─index # 具體頁面 │ │ └─login # 具體頁面 │ │ └─templates # 如果一個頁面的HTML比較復雜,可以分成多塊再拼在一起 │ └─user # 業務模塊 │ ├─edit-password # 具體頁面 │ └─modify-info # 具體頁面 └─public-resource # 各個頁面使用到的公共資源 ├─components # 組件,可以是純HTML,也可以包含js/css/image等,看自己需要 │ ├─footer # 頁尾 │ ├─header # 頁頭 │ ├─side-menu # 側邊欄 │ └─top-nav # 頂部菜單 ├─config # 各種配置文件 ├─iconfont # iconfont的字體文件 ├─imgs # 公用的圖片資源 ├─layout # UI布局,組織各個組件拼起來,因應需要可以有不同的布局套路 │ ├─layout # 具體的布局套路 │ └─layout-without-nav # 具體的布局套路 ├─less # less文件,用sass的也可以,又或者是純css │ ├─base-dir │ ├─components-dir # 如果組件本身不需要js的,那么要加載組件的css比較困難,我建議可以直接用less來加載 │ └─base.less # 組織所有的less文件 ├─libs # 與業務邏輯無關的庫都可以放到這里 └─logic # 業務邏輯架構痛點癢點一覽(并非系列文章的所有內容)
SPA好復雜,我還是喜歡傳統的多頁應用怎么破?又或是,我司項目需要后端渲染,頁面模板怎么出?
每個頁面相同的UI布局好難維護,UI稍微改一點就要到每個頁面去改,好麻煩還容易漏,怎么破?
除js外的資源如css/less、圖片、swf、字體等,要怎么打包呢?不然老是要外部引用,遷移、部署起來都好麻煩呢。
某些年久失修的jQuery插件怎么在webpack里使用呢?
能不能整合進ESLint來檢查語法?
能不能整合postcss來加強瀏覽器兼容性?
部署代碼的時候如何清除用戶瀏覽器遺留下來的上個版本的緩存?
后續發展我相信,架構不是一蹴而就的,而是一個不斷迭代的過程,每跨過一個坑、每解決一個痛點癢點,都能使架構更加健壯。
附系列文章目錄(同步更新)webpack多頁應用架構系列(一):一步一步解決架構痛點:https://segmentfault.com/a/1190000006843916
webpack多頁應用架構系列(二):webpack配置常用部分有哪些?:https://segmentfault.com/a/1190000006863968
webpack多頁應用架構系列(三):怎么打包公共代碼才能避免重復?:https://segmentfault.com/a/1190000006871991
webpack多頁應用架構系列(四):老式jQuery插件還不能丟,怎么兼容?:https://segmentfault.com/a/1190000006887523
webpack多頁應用架構系列(五):聽說webpack連less/css也能打包?:https://segmentfault.com/a/1190000006897458
webpack多頁應用架構系列(六):聽說webpack連圖片和字體也能打包?:https://segmentfault.com/a/1190000006907701
webpack多頁應用架構系列(七):開發環境、生產環境傻傻分不清楚?:https://segmentfault.com/a/1190000006952432
webpack多頁應用架構系列(八):教練我要寫ES6!webpack怎么整合Babel?:https://segmentfault.com/a/1190000006992218
webpack多頁應用架構系列(九):總有刁民想害朕!ESLint為你阻擊垃圾代碼:https://segmentfault.com/a/1190000007030775
webpack多頁應用架構系列(十):如何打造一個自定義的bootstrap:https://segmentfault.com/a/1190000007043716
webpack多頁應用架構系列(十一):預打包Dll,實現webpack音速編譯:https://segmentfault.com/a/1190000007104372
webpack多頁應用架構系列(十二):利用webpack生成HTML普通網頁&頁面模板:https://segmentfault.com/a/1190000007126268
webpack多頁應用架構系列(十三):構建一個簡單的模板布局系統:https://segmentfault.com/a/1190000007159115
webpack多頁應用架構系列(十四):No復制粘貼!多項目共用基礎設施
webpack多頁應用架構系列(十五):論前端如何在后端渲染開發模式下夾縫生存
webpack多頁應用架構系列(十六):善用瀏覽器緩存,該去則去,該留則留
本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。
原文地址:https://segmentfault.com/a/1190000006843916
如果您對本系列文章感興趣,歡迎關注訂閱這里:https://segmentfault.com/blog/array_huang
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80351.html
摘要:原文地址如果您對本系列文章感興趣,歡迎關注訂閱這里前言上文多頁應用架構系列十二利用生成普通網頁頁面模板我們基本上已經搞清楚如何利用來生成普通網頁頁面模板,本文將以我的腳手架項目介紹如何在這基礎上搭建一套簡單的模板布局系統。 本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。原文地址:https://segmentfault.com/a/1190000007...
摘要:在上一篇文章多頁應用架構系列二配置常用部分有哪些中,我介紹了如何配置多頁應用的入口,然而,如果僅僅如此操作,帶來的后果就是,打包生成出來的每一個入口文件都會完整包含所有代碼。的初始化常用參數有哪些,給這個包含公共代碼的命個名唯一標識。 本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。原文地址:https://segmentfault.com/a/1190...
摘要:本文首發于的技術博客實用至上,非經作者同意,請勿轉載。如果你使用了,或類似的,那么,通過編譯前后的代碼相差就很大了,這會造成兩個問題以為例把你的代碼轉成什么樣你自己是無法控制的,這往往導致無法通過的審查。 本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。原文地址:https://segmentfault.com/a/1190000007030775如果您...
摘要:本文首發于的技術博客實用至上,非經作者同意,請勿轉載。原文地址如果您對本系列文章感興趣,歡迎關注訂閱這里前言書承上文多頁應用架構系列十如何打造一個自定義的。終于,發現了這一大殺器,打包時間過長的問題得到完美解決。 本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。原文地址:https://segmentfault.com/a/119000000710437...
摘要:本文首發于的技術博客實用至上,非經作者同意,請勿轉載。怎么來兼容老式插件呢方法有不少,下面一個一個來看。與上述的方案相反,此方案是先用加載的滿足老式插件的需要,再通過將其轉換成符合模塊化要求的。 本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。原文地址:https://segmentfault.com/a/1190000006887523如果您對本系列文...
閱讀 3153·2021-11-22 13:54
閱讀 3441·2021-11-15 11:37
閱讀 3606·2021-10-14 09:43
閱讀 3502·2021-09-09 11:52
閱讀 3599·2019-08-30 15:53
閱讀 2461·2019-08-30 13:50
閱讀 2060·2019-08-30 11:07
閱讀 891·2019-08-29 16:32