在計(jì)算機(jī)編程中,流就是一個(gè)類(lèi)的對(duì)象,很多文件的輸入輸出操作都以類(lèi)的成員函數(shù)的方式來(lái)提供。
計(jì)算機(jī)中的流其實(shí)是一種信息的轉(zhuǎn)換。它是一種有序流,因此相對(duì)于某一對(duì)象,通常我們把對(duì)象接收外界的信息輸入(Input)稱(chēng)為輸入流,相應(yīng)地從對(duì)象向外輸出(Output)信息為輸出流,合稱(chēng)為輸入/輸出流(I/O Streams)。對(duì)象間進(jìn)行信息或者數(shù)據(jù)的交換時(shí)總是先將對(duì)象或數(shù)據(jù)轉(zhuǎn)換為某種形式的流,再通過(guò)流的傳輸,到達(dá)目的對(duì)象后再將流轉(zhuǎn)換為對(duì)象數(shù)據(jù)。所以,可以把流看作是一種數(shù)據(jù)的載體,通過(guò)它可以實(shí)現(xiàn)數(shù)據(jù)交換和傳輸。
----------------------------------------------------------------------------------------------------------
gulp是前端開(kāi)發(fā)過(guò)程中一種基于流的代碼構(gòu)建工具,是自動(dòng)化項(xiàng)目的構(gòu)建利器;她不僅能對(duì)網(wǎng)站資源進(jìn)行優(yōu)化,而且在開(kāi)發(fā)過(guò)程中很多重復(fù)的任務(wù)能夠使用正確的工具自動(dòng)完成;使用她,不僅可以很愉快的編寫(xiě)代碼,而且大大提高我們的工作效率。
gulp是基于Nodejs的自動(dòng)任務(wù)運(yùn)行器, 她能自動(dòng)化地完成javascript、coffee、sass、less、html/image、css等文件的測(cè)試、檢查、合并、壓縮、格式化、瀏覽器自動(dòng)刷新、部署文件生成,并監(jiān)聽(tīng)文件在改動(dòng)后重復(fù)指定的這些步驟。在實(shí)現(xiàn)上,她借鑒了Unix操作系統(tǒng)的管道(pipe)思想,前一級(jí)的輸出,直接變成后一級(jí)的輸入,使得在操作上非常簡(jiǎn)單。
-------------------------------------------------------------------------------------------------------------------------------
流,簡(jiǎn)單來(lái)說(shuō)就是建立在面向?qū)ο蠡A(chǔ)上的一種抽象的處理數(shù)據(jù)的工具。在流中,定義了一些處理數(shù)據(jù)的基本操作,如讀取數(shù)據(jù),寫(xiě)入數(shù)據(jù)等,程序員是對(duì)流進(jìn)行所有操作的,而不用關(guān)心流的另一頭數(shù)據(jù)的真正流向。流不但可以處理文件,還可以處理動(dòng)態(tài)內(nèi)存、網(wǎng)絡(luò)數(shù)據(jù)等多種數(shù)據(jù)形式。
而gulp正是通過(guò)流和代碼優(yōu)于配置的策略來(lái)盡量簡(jiǎn)化任務(wù)編寫(xiě)的工作。這看起來(lái)有點(diǎn)“像jQuery”的方法,把動(dòng)作串起來(lái)創(chuàng)建構(gòu)建任務(wù)。早在Unix的初期,流就已經(jīng)存在了。流在Node.js生態(tài)系統(tǒng)中也扮演了重要的角色,類(lèi)似于*nix將幾乎所有設(shè)備抽象為文件一樣,Node將幾乎所有IO操作都抽象成了stream的操作。因此用gulp編寫(xiě)任務(wù)也可看作是用Node.js編寫(xiě)任務(wù)。當(dāng)使用流時(shí),gulp去除了中間文件,只將最后的輸出寫(xiě)入磁盤(pán),整個(gè)過(guò)程因此變得更快。