亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Webpack 4.X 從入門(mén)到精通 - loader(五)

Me_Kun / 3701人閱讀

摘要:處理與的語(yǔ)法大部分已經(jīng)被各在瀏覽器所支持,當(dāng)然除了萬(wàn)惡的,但是部分新增很遺憾并不被瀏覽器所支持比如內(nèi)置對(duì)象新增的一些方法和對(duì)象等。但是在這里卻不需要,是因?yàn)榈睦镆呀?jīng)把內(nèi)容添上了,就不需要?jiǎng)?chuàng)建文件了源碼下載下一篇從入門(mén)到精通第三方庫(kù)六

通過(guò)上一篇文章相信大家已經(jīng)明白了loader的概念。那這篇文章繼續(xù)介紹一些常用loader,并展現(xiàn)它的強(qiáng)大之處

處理less

lesssass的功能都一樣,這里我就以less為例,介紹其對(duì)應(yīng)loader的用法。less的語(yǔ)法對(duì)于瀏覽器那是必需不認(rèn)識(shí)的,要處理成瀏覽器認(rèn)識(shí)的需要借助兩個(gè)模塊,一個(gè)less和一個(gè)less-loader

安裝
npm i less less-loader -D
創(chuàng)建文件

結(jié)構(gòu)目錄如下圖:

index.css內(nèi)容如下:

#box{
    width: 800px;
    height: 500px;
    border: 5px solid #999;
    color: #00f;
    /*background: green;*/
    
    background: url(../images/img_01.jpg);
}

index.js內(nèi)容如下:

import "../css/index.css";    //引入css文件
import "../less/less.less";    //引入less文件
import img from "../images/img_01.jpg";

const newImg=new Image();
newImg.onload=()=>document.body.appendChild(newImg);
newImg.src=img;

less.less內(nèi)容如下

//如果對(duì)less不懂的同學(xué),可以加我微信:kaivon
@w:200px;
@border:1px solid #f00;

#box{
    width: @w;
    border: @border;
    ul{
        margin: 0;
        padding: 0;
        list-style: none;
        
        li{
            height: 30px;
            background: #ccc;
            
            a{
              color: #f00;
              &:hover{  //&為上一層選擇器
                  color: blue;
              }
            }
        }
    } 
}

template.html內(nèi)容如下:



    
        
        <%= htmlWebpackPlugin.options.title %>
    
    
        

我是陳學(xué)輝

package.json內(nèi)容如下:

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "main": "webpack.config.js",
  "scripts": {
    "build": "webpack --mode production",
    "dev": "webpack-dev-server --mode development"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^1.0.0",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.2.0",
    "less": "^3.8.1",
    "less-loader": "^4.1.0",
    "mini-css-extract-plugin": "^0.4.1",
    "url-loader": "^1.0.1",
    "webpack": "^4.16.3",
    "webpack-cli": "^3.1.0",
    "webpack-dev-server": "^3.1.5"
  }
}

webpack.config.js內(nèi)容如下:

const path=require("path");
const HtmlWebpackPlugin=require("html-webpack-plugin");
const MiniCssExtractPlugin=require("mini-css-extract-plugin");

module.exports={
    entry:"./src/js/index.js",
    output:{
        path:path.resolve(__dirname,"dist"),
        filename:"js/index.js"
    },
    plugins:[
        new HtmlWebpackPlugin({
            title:"陳學(xué)輝",
            template:"./src/template.html",
            filename:"index.html"
        }),
        new MiniCssExtractPlugin({
            filename:"css/index.css"
        }),
    ],
    devServer:{
        host:"localhost",
        port:1573,
        open:true
    },
    module:{
        rules:[
            {
                test:/.css$/,
                use:[
                    {
                        loader:MiniCssExtractPlugin.loader,
                        options:{
                            publicPath:"../"
                        }
                    },
                    "css-loader",
                ]
            },
            {
                test:/.less$/,
                use:[    //把less編譯到css文件里
                    {
                        loader:MiniCssExtractPlugin.loader,
                        options:{
                            publicPath:"../"
                        }
                    },
                    "css-loader",    //注意順序
                    "less-loader"
                ]
            },
            {
                test:/.(jpg|png|gif)$/,
                use:[
                    {
                        loader:"url-loader",
                        options:{
                            limit:5 * 1024,
                            outputPath:"images"
                        }
                    }
                ]
            }
        ]
    }
}

執(zhí)行命令npm run dev后瀏覽器里的內(nèi)容正常顯示,less文件里的代碼被編譯成真正的css代碼,同時(shí)利用MiniCssExtractPlugin.loadercss一起合并到了index.css文件里。

處理ES6與React

ES6的語(yǔ)法大部分已經(jīng)被各在瀏覽器所支持,當(dāng)然除了萬(wàn)惡的IE,但是部分新增API很遺憾并不被瀏覽器所支持:比如內(nèi)置對(duì)象新增的一些方法、SetMap對(duì)象、Generator等。ReactVue都支持一種語(yǔ)法叫JSX,這種語(yǔ)法也是不被瀏覽器所支持的,對(duì)于這兩個(gè)的處理我選擇用Babel,Babel就是為了處理這哥倆而生的。關(guān)于Babel的用法可以參考我錄制的視頻課程“NPM與模塊化開(kāi)發(fā)”

ES6
npm i babel-loader babel-core babel-preset-env babel-polyfill -D

babel-loader : 處理ES6或者React的loader

babel-core : babel運(yùn)行的核心內(nèi)容

babel-preset-env : 根據(jù)代碼自動(dòng)選擇版本(ES的版本有很多,env表示會(huì)自動(dòng)選擇版本)

babel-polyfill : 用于處理新增的API

React
npm i react react-dom babel-preset-react -D

react : react的核心內(nèi)容

react-dom : 處理react里的dom

babel-preset-react : babel處理react的組件

index.js內(nèi)容如下

import "../css/index.css";
import "../less/less.less";
import img from "../images/img_01.jpg";

import "babel-polyfill";    //處理ES6新增的API,需要導(dǎo)入這個(gè)模塊

import React from "react";    //react
import ReactDOM from "react-dom";    //react

const newImg=new Image();
newImg.onload=()=>{
    document.body.appendChild(newImg);
};
newImg.src=img;


//ES6
const fn=()=>console.log(123);

//map對(duì)象
const map=new Map();
map.set("name","kaivon");
console.log(map);

//Array.from方法
const strArr=Array.from("kaivon");
console.log(strArr);

//Object.assign方法
const t1={a:1};
Object.assign(t1,{b:2},{c:3});
console.log(t1);

//generator
function* bear(){
    console.log("熊大");
    console.log("熊二");
}
bear().next();


//react
ReactDOM.render(
    

這是JSX語(yǔ)法

, document.getElementById("box") );

webpack.config.js內(nèi)容如下:

const path=require("path");
const HtmlWebpackPlugin=require("html-webpack-plugin");
const MiniCssExtractPlugin=require("mini-css-extract-plugin");

module.exports={
    entry:"./src/js/index.js",
    output:{
        path:path.resolve(__dirname,"dist"),
        filename:"js/index.js"
    },
    plugins:[
        new HtmlWebpackPlugin({
            title:"陳學(xué)輝",
            template:"./src/template.html",
            filename:"index.html"
        }),
        new MiniCssExtractPlugin({
            filename:"css/index.css"
        }),
    ],
    devServer:{
        host:"localhost",
        port:1573,
        open:true
    },
    module:{
        rules:[
            {
                test:/.css$/,
                use:[
                    {
                        loader:MiniCssExtractPlugin.loader,
                        options:{
                            publicPath:"../"
                        }
                    },
                    "css-loader",
                ]
            },
            {
                test:/.less$/,
                use:[    //把less編譯到css文件里
                    {
                        loader:MiniCssExtractPlugin.loader,
                        options:{
                            publicPath:"../"
                        }
                    },
                    "css-loader",    //注意順序
                    "less-loader"
                ]
            },
            {
                test:/.(jpg|png|gif)$/,
                use:[
                    {
                        loader:"url-loader",
                        options:{
                            limit:5 * 1024,
                            outputPath:"images"
                        }
                    }
                ]
            },
            {
                test:/.js$/,
                use:[
                    {
                        loader:"babel-loader",
                        options:{    //env針對(duì)的是ES的版本,它會(huì)自動(dòng)選擇。react針對(duì)的就是react
                            presets: ["env","react"]
                        }
                    }
                ],
                //exclude: /node_modules/,    //不去檢查node_modules里的內(nèi)容,那里的js太多了,會(huì)非常慢
                include:path.resolve(__dirname,"src/js"),    //直接規(guī)定查找的范圍
            }
        ]
    }
}

執(zhí)行命令npm run build后,把文件在IE里面打開(kāi)看看,也是Ok的~

注意:如果用過(guò)babel的同學(xué)可能知道還需要?jiǎng)?chuàng)建一個(gè).babelrc的文件,那里面還要寫(xiě)一個(gè)對(duì)象。但是在這里卻不需要,是因?yàn)?b>babel-loader的options里已經(jīng)把內(nèi)容添上了,就不需要?jiǎng)?chuàng)建文件了

源碼下載:https://pan.baidu.com/s/1KxoQ...

下一篇:Webpack 4.X 從入門(mén)到精通 - 第三方庫(kù)(六)

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

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

相關(guān)文章

  • Webpack 4.X 入門(mén)精通 - module(四)

    摘要:這就需要把文件單獨(dú)拎出來(lái),那需要一個(gè)插件來(lái)配合才能完成版本需要以上,低版本請(qǐng)使用使用步驟安裝在里引入模塊寫(xiě)入陳學(xué)輝文件目錄會(huì)放入里寫(xiě)入代替執(zhí)行命令后可以看到目錄里已經(jīng)多了一個(gè)文件夾,這個(gè)文件夾里放了一個(gè)文件。 概念 在webpack中任何一個(gè)東西都稱為模塊,js就不用說(shuō)了。一個(gè)css文件,一張圖片、一個(gè)less文件都是一個(gè)模塊,都能用導(dǎo)入模塊的語(yǔ)法(commonjs的require,E...

    harryhappy 評(píng)論0 收藏0
  • Webpack 4.X 入門(mén)精通 - 第三方庫(kù)(六)

    摘要:在開(kāi)發(fā)的時(shí)候會(huì)時(shí)常用到第三方的庫(kù)或者框架,比如耳熟能詳?shù)?。使用第三方?kù)在入口文件當(dāng)中直接導(dǎo)入安裝目錄結(jié)構(gòu)如圖內(nèi)容如下內(nèi)容如下陳學(xué)輝內(nèi)容如下這是自帶的內(nèi)容如下內(nèi)容如下引入后打開(kāi)頁(yè)面會(huì)看到最后一個(gè)標(biāo)簽有了一個(gè)綠色的背景。 在開(kāi)發(fā)的時(shí)候會(huì)時(shí)常用到第三方的庫(kù)或者框架,比如耳熟能詳?shù)膉query。借助它們能提高開(kāi)發(fā)效率,但是如何在webpack中使用呢。這篇文章介紹兩個(gè)東西,如何使用第三方庫(kù)以及...

    dunizb 評(píng)論0 收藏0
  • Webpack 4.X 入門(mén)精通 - devServer與mode(三)

    摘要:同時(shí)它還提供了自動(dòng)刷新熱更新等功能,使開(kāi)發(fā)變得非常方便。的到來(lái)減少了很多的配置,它內(nèi)置了很多的功能。 上一篇文章里詳細(xì)介紹了一下插件的用法,這一篇文章接著豐富module.exports里的屬性。如今的前端發(fā)展已經(jīng)非常迅速了,伴隨而來(lái)的是開(kāi)發(fā)模式的轉(zhuǎn)變?,F(xiàn)在已經(jīng)不再是寫(xiě)個(gè)靜態(tài)頁(yè)面并放在瀏覽器里打開(kāi)預(yù)覽一下了。在實(shí)際的開(kāi)發(fā)中會(huì)經(jīng)常需要使用http服務(wù)器,比如之前的ajax,想要看到效果就...

    王偉廷 評(píng)論0 收藏0
  • Webpack入門(mén)精通(1)

    前言 什么是webpack 本質(zhì)上,webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)遞歸地構(gòu)建一個(gè)依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle。webpack 有哪些功能(代碼轉(zhuǎn)換 文件優(yōu)化 代碼分割 模塊合并 自...

    wangbinke 評(píng)論0 收藏0
  • Webpack入門(mén)精通(1)

    前言 什么是webpack 本質(zhì)上,webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)遞歸地構(gòu)建一個(gè)依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle。 webpack 有哪些功能(代碼轉(zhuǎn)換 文件優(yōu)化 代碼分割 模塊合并 ...

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

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

0條評(píng)論

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