如何解析webpack4.0中Loader概念-創新互聯

這期內容當中小編將會給大家帶來有關如何解析webpack4.0中Loader概念,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創新互聯公司于2013年開始,是專業互聯網技術服務公司,擁有項目做網站、網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元利川做網站,已為上家服務,為利川各地企業和個人服務,聯系電話:18980820575

webpack作為前端最火的構建工具,是前端自動化工具鏈最重要的部分,使用門檻較高。本系列是筆者自己的學習記錄,比較基礎,希望通過問題 + 解決方式的模式,以前端構建中遇到的具體需求為出發點,學習webpack工具中相應的處理辦法。(本篇中的參數配置及使用方式均基于webpack4.0版本

如何解析webpack4.0中Loader概念

一. loader綜述

loaderwebpack的核心概念之一,它的基本工作流是將一個文件以字符串的形式讀入,對其進行語法分析及轉換(或者直接在loader中引入現成的編譯工具,例如sass-loader中就引入了node-sass將SCSS代碼轉換為CSS代碼,再交由css-loader處理),然后交由下一環節進行處理,所有載入的模塊最終都會經過moduleFactory處理,轉成javascript可以識別和運行的代碼,從而完成模塊的集成。

loader支持鏈式調用,所以開發上需要嚴格遵循“單一職責”原則,即每個loader只負責自己需要負責的事情:將輸入信息進行處理,并輸出為下一個loader可識別的格式。

實際開發中,很少會出現需要自己寫loader來實現復雜需求的場景,如果某個擴展名的文件無法快速集成到自動化構建工具里,估計很快就會被拋棄了,大家都那么忙是吧。但是了解loader的基本原理和編譯器的基本原理卻是非常有必要的。

二. 如何寫一個loader

如果需要編寫一個功能完整的loader,建議先到webpack的官方網站瀏覽一下loader有哪些API,地址:webpack官網-loader API,其中對于編寫同步loader異步loader如何跳過loader如何獲取options配置項等等都做了非常詳細的解釋,本篇中不再贅述。

假設現在要實現一個dash-loader,它的功能是加載并處理名稱為*.tpl.html的文件,將其變為一個CommonJs模塊。也就是說要完成一個如下的基本轉換:

轉換前的文本:

<div>
    <h4>這里是標題</h4>
    <p>這里是內容</p>    
</div>

轉換后的文本:

var str = '<div><h4>這里是標題</h4><p>這里是內容</p></div>';
module.exports = str;

那么webpack.config.js中需要增加如下的配置:

...
module:{
    rules:[{
        test: /\.tpl\.html$/,
        use:[{
            loader:'dash-loader'
        }]
    }]
}

在項目的node_modules依賴文件夾中新建dash-loader文件夾,并在其中新建一個index.js文件,內容的基本格式為:

//index.js
module.exports = function(source){
    var tpl="";
    source.split(/\r?\n/).forEach(function(line){
        line=line.trim();
        if(!line.length){
            return;
        }
        //對line進行處理...
        tpl+=line;
    });
    return "var tpl=\'" + tpl + "\'\nmodule.exports = tpl"; 
}

最終由dash-loader返回的數據就好像是從某個CommonJs模塊中讀入的一樣了。

三. loader的編譯器本質

了解了loader的基本結構,那么loader里到底應該寫點什么才能完成代碼轉換呢?這就涉及到了一個新的概念——編譯器(Compiler)。一個基本的編譯器,需要經過tokenize,parse,transform,stringify幾個核心步驟,它的應用是非常廣的,SPA中的virtual-DOM的解析,babel中的ES6語法解析等等,babel的官網曾經推薦過一個非常棒的開源項目(10k+Star),詳細講述了如何一步一步實現一個編譯器的,建議感興趣的同學可以自行學習:

【The-Super-Tiny-Compiler】——https://github.com/jamiebuilds/the-super-tiny-compiler

上述就是小編為大家分享的如何解析webpack4.0中Loader概念了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯網站制作公司行業資訊頻道。

創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。

名稱欄目:如何解析webpack4.0中Loader概念-創新互聯
文章出自:http://m.kartarina.com/article48/cdcjhp.html

成都網站建設公司_創新互聯,為您提供品牌網站設計ChatGPT網頁設計公司自適應網站云服務器電子商務

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 亚洲av无码专区在线观看下载| 亚洲中文字幕无码日韩| 亚洲av永久无码精品天堂久久| 亚洲精品无码久久久久久久 | 久久久无码中文字幕久...| 亚洲精品无码乱码成人 | 一本无码人妻在中文字幕免费| 无码人妻精品一二三区免费 | 无码的免费不卡毛片视频| 国产aⅴ无码专区亚洲av| 国产精品无码MV在线观看| 国产午夜片无码区在线播放 | 成人无码精品1区2区3区免费看| 久久无码专区国产精品发布| 国精品无码一区二区三区在线蜜臀| 亚洲中文字幕无码一去台湾| 中文字幕乱码人妻无码久久| 男人av无码天堂| 国产成人无码AV麻豆| 无码人妻AⅤ一区二区三区| 久久无码精品一区二区三区| 国产午夜无码福利在线看网站| 人妻少妇乱子伦无码视频专区 | 久久久精品人妻无码专区不卡 | 国产在线无码制服丝袜无码| 亚洲AV综合色区无码二区爱AV| 亚洲av永久无码精品漫画| 曰韩无码AV片免费播放不卡| 无码亚洲成a人在线观看| 久久久久无码精品国产不卡| 国产成A人亚洲精V品无码| 国产av无码专区亚洲av果冻传媒| 无码av天天av天天爽| 熟妇人妻无码中文字幕老熟妇 | 亚洲日韩av无码中文| 久久精品无码专区免费青青 | 天堂Aⅴ无码一区二区三区| 少妇中文无码高清| 亚洲免费日韩无码系列| 免费a级毛片无码a∨免费软件 | 影院无码人妻精品一区二区|