摘要:徹底分離源文件目錄和生成文件目錄使用生成出來的頁面可以很安心地跟打包好的其它資源放到一起,相對于另起一個(gè)目錄專門存放頁面文件來說,整個(gè)文件目錄結(jié)構(gòu)更加合理如何利用生成頁面生成頁面主要是通過來實(shí)現(xiàn)的,下面來介紹如何實(shí)現(xiàn)。
本文首發(fā)于Array_Huang的技術(shù)博客——實(shí)用至上,非經(jīng)作者同意,請勿轉(zhuǎn)載。為什么要用webpack來生成HTML頁面
原文地址:https://segmentfault.com/a/1190000007126268
如果您對本系列文章感興趣,歡迎關(guān)注訂閱這里:https://segmentfault.com/blog/array_huang
按照我們前面的十一篇的內(nèi)容來看,自己寫一個(gè)HTML頁面,然后在上面加載webpack打包的js或其它類型的資源,感覺不也用得好好的么?
是的沒錯(cuò),不用webpack用requireJs其實(shí)也可以啊,甚至于,傳統(tǒng)那種人工管理模塊依賴的做法也沒有什么問題嘛。
但既然你都已經(jīng)看到這一篇了,想必早已和我一樣,追求著以下這幾點(diǎn)吧:
更懶,能自動(dòng)化的事情絕不做第二遍。
更放心,調(diào)通的代碼比人靠譜,更不容易出錯(cuò)。
代碼潔癖,什么東西該放哪,一點(diǎn)都不能含糊,混在一起我就要死了。
那么,廢話不多說,下面就來說說使用webpack生成HTML頁面有哪些好處吧。
對多個(gè)頁面共有的部分實(shí)現(xiàn)復(fù)用在實(shí)際項(xiàng)目的開發(fā)過程中,我們會發(fā)現(xiàn),雖然一個(gè)項(xiàng)目里會有很多個(gè)頁面,但這些頁面總有那么幾個(gè)部分是相同或相似的,尤其是頁頭頁尾,基本上是完全一致的。那我們要怎么處理這些共有的部分呢?
復(fù)制粘貼流不就是復(fù)制粘貼的事嘛?寫好一份完整的HTML頁面,做下個(gè)頁面的時(shí)候,直接copy一份文件,然后直接在copy的文件上進(jìn)行修改不就好了嗎?
誰是這么想這么做的,放學(xué)留下來,我保證不打死你!我曾經(jīng)接受過這么一套系統(tǒng),頂部欄菜單想加點(diǎn)東西,就要每個(gè)頁面都改一遍,可維護(hù)性爛到爆啊。
Iframe流Iframe流常見于管理后臺類項(xiàng)目,可維護(hù)性O(shè)K,就是缺陷比較多,比如說:
點(diǎn)擊某個(gè)菜單,頁面是加載出來了但是瀏覽器地址欄上的URL沒變,刷新的話又回到首頁了。
搜索引擎收錄完蛋,前臺項(xiàng)目一般不能用Iframe來布局。
沒有逼格,Low爆了,這是最重要的一點(diǎn)(大誤)。
SPA流最近這幾年,隨著移動(dòng)互聯(lián)網(wǎng)的興起,SPA也變得非常常見了。不過SPA的局限性也非常大,比如搜索引擎無法收錄,但我個(gè)人最在意的,是它太復(fù)雜了,尤其是一些本來業(yè)務(wù)邏輯就多的系統(tǒng),很容易懵圈。
后端模板渲染這倒真是一個(gè)辦法,只是,需要后端的配合,利用后端代碼把頁面的各個(gè)部分給拼合在一起,所以這方法對前端起家的程序員還是有點(diǎn)門檻的。
利用前端模板引擎生成HTML頁面所謂“用webpack生成HTML頁面”,其實(shí)也并不是webpack起的核心作用,實(shí)際上靠的還是前端的模板引擎將頁面的各個(gè)部分給拼合在一起來達(dá)到公共區(qū)域的復(fù)用。webpack更多的是組織統(tǒng)籌整個(gè)生成HTML頁面的過程,并提供更大的控制力。最終,webpack生成的到底是完整的頁面,還是供后端渲染的模板,就全看你自己把控了,非常靈活,外人甚至察覺不出來這到底是你自己寫的還是代碼統(tǒng)一生成的。
處理資源的動(dòng)態(tài)路徑如果你想用在文件名上加hash的方法作為緩存方案的話,那么用webpack生成HTML頁面就成為你唯一的選擇了,因?yàn)殡S著文件的變動(dòng),它的hash也會變化,那么整個(gè)文件名都會改變,你總不能在每次編譯后都手動(dòng)修改加載路徑吧?還是放心交給webpack吧。
自動(dòng)加載webpack生成的css、less如果你使用webpack來生成HTML頁面,那么,你可以配置好每個(gè)頁面加載的chunk(webpack打包后生成的js文件),生成出來的頁面會自動(dòng)用