成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺析webpack源碼之CachedInputFileSystem模塊(六(1))

Channe / 2678人閱讀

摘要:原本寫的誤操作被吞了,下面是代碼記錄這個模塊主要做了緩存文件操作生成緩存容器目前他們是一樣樣的都是,區(qū)別在于調(diào)用方法傳遞參數(shù)不一樣,分別儲存不一個類型的緩存把文件信息賦值給對應屬性自定義讀取讀取文件調(diào)用對象方法分別清除對應的,是傳入什么,

原本寫的誤操作被吞了,下面是代碼記錄
這個模塊主要做了緩存文件操作

module.exports = class CachedInputFileSystem {
    constructor(fileSystem, duration) {
        this.fileSystem = fileSystem;
        //生成緩存容器,目前他們是一樣樣的都是new Storage(duration),區(qū)別在于調(diào)用方法傳遞參數(shù)不一樣,分別儲存不一個類型的緩存
        this._statStorage = new Storage(duration);
        this._readdirStorage = new Storage(duration);
        this._readFileStorage = new Storage(duration);
        this._readJsonStorage = new Storage(duration);
        this._readlinkStorage = new Storage(duration);
        // 把文件信息賦值給對應屬性
        this._stat = this.fileSystem.stat ? this.fileSystem.stat.bind(this.fileSystem) : null;
        if(!this._stat) this.stat = null;

        //...

        if(this.fileSystem.readJson) {
            this._readJson = this.fileSystem.readJson.bind(this.fileSystem);
        } else if(this.readFile) {
             // 自定義JSON讀取
            this._readJson = (path, callback) => {
                // fs.readFile讀取文件
                this.readFile(path, (err, buffer) => {
                    if(err) return callback(err);
                    let data;
                    try {
                        data = JSON.parse(buffer.toString("utf-8"));
                    } catch(e) {
                        return callback(e);
                    }
                    callback(null, data);
                });
            };
        } else {
            this.readJson = null;
        }
            //...

    
    }
    //調(diào)用Storage對象方法
    stat(path, callback) {
        this._statStorage.provide(path, this._stat, callback);
    }

    //...

    readlinkSync(path) {
        return this._readlinkStorage.provideSync(path, this._readlinkSync);
    }
    //分別清除對應的Storage,what是傳入什么,清除什么,purge的中文的意思又整肅的意思,和clear有點區(qū)別,有完整清除不能被回退的感覺
    purge(what) {
        this._statStorage.purge(what);
        this._readdirStorage.purge(what);
        this._readFileStorage.purge(what);
        this._readlinkStorage.purge(what);
        this._readJsonStorage.purge(what);
    }
};

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101200.html

相關(guān)文章

  • 淺析webpack源碼NodeEnvironmentPlugin模塊總覽(

    摘要:進入傳入地址出來一個復雜對象把掛載到對象上太復雜我們先看可以緩存輸入的文件系統(tǒng)輸入文件系統(tǒng)輸出文件系統(tǒng),掛載到對象傳入輸入文件,監(jiān)視文件系統(tǒng),掛載到對象添加事件流打開插件讀取目錄下文件對文件名進行格式化異步讀取目錄下文件同步方法就 進入webpack.js //傳入地址,new Compiler出來一個復雜對象 compiler = new Compiler(options.conte...

    ChristmasBoy 評論0 收藏0
  • 淺析webpack源碼Stat.js粗解(十)

    摘要:從出來接著我們看大法,打印一下感覺之前所以的對象都放在了一個合集里,給人而全的感覺里面主要含有一個對象,,輸出的,等給每次打包一個值,代表唯一性天啊 從compilation出來接著我們看 const stats = new Stats(compilation); Stats.js log大法,打印一下 stats let Stats = { compilation:{ ...

    Andrman 評論0 收藏0
  • 淺析webpack源碼convert-argv模塊(二)

    摘要:接下來我看看一下函數(shù)我們先按照分支走為讀取是里的對象,饒了這大的一個圈子,那么接下來一起來看一看對你的輸入配置做了怎么樣的處理吧 打開webpeck-cli下的convert-argv.js文件 // 定義options為空數(shù)組 const options = []; // webpack -d 檢查 -d指令 if (argv.d) { //... } ...

    lemon 評論0 收藏0
  • 淺析webpack源碼processOptions處理Options以及入口函數(shù)(三)

    摘要:我們打開根據(jù)上次所返回的這個因為有了上次的基礎,比較容易讀了大體邏輯是這樣的先定義一個空對象同上次的一個邏輯,還是一個目前的方式只有一個滿足如果滿足的會執(zhí)行一系列函數(shù)這個函數(shù)直接結(jié)果是的影響是打比如如果滿足的話當你的時候就會在頁面上出 我們打開bin/cli.js根據(jù)上次所返回的Options processOptions(options)這個因為有了上次的基礎,比較容易讀了,大體邏輯...

    doodlewind 評論0 收藏0
  • 淺析webpack源碼WebpackOptionsApply 模塊(七)

    摘要:還做了處理,是之所以能根據(jù)變化自己更新的核心,好凌亂,我們先從那個坑跳出來進入這個大坑進入這個頁面看到前面一大堆的模塊引入,已經(jīng)給跪了,但是馬馬虎虎的完成也比放棄好前面一大堆的引入,主要是下和文件夾下的模塊父類就只是定義了接口主要核心在方法 NodeEnvironmentPlugin還做了watch處理,NodeWatchFileSystem是webpack之所以能根據(jù)變化自己更新的核...

    AaronYuan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<