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

資訊專(zhuān)欄INFORMATION COLUMN

webpack系列之loader的基本使用

xiaoxiaozi / 2306人閱讀

摘要:由于本篇我們只講的基本使用,故這里不再深入講解,有興趣的可以點(diǎn)擊這里學(xué)習(xí)。使用的方式有三種使用方式,如下配置推薦在文件中指定。下一篇會(huì)給大家介紹系列之及簡(jiǎn)單的使用

歡迎大家訪問(wèn)我的github blog查看更多文章

webpack系列之loader及簡(jiǎn)單的使用 一. loader有什么用
webpack本身只能打包Javascript文件,對(duì)于其他資源例如 css,圖片,或者其他的語(yǔ)法集比如jsx,是沒(méi)有辦法加載的。 這就需要對(duì)應(yīng)的loader將資源轉(zhuǎn)化,加載進(jìn)來(lái)。

比如
你的工程中,樣式文件都使用了less語(yǔ)法,是不能被瀏覽器識(shí)別的,這時(shí)候我們就需要使用對(duì)應(yīng)的loader,來(lái)把less語(yǔ)法轉(zhuǎn)換成瀏覽器可以識(shí)別的css語(yǔ)法。

例如一個(gè)簡(jiǎn)單的less文件:
轉(zhuǎn)換前:

.demo {
    width: 200px;
    height: 100px;
    margin: auto;
    border: 1px solid;
    p {
        font-weight:bold;
        padding-left: 30px;
    }
}

轉(zhuǎn)換后:

.demo {
    width: 200px;
    height: 100px;
    margin: auto;
    border: 1px solid;
}

.demo p {
    font-weight: bold;
    padding-left: 30px;
}

后面的案例也是拿這個(gè)less文件來(lái)做演示的。

二. loader是什么

先來(lái)看一下官方對(duì)loader的一個(gè)解釋?zhuān)?/p>

A loader is a node module exporting a function

翻譯過(guò)來(lái):loader就是一個(gè)export出來(lái)的function。

既然是 node module,所以如果你自己要自定義一個(gè)loader,完全可以這么寫(xiě):

module.exports = function (source) {
   // todo
}

解釋

其中source參數(shù)是這個(gè)loader 要處理的源文件的字符串

返回經(jīng)過(guò)"翻譯"后的webpack 能夠處理的有效模塊

如果你所寫(xiě)的 loader 需要依賴(lài)其他模塊的話,那么同樣以 module 的寫(xiě)法,將依賴(lài)放在文件的頂部引進(jìn)來(lái)即可:

var fs = require("fs")
module.exports = function (source) {
   // todo
}

如果你希望將處理后的結(jié)果(不止一個(gè))返回給下一個(gè) loader,那么就需要調(diào)用 webpack 所提供的 API。

由于本篇我們只講loader的基本使用,故這里不再深入講解,有興趣的可以點(diǎn)擊這里學(xué)習(xí)。

三. 使用loader

在看了前面的介紹后,接下來(lái)給大家介紹一下怎么使用loader。

使用loader的方式

有三種使用方式,如下:

配置(推薦):在 webpack.config.js 文件中指定 loader。

內(nèi)聯(lián):在每個(gè) import 語(yǔ)句中顯式指定 loader。

CLI:在 shell 命令中指定它們。

以上三種方式,我們?cè)陂_(kāi)發(fā)過(guò)程中推薦使用第一種方式:

比如你想使用webpack來(lái)打包樣式文件,則可以在webpack.config.js里添加如下代碼:

   module: {
       rules: [
           {
               test: /.css$/,  // 正則匹配所有.css后綴的樣式文件
               use: ["style-loader", "css-loader"] // 使用這兩個(gè)loader來(lái)加載樣式文件
           }
       ]
   } 

module.rules 允許你在 webpack 配置中指定多個(gè) loader。 這是展示 loader 的一種簡(jiǎn)明方式,并且有助于使代碼變得簡(jiǎn)潔。

上述rules的作用:
webpack在打包過(guò)程中,凡是遇到后綴為css的文件,就會(huì)使用style-loadercss-loader去加載這個(gè)文件。

四.案例

在對(duì)loader有了一個(gè)大概的認(rèn)識(shí)后,來(lái)做一個(gè)小案例,需求如下:

將上一篇(webpack系列之基本概念和使用)的demo輸出文字居中并用黑框圈起來(lái)
目錄結(jié)構(gòu)

代碼目錄結(jié)構(gòu)如下:
├── node_modules
├── app
│ ├── bundle.js
│ └── index.html
├── package-lock.json
├── package.json
├── src
│ ├── index.js
│ └── main.less
└── webpack.config.js

1. 安裝loader

我們必須使用 loader 告訴 webpack 加載 less 文件,為此,需要首先安裝相對(duì)應(yīng)的 loader

npm install --save-dev less
npm install --save-dev less-loader
npm install --save-dev css-loader
npm install --save-dev style-loader

這些loader的作用如下:

安裝less-loader后可以在js中使用require的方式來(lái)加載less文件了;

安裝css-loader后可以在js中加載css文件;

安裝style-loader的目的是為了讓加載的css作為style標(biāo)簽內(nèi)容插入到html中。

2. 配置loader

webpack.config.js代碼如下:

module.exports = {
    devtool: "eval-source-map",
    entry:  __dirname + "/src/index.js",  //入口文件
    output: {
        path: __dirname + "/app",  //打包后的文件存放的地方
        filename: "bundle.js" //打包后輸出文件的文件名
    },
    module: {
        rules: [
            {
                test: /.less$/,
                use: ["style-loader","css-loader", "less-loader"]
            }
        ]
    }
}
3.新建樣式文件

main.less代碼如下:

.demo {
    width: 200px;
    height: 100px;
    margin: auto;
    border: 1px solid;
    p {
        font-weight:bold;
        padding-left: 30px;
    }
}
4. 修改入口文件

在入口文件index.js里引入我們的樣式文件

require ("./main.less");
var element = document.createElement("div");
element.className = "demo";
var p = document.createElement("p");
p.innerText = "webpack系列之loader的基本使用!";
element.appendChild(p);
document.body.appendChild(element);
5.打包

在項(xiàng)目根目錄(webpack-demo)下執(zhí)行打包命令:

?  webpack-demo webpack

打包成功,會(huì)輸出如下:

Hash: 1bb51c6a348686a223db
Version: webpack 3.10.0
Time: 1077ms
    Asset     Size  Chunks             Chunk Names
bundle.js  53.8 kB       0  [emitted]  main
   [0] ./src/index.js 273 bytes {0} [built]
   [2] ./src/main.less 1.19 kB {0} [built]
   [2] ./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js!./src/main.less 304 bytes {0} [built]
6. 查看結(jié)果

在瀏覽器里刷新index.html
你會(huì)發(fā)現(xiàn)輸出的文字被一個(gè)黑框給圈了起來(lái),并且加粗顯示,這就表明我們的樣式文件已經(jīng)生效了,而且從截圖當(dāng)中也可以看見(jiàn)樣式文件也插入到了html中。

五.常用loader 樣式

css-loader : 解析css文件中代碼

style-loader : 將css模塊作為樣式導(dǎo)出到DOM

less-loader : 加載和轉(zhuǎn)義less文件

sass-loader : 加載和轉(zhuǎn)義sass/scss文件

腳本轉(zhuǎn)換編譯

script-loader : 在全局上下文中執(zhí)行一次javascript文件,不需要解析

babel-loader : 加載ES6 代碼后使用Babel轉(zhuǎn)義為ES5后瀏覽器才能解析

Files文件

url-loader : 多數(shù)用于加載圖片資源,超過(guò)文件大小顯示則返回data URL

raw-loader : 加載文件原始內(nèi)容(utf-8格式)

加載框架

vue-loader : 加載和轉(zhuǎn)義vue組件

react-hot-loader : 動(dòng)態(tài)刷新和轉(zhuǎn)義react組件中修改的部分

六. 總結(jié)

本篇向大家介紹了loader有什么用,什么是loader,以及怎么使用loader這些基礎(chǔ)知識(shí),如果有興趣想了解得更深入一些,可以看看怎么編寫(xiě)一個(gè)loader。
下一篇會(huì)給大家介紹:webpack系列之Plugin及簡(jiǎn)單的使用

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

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

相關(guān)文章

  • webpack系列plugin及簡(jiǎn)單使用

    摘要:系列之及簡(jiǎn)單的使用一有什么用是核心功能,通過(guò)插件可以實(shí)現(xiàn)所不能完成的復(fù)雜功能,使用豐富的自定義,可以控制編譯流程的每個(gè)環(huán)節(jié),實(shí)現(xiàn)對(duì)的自定義功能擴(kuò)展。三使用在配置文件中,向?qū)傩詡魅雽?shí)例即可。 webpack系列之plugin及簡(jiǎn)單的使用 一.plugin有什么用 plugin是webpack核心功能,通過(guò)plugin(插件)webpack可以實(shí)現(xiàn)loader所不能完成的復(fù)雜功能,使用p...

    TesterHome 評(píng)論0 收藏0
  • React 和 ES6 工作流 Webpack使用(第六部分)

    摘要:在上面的列表中,是自解釋型的。我們將使用后者。調(diào)整文件的內(nèi)容到這一步,這個(gè)應(yīng)用就具備熱刷新的功能。下一步,更新文件中的到現(xiàn)在為止,如果你在控制臺(tái)運(yùn)行壓縮文件將被創(chuàng)建并且放在路徑下面。 這是React和ECMAScript2015系列文章的最后一篇,我們將繼續(xù)探索React 和 Webpack的使用。 下面是所有系列文章章節(jié)的鏈接: React 、 ES6 - 介紹(第一部分) Rea...

    Mr_houzi 評(píng)論0 收藏0
  • React 和 ES6 工作流 Webpack使用(第六部分)

    摘要:在上面的列表中,是自解釋型的。我們將使用后者。調(diào)整文件的內(nèi)容到這一步,這個(gè)應(yīng)用就具備熱刷新的功能。下一步,更新文件中的到現(xiàn)在為止,如果你在控制臺(tái)運(yùn)行壓縮文件將被創(chuàng)建并且放在路徑下面。 這是React和ECMAScript2015系列文章的最后一篇,我們將繼續(xù)探索React 和 Webpack的使用。 下面是所有系列文章章節(jié)的鏈接: React 、 ES6 - 介紹(第一部分) Rea...

    yunhao 評(píng)論0 收藏0
  • JavaScript - 收藏集 - 掘金

    摘要:插件開(kāi)發(fā)前端掘金作者原文地址譯者插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內(nèi)優(yōu)雅的實(shí)現(xiàn)文件分片斷點(diǎn)續(xù)傳。 Vue.js 插件開(kāi)發(fā) - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。插....

    izhuhaodev 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<