在計算機(jī)編程中拗窃,流就是一個類的對象瞎领,很多文件的輸入輸出操作都以類的成員函數(shù)的方式來提供。
計算機(jī)中的流其實是一種信息的轉(zhuǎn)換随夸。它是一種有序流九默,因此相對于某一對象,通常我們把對象接收外界的信息輸入(Input)稱為輸入流宾毒,相應(yīng)地從對象向外輸出(Output)信息為輸出流驼修,合稱為輸入/輸出流(I/O Streams)。對象間進(jìn)行信息或者數(shù)據(jù)的交換時總是先將對象或數(shù)據(jù)轉(zhuǎn)換為某種形式的流诈铛,再通過流的傳輸乙各,到達(dá)目的對象后再將流轉(zhuǎn)換為對象數(shù)據(jù)。所以幢竹,可以把流看作是一種數(shù)據(jù)的載體耳峦,通過它可以實現(xiàn)數(shù)據(jù)交換和傳輸。
----------------------------------------------------------------------------------------------------------
gulp是前端開發(fā)過程中一種基于流的代碼構(gòu)建工具焕毫,是自動化項目的構(gòu)建利器蹲坷;她不僅能對網(wǎng)站資源進(jìn)行優(yōu)化,而且在開發(fā)過程中很多重復(fù)的任務(wù)能夠使用正確的工具自動完成咬荷;使用她冠句,不僅可以很愉快的編寫代碼,而且大大提高我們的工作效率幸乒。
gulp是基于Nodejs的自動任務(wù)運行器懦底, 她能自動化地完成javascript、coffee罕扎、sass聚唐、less、html/image腔召、css等文件的測試杆查、檢查、合并臀蛛、壓縮亲桦、格式化崖蜜、瀏覽器自動刷新、部署文件生成客峭,并監(jiān)聽文件在改動后重復(fù)指定的這些步驟豫领。在實現(xiàn)上,她借鑒了Unix操作系統(tǒng)的管道(pipe)思想舔琅,前一級的輸出等恐,直接變成后一級的輸入,使得在操作上非常簡單备蚓。
-------------------------------------------------------------------------------------------------------------------------------
流,簡單來說就是建立在面向?qū)ο蠡A(chǔ)上的一種抽象的處理數(shù)據(jù)的工具课蔬。在流中,定義了一些處理數(shù)據(jù)的基本操作郊尝,如讀取數(shù)據(jù)二跋,寫入數(shù)據(jù)等,程序員是對流進(jìn)行所有操作的虚循,而不用關(guān)心流的另一頭數(shù)據(jù)的真正流向同欠。流不但可以處理文件,還可以處理動態(tài)內(nèi)存横缔、網(wǎng)絡(luò)數(shù)據(jù)等多種數(shù)據(jù)形式铺遂。
而gulp正是通過流和代碼優(yōu)于配置的策略來盡量簡化任務(wù)編寫的工作。這看起來有點“像jQuery”的方法茎刚,把動作串起來創(chuàng)建構(gòu)建任務(wù)襟锐。早在Unix的初期,流就已經(jīng)存在了膛锭。流在Node.js生態(tài)系統(tǒng)中也扮演了重要的角色粮坞,類似于*nix將幾乎所有設(shè)備抽象為文件一樣,Node將幾乎所有IO操作都抽象成了stream的操作初狰。因此用gulp編寫任務(wù)也可看作是用Node.js編寫任務(wù)莫杈。當(dāng)使用流時,gulp去除了中間文件奢入,只將最后的輸出寫入磁盤筝闹,整個過程因此變得更快。