<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        詳解webpack自定義loader初探

        來源:懂視網 責編:小采 時間:2020-11-27 22:08:54
        文檔

        詳解webpack自定義loader初探

        詳解webpack自定義loader初探:最近負責的Weex項目涉及到一些構建上的問題,需要通過自定義webpack的loader去實現,于是學習了一下這方面的知識,寫一篇文章做個總結,以免遺忘。 webpack想必前端圈的人都知道了,大多數人也都或多或少的用過。簡單的說就是它能夠加載資源文件,并對這些文
        推薦度:
        導讀詳解webpack自定義loader初探:最近負責的Weex項目涉及到一些構建上的問題,需要通過自定義webpack的loader去實現,于是學習了一下這方面的知識,寫一篇文章做個總結,以免遺忘。 webpack想必前端圈的人都知道了,大多數人也都或多或少的用過。簡單的說就是它能夠加載資源文件,并對這些文

        最近負責的Weex項目涉及到一些構建上的問題,需要通過自定義webpack的loader去實現,于是學習了一下這方面的知識,寫一篇文章做個總結,以免遺忘。

        webpack想必前端圈的人都知道了,大多數人也都或多或少的用過。簡單的說就是它能夠加載資源文件,并對這些文件進行一些處理,諸如編譯、壓縮等,最終一起打包到指定的文件中。可以說,它作為一個打包工具,在前端工程化浪潮中,起到了中流砥柱的作用。

        那webpack其中非常重要的一環就是,能夠對加載的資源文件,進行一些處理。比如把less、sass文件編譯成css文件,負責這個處理過程的,就是webpack的loader。

        什么是loader

        我們都知道webpack作為當下最火的一個前端構建工具,具有很多很實用的功能,loader就是其中之一。說的通俗一點,loader就是用于對模塊的源碼進行轉換。對于做Android的同學,大家可以把它想象成gradle中的transform task。

        loader怎么用

        在平時的開發過程中,loader的使用也是非常常見的,我們可以在工程的webpack.config.js中定義:

        module: {
         rules: [
         {
         test: /\.css$/,
         use: [
         'vue-style-loader',
         'css-loader'
         ],
         }, {
         test: /\.vue$/,
         loader: 'vue-loader',
         options: {
         loaders: {
         }
         // other vue-loader options go here
         }
         },
         {
         test: /\.(png|jpg|gif|svg)$/,
         loader: 'file-loader',
         options: {
         name: '[name].[ext]?[hash]'
         }
         }
         ]
        }
        

        可以看到,對于css文件,我們使用css-loader,對于vue文件,我們使用vue-loader,對于圖片文件,我們使用file-loader。這些loader會將對應的文件進行轉換,構建出最終的產物。

        如何自定義loader

        有了上面的經驗,我們該如何自定義一個loader呢?其實也是非常簡單的。

        首先我們創建一個js文件,就取名叫test-loader吧。

        var loaderUtils = require('loader-utils');
        
        module.exports = function(source) {
         console.log("start process code...");
        
         var options = loaderUtils.getOptions(this) || {};
         if(options !== {}) {
         var replaceMap = options["replaceMap"];
         for(var key in replaceMap) {
         console.log(source);
         source = source.replace(key, replaceMap[key]);
         console.log(source);
         }
         }
        
         return source;
        };
        
        

        這就是全部的代碼了,其實一個loader內部就是一個node模塊,代碼的編寫就和平時寫node一樣就ok了。

        test-loader的邏輯就是獲取到設置的option,并且做一個文本的替換。

        假設我們還有2個js文件,分別是test.js和index.js

        test.js

        const str = 'test is loaded';
        module.exports = str;

        index.js

        const test = require('./src/test');
        console.log(test);

        然后我們在webpack.config.js中加入我們自己的test-loader。

        {
         test: /\.js$/,
         loader: 'test-loader',
         exclude: /node_modules/,
         options: {
         replaceMap: {
         "loaded": "yeah"
         }
         }
        }
        

        其中options中,我們將“loaded”字符串替換成“yeah”。

        但是我們的loader并沒有上傳到npm中,所以我們還需要在webpack.config.js中加入下面這段代碼:

        resolveLoader: {
         modules: [path.join(__dirname, './src/loaders'), 'node_modules']
        }
        

        用于加載本地loader。

        這樣我們最終構建出來的產物中,所有的“loaded”字符串就會被替換成“yeah”了。

        小結

        這篇文章非常淺顯,主要就是講了一下loader的使用方式,其實我們熟知的很多loader都是這么做的,只不過是業務邏輯上的復雜程度不同而已,大家也可以自己試試看。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        詳解webpack自定義loader初探

        詳解webpack自定義loader初探:最近負責的Weex項目涉及到一些構建上的問題,需要通過自定義webpack的loader去實現,于是學習了一下這方面的知識,寫一篇文章做個總結,以免遺忘。 webpack想必前端圈的人都知道了,大多數人也都或多或少的用過。簡單的說就是它能夠加載資源文件,并對這些文
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久免费视频99| 久久久久成人片免费观看蜜芽| 成年美女黄网站色大免费视频| 亚洲最大福利视频网站| 免费在线看黄的网站| 久久久久久亚洲精品中文字幕| 久久精品免费视频观看| 亚洲黄色免费在线观看| 91嫩草国产在线观看免费| 亚洲欧美第一成人网站7777 | 最新亚洲成av人免费看| 永久免费精品影视网站| 狠狠色婷婷狠狠狠亚洲综合 | 最近中文字幕电影大全免费版| 亚洲综合精品一二三区在线| 嫖丰满老熟妇AAAA片免费看| 亚洲国产精品自在自线观看| 亚洲а∨天堂久久精品| 99在线免费视频| 亚洲国产人成在线观看| 国产午夜无码视频免费网站| www永久免费视频| 久久精品国产亚洲AV高清热| 成年人在线免费看视频| selaoban在线视频免费精品| 亚洲AV无码成人精品区蜜桃| 在线观看免费人成视频色| 午夜亚洲国产精品福利| 亚洲AV无码专区国产乱码电影| 久久成人国产精品免费软件| 羞羞网站在线免费观看| 久久久亚洲欧洲日产国码二区| 麻豆国产人免费人成免费视频| a级午夜毛片免费一区二区| 亚洲日韩中文字幕| 免费大黄网站在线观| 100部毛片免费全部播放完整| 深夜a级毛片免费无码| 亚洲熟妇av一区二区三区下载| 国产福利免费在线观看| 免费国产黄网站在线观看|