摘要:處理與的語法大部分已經被各在瀏覽器所支持,當然除了萬惡的,但是部分新增很遺憾并不被瀏覽器所支持比如內置對象新增的一些方法和對象等。但是在這里卻不需要,是因為的里已經把內容添上了,就不需要創建文件了源碼下載下一篇從入門到精通第三方庫六
通過上一篇文章相信大家已經明白了loader的概念。那這篇文章繼續介紹一些常用loader,并展現它的強大之處
處理lessless與sass的功能都一樣,這里我就以less為例,介紹其對應loader的用法。less的語法對于瀏覽器那是必需不認識的,要處理成瀏覽器認識的需要借助兩個模塊,一個less和一個less-loader
安裝npm i less less-loader -D創建文件
結構目錄如下圖:
index.css內容如下:
#box{ width: 800px; height: 500px; border: 5px solid #999; color: #00f; /*background: green;*/ background: url(../images/img_01.jpg); }
index.js內容如下:
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內容如下
//如果對less不懂的同學,可以加我微信: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內容如下:
<%= htmlWebpackPlugin.options.title %>
package.json內容如下:
{ "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內容如下:
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:"陳學輝", 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" } } ] } ] } }
執行命令npm run dev后瀏覽器里的內容正常顯示,less文件里的代碼被編譯成真正的css代碼,同時利用MiniCssExtractPlugin.loader與css一起合并到了index.css文件里。
處理ES6與ReactES6的語法大部分已經被各在瀏覽器所支持,當然除了萬惡的IE,但是部分新增API很遺憾并不被瀏覽器所支持:比如內置對象新增的一些方法、Set和Map對象、Generator等。React與Vue都支持一種語法叫JSX,這種語法也是不被瀏覽器所支持的,對于這兩個的處理我選擇用Babel,Babel就是為了處理這哥倆而生的。關于Babel的用法可以參考我錄制的視頻課程“NPM與模塊化開發”
ES6npm i babel-loader babel-core babel-preset-env babel-polyfill -D
babel-loader : 處理ES6或者React的loader
babel-core : babel運行的核心內容
babel-preset-env : 根據代碼自動選擇版本(ES的版本有很多,env表示會自動選擇版本)
babel-polyfill : 用于處理新增的API
Reactnpm i react react-dom babel-preset-react -D
react : react的核心內容
react-dom : 處理react里的dom
babel-preset-react : babel處理react的組件
index.js內容如下
import "../css/index.css"; import "../less/less.less"; import img from "../images/img_01.jpg"; import "babel-polyfill"; //處理ES6新增的API,需要導入這個模塊 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對象 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語法
, document.getElementById("box") );
webpack.config.js內容如下:
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:"陳學輝", 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針對的是ES的版本,它會自動選擇。react針對的就是react presets: ["env","react"] } } ], //exclude: /node_modules/, //不去檢查node_modules里的內容,那里的js太多了,會非常慢 include:path.resolve(__dirname,"src/js"), //直接規定查找的范圍 } ] } }
執行命令npm run build后,把文件在IE里面打開看看,也是Ok的~
注意:如果用過babel的同學可能知道還需要創建一個.babelrc的文件,那里面還要寫一個對象。但是在這里卻不需要,是因為babel-loader的options里已經把內容添上了,就不需要創建文件了
源碼下載:https://pan.baidu.com/s/1KxoQ...
下一篇:Webpack 4.X 從入門到精通 - 第三方庫(六)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108395.html
摘要:這就需要把文件單獨拎出來,那需要一個插件來配合才能完成版本需要以上,低版本請使用使用步驟安裝在里引入模塊寫入陳學輝文件目錄會放入里寫入代替執行命令后可以看到目錄里已經多了一個文件夾,這個文件夾里放了一個文件。 概念 在webpack中任何一個東西都稱為模塊,js就不用說了。一個css文件,一張圖片、一個less文件都是一個模塊,都能用導入模塊的語法(commonjs的require,E...
摘要:在開發的時候會時常用到第三方的庫或者框架,比如耳熟能詳的。使用第三方庫在入口文件當中直接導入安裝目錄結構如圖內容如下內容如下陳學輝內容如下這是自帶的內容如下內容如下引入后打開頁面會看到最后一個標簽有了一個綠色的背景。 在開發的時候會時常用到第三方的庫或者框架,比如耳熟能詳的jquery。借助它們能提高開發效率,但是如何在webpack中使用呢。這篇文章介紹兩個東西,如何使用第三方庫以及...
摘要:同時它還提供了自動刷新熱更新等功能,使開發變得非常方便。的到來減少了很多的配置,它內置了很多的功能。 上一篇文章里詳細介紹了一下插件的用法,這一篇文章接著豐富module.exports里的屬性。如今的前端發展已經非常迅速了,伴隨而來的是開發模式的轉變?,F在已經不再是寫個靜態頁面并放在瀏覽器里打開預覽一下了。在實際的開發中會經常需要使用http服務器,比如之前的ajax,想要看到效果就...
前言 什么是webpack 本質上,webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。當 webpack 處理應用程序時,它會遞歸地構建一個依賴關系圖(dependency graph),其中包含應用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個 bundle。webpack 有哪些功能(代碼轉換 文件優化 代碼分割 模塊合并 自...
前言 什么是webpack 本質上,webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。當 webpack 處理應用程序時,它會遞歸地構建一個依賴關系圖(dependency graph),其中包含應用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個 bundle。 webpack 有哪些功能(代碼轉換 文件優化 代碼分割 模塊合并 ...
閱讀 1336·2021-11-25 09:43
閱讀 1895·2021-11-12 10:36
閱讀 5967·2021-09-22 15:05
閱讀 3480·2019-08-30 15:55
閱讀 2005·2019-08-26 14:06
閱讀 3641·2019-08-26 12:17
閱讀 492·2019-08-23 17:55
閱讀 2448·2019-08-23 16:23