成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

切圖崽的自我修養(yǎng)--[BUILD]構(gòu)建工具思路梳理

elina / 3420人閱讀

摘要:前言之前也是從過來的,到現(xiàn)在的中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個(gè)服務(wù)之類的,現(xiàn)在就來簡(jiǎn)單梳理下思路最原始的構(gòu)建工具無非是這樣改動(dòng)了某個(gè)資源文件,要手動(dòng)運(yùn)行構(gòu)建命令才能重新構(gòu)建,重新構(gòu)建的時(shí)候構(gòu)建工具將所有資源

前言

之前也是從grunt/gulp/fis/過來的,到現(xiàn)在的webpack,中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個(gè)http服務(wù)之類的,現(xiàn)在就來簡(jiǎn)單梳理下思路

最原始的構(gòu)建工具無非是這樣:

改動(dòng)了某個(gè)資源文件, 要手動(dòng)運(yùn)行構(gòu)建命令才能重新構(gòu)建,

重新構(gòu)建的時(shí)候構(gòu)建工具將所有資源文件重新構(gòu)建一次,再合并打包.

你要手動(dòng)刷新頁(yè)面才能加載到到最新的構(gòu)建完成的資源文件

而我們希望構(gòu)建工具最好是這樣:

你改動(dòng)了某個(gè)資源文件,構(gòu)建工具能夠監(jiān)聽到這個(gè)變化,自動(dòng)進(jìn)行重新構(gòu)建

構(gòu)建工具重新構(gòu)建的時(shí)候并不會(huì)將所有的資源文件全部構(gòu)建, 而是將變化了的資源文件重新構(gòu)建,再將這個(gè)變化了的資源文件和其他的資源文件合并打包

構(gòu)建完成之后能夠自動(dòng)刷新你的調(diào)試頁(yè)面(當(dāng)然如果能類似ajax無刷新加載就更好了)

核心功能輕量,通過plugin來拓展其他功能,比如編譯coffee/typescript/tpl/sass等


實(shí)現(xiàn)原理 資源文件修改自動(dòng)編譯

監(jiān)聽資源的修改實(shí)現(xiàn)自動(dòng)編譯是構(gòu)建工具要實(shí)現(xiàn)的基本功能,其原理是
node有api能夠可以監(jiān)聽單個(gè)資源文件的狀態(tài)(fs.watch),當(dāng)資源文件發(fā)生變化,能夠觸發(fā)回調(diào)通知node, 這也是許多基于node的構(gòu)建工具實(shí)現(xiàn)核心. 當(dāng)然強(qiáng)大的node社區(qū)還出了監(jiān)聽文件夾的node模塊比如Chokidar


按需構(gòu)建資源文件

構(gòu)建工具監(jiān)聽到了某個(gè)資源文件的變化,重新構(gòu)建一遍這個(gè)資源文件,然后在最后打包的階段和其他沒有變化的之前已經(jīng)構(gòu)建好的資源文件合在一起重新打包成aio(all in one)

構(gòu)建工具監(jiān)聽到了某個(gè)資源文件的變化,重新構(gòu)建一遍這個(gè)資源文件,然后在之前構(gòu)建的aio中抽離出這個(gè)資源文件變化前的邏輯,填入變化后的邏輯, 連一塊打包都省了,不過實(shí)現(xiàn)起來邏輯比較復(fù)雜.


頁(yè)面自動(dòng)加載新資源以方便調(diào)試

要實(shí)現(xiàn)這種功能,一般要在本機(jī)建立一個(gè)簡(jiǎn)單的http server,構(gòu)建工具構(gòu)建完成之后將文件整個(gè)放置在server目錄.

并且在開發(fā)環(huán)境(dev)中,構(gòu)建工具構(gòu)建出來的最終的頁(yè)面文件除了你的業(yè)務(wù)代碼,一般還會(huì)引入一段socket的相關(guān)代碼,通過socket使得client能夠一直和server保持通信.比如你構(gòu)建完成之后,通過127.0.0.1:port/index.html調(diào)試頁(yè)面,你這個(gè)index.html中嵌入了了socket的代碼(當(dāng)然,生產(chǎn)環(huán)境(prod)不會(huì)把socket的功能打包進(jìn)去的)

有了socket使得服務(wù)端和客戶端保持通信連接,服務(wù)器推動(dòng)客戶端刷新就很容易實(shí)現(xiàn)了. 處理方式有兩種,同步刷新異步熱加載

如果服務(wù)器資源發(fā)生了變化,服務(wù)器會(huì)通過socket來向客戶端發(fā)送指令,客戶端socket捕獲到這條指令,就刷新頁(yè)面來重載新的資源.

如果服務(wù)器發(fā)生了變化,服務(wù)器會(huì)通過socket來向客戶端發(fā)送指令,客戶端socket捕獲到這條指令,異步向服務(wù)器拉去新的資源,來實(shí)現(xiàn)無刷新異步重載.


通過plugin來拓展其他功能

絕大多數(shù)構(gòu)建工具都是通過插件拓展的,就不說了


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/50209.html

相關(guān)文章

  • 切圖崽的自我修養(yǎng)--[BUILD]構(gòu)建工具思路梳理

    摘要:前言之前也是從過來的,到現(xiàn)在的中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個(gè)服務(wù)之類的,現(xiàn)在就來簡(jiǎn)單梳理下思路最原始的構(gòu)建工具無非是這樣改動(dòng)了某個(gè)資源文件,要手動(dòng)運(yùn)行構(gòu)建命令才能重新構(gòu)建,重新構(gòu)建的時(shí)候構(gòu)建工具將所有資源 前言 之前也是從grunt/gulp/fis/過來的,到現(xiàn)在的webpack,中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個(gè)h...

    wfc_666 評(píng)論0 收藏0
  • 切圖崽的自我修養(yǎng)-[BUILD] webpack體驗(yàn)記錄

    摘要:體驗(yàn)記錄大法好退保平安打包工具前端工程化一直是前端的一塊重點(diǎn)之前構(gòu)建工具的選擇上,公司也是很早之前就從收攏為的確是個(gè)好工具,作為工具核心的依賴表是非常好的構(gòu)建思路,也是很多大公司一直在用的構(gòu)建工具但是個(gè)人用的非常不習(xí)慣生態(tài)不是很好它太大太重 Webpack體驗(yàn)記錄 webpack大法好 退fis保平安 打包工具前端工程化一直是前端的一塊重點(diǎn).之前構(gòu)建工具的選擇上,公司也是很早之前就從g...

    ZHAO_ 評(píng)論0 收藏0
  • 切圖崽的自我修養(yǎng)-[BUILD] webpack體驗(yàn)記錄

    摘要:體驗(yàn)記錄大法好退保平安打包工具前端工程化一直是前端的一塊重點(diǎn)之前構(gòu)建工具的選擇上,公司也是很早之前就從收攏為的確是個(gè)好工具,作為工具核心的依賴表是非常好的構(gòu)建思路,也是很多大公司一直在用的構(gòu)建工具但是個(gè)人用的非常不習(xí)慣生態(tài)不是很好它太大太重 Webpack體驗(yàn)記錄 webpack大法好 退fis保平安 打包工具前端工程化一直是前端的一塊重點(diǎn).之前構(gòu)建工具的選擇上,公司也是很早之前就從g...

    ralap 評(píng)論0 收藏0
  • 切圖崽的自我修養(yǎng)梳理Jquery API

    摘要:前言梳理一下中還不太熟悉的事件綁定統(tǒng)一用摒棄掉之前的解綁事件統(tǒng)一用語法糖,支持多個(gè)事件綁定同一個(gè)函數(shù)語法糖,支持多個(gè)事件綁定不同的函數(shù)語法糖,支持多個(gè)事件綁定不同的函數(shù)可以往里傳參可以給未創(chuàng)建的上綁定事件只能采取事件委托的形式所以寫成這樣是 前言 梳理一下Jquery中還不太熟悉的API Jquery事件綁定統(tǒng)一用on(摒棄掉之前的click,bind),解綁事件統(tǒng)一用off 語法...

    warnerwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<