IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> webpack开发服务器运作过程 -> 正文阅读

[JavaScript知识库]webpack开发服务器运作过程

  • webpack中文文档地址: https://webpack.docschina.org/configuration/dev-server/

1.基础使用:

步骤一:创建默认打包入口文件--src/index.js

?步骤二:将需要引入的文件 引入index.js才会参与打包

  • 简单举例来说:如果你需要给.html文件添加css样式,这时候就要将创建的css文件引入到入口文件(index.js)中参与打包(yarn build),才可以在.html文件里引用到你的css样式

步骤三:执行 package.json 里 build 命令,执行 webpack 打包命令

package.json 里 build 命令--就是以下这串调试的代码:

"scripts": {
    "build":"webpack"
  }

?图片示例(不懂的可以看这张图):

步骤四:默认输出 dist / main.js 的打包结果

运行 yarn build 命令,会自己帮我们打包一个 dist/ / main.js 文件;(我们打包后的代码都在dist这个文件夹里)

2.更新打包(即重新打包)

  • 如果我们更新了自己的文件,则需要用到更新打包

步骤一:在src文件夹下建立add文件夹

步骤二:在add / add.js中写上你要添加的代码

步骤三:在index.js入口文件里引入add.js

// index.js文件
import { addFn } from './add/add'

步骤四:在入口处执行webpack打包命令查看结果

3.更改入口-出口

目标: 告诉webpack从哪开始打包, 打包后输出到哪里

????????默认入口:'./src/index.js'

????????默认出口:'./dist/main.js'

步骤一:webpack配置 - webpack.config.js

? ? ? ? 1.在src文件夹的并列处建立webpack.config.js 文件

? ? ? ? 2.在 webpack.config.js 中填入配置项

const path = require("path")

module.exports = {
    entry: "./src/main.js", // 入口
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径
        filename: "bundle.js" // 出口文件名
    }
}

步骤三:在入口处执行webpack打包命令查看结果 -- yarn build

4.webpack插件--自动生成html文件

目标: html-webpack-plugin插件, 让webpack打包后生成html文件并自动引入打包后的js

步骤一:建立src的并列文件夹pulish / index.html

在index.html文件里手写html的基本骨架

步骤二:下载自动生成html的插件

yarn add html-webpack-plugin  -D  // 直接复制这串代码下载插件

步骤三:webpack.config.js配置

// 引入自动生成 html 的插件
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    // ...省略其他代码
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/index.html' // 以此为基准生成打包后html文件
        })
    ]
}

5.webpack插件--处理css文件

目标: loaders加载器, 可让webpack处理其他类型的文件, 打包到js中

解释:因为webpack默认只认识 .js 和 .json 的文件,因此需要我们将 .css 文件引入到 .js 文件中进行打包

步骤一:新建文件:'./src/css/index.css'

步骤二:安装依赖

yarn add style-loader css-loader -D

步骤三:webpack.config.js 配置

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    // ...其他代码
    module: { 
        rules: [ // loader的规则
          {
            test: /\.css$/, // 匹配所有的css文件
            // use数组里从右向左运行
            // 先用 css-loader 让webpack能够识别 css 文件的内容并打包
            // 再用 style-loader 将样式, 把css插入到dom中
            use: [ "style-loader", "css-loader"]
          }
        ]
    }
}

步骤四:在css文件里写入你需要的样式

步骤五:将css文件引入到入口文件(index.js)

import "./css/index.css"

步骤六:在入口处执行webpack打包命令查看结果 -- yarn build

6.webpack插件--处理less文件

与 处理css文件一样,只是需要多安装一个处理less文件的插件 --?less-loader

步骤一:新建文件:'./src/less/index.less

步骤二:安装依赖

yarn add less less-loader -D

步骤三:webpack.config.js 配置

module: {
  rules: [ // loader的规则
    // ...省略其他
    {
    	test: /\.less$/,
    	// 使用less-loader, 让webpack处理less文件, 内置还会用less翻译less代码成css内容
        use: [ "style-loader", "css-loader", 'less-loader']
    }
  ]
}

步骤四:在less文件里写入你需要的样式

步骤五:将less文件引入到入口文件(index.js)

import "./less/index.less"

步骤六:在入口处执行webpack打包命令查看结果 -- yarn build

7.webpack插件--加载器--处理图片文件

步骤一:新建文件夹:'src/assets' -- 放图片

步骤二:配置?webpack.config.jsbuzhou

!!!这里有个注意点:

-------如果你是webpack5版本 --?直接配置在webpack.config.js - 的 rules里即可

{
    // 图片文件的配置(仅适用于webpack5版本)
    test: /\.(png|jpg|gif|jpeg)$/i,
    type: 'asset' // 匹配上面的文件后,webpack会把他们当做静态处理打包
    // 如果你设置的是assets模式,
    // 小于8kb的,把图片转base64 打包进js中
}

-------如果你是webpack4及以前版本 -- 则需要安装相关插件之后再配置

1.下载依赖包 --?url-loader? 和 file-loader

yarn add url-loader file-loader -D

2.webpack.config.js 配置

{
  test: /\.(png|jpg|gif|jpeg)$/i,
  use: [
    {
      loader: 'url-loader', // 匹配文件, 尝试转base64字符串打包到js中
      // 配置limit,?超过8k,?不转, file-loader复制, 随机名, 输出文件
      options: {
        limit: 8 * 1024,
      },
    },
  ],
}

步骤三:在css/less/index.less - 把小图片用做背景图

代码示例:

body{
    background: url(../assets/logo_small.png) no-repeat center;
}

步骤四:在src/main.js - 把大图插入到创建的img标签上, 添加body上显示

代码示例:

// 引入图片-使用
import imgUrl from './assets/1.gif'  // 引入一张图片
const theImg = document.createElement("img")  // 用原生js的方法创建一个 img 标签
theImg.src = imgUrl  // 给 img 的 src 属性里添加图片
document.body.appendChild(theImg) // 把 img 标签插入body 标签里

步骤五:在入口处执行webpack打包命令查看结果

8.webpack插件--加载器--处理字体文件

目标: 用asset module技术, asset/resource直接输出到dist目录下

步骤一:新建文件夹:'src/assets/fonts' -- 放字体文件

步骤二:配置webpack.config.js

!!!这里也是有个注意点:

------ 如果你是webpack5版本 -- 参照此代码

{ // webpack5默认内部不认识这些文件, 所以当做静态资源直接输出即可
    test: /\.(eot|svg|ttf|woff|woff2)$/,
    type: 'asset/resource',
    generator: {
    	filename: 'font/[name].[hash:6][ext]'
    }
}

------ 如果你是webpack4及以前版本? --?参照此代码

 { // 处理字体图标的解析
     test: /\.(eot|svg|ttf|woff|woff2)$/,
         use: [
             {
                 loader: 'url-loader',
                 options: {
                     limit: 2 * 1024,
                     // 配置输出的文件名
                     name: '[name].[ext]',
                     // 配置输出的文件目录
                     outputPath: "fonts/"
                 }
             }
         ]
 }

步骤三:在src/main.js 中引入 iconfont.css

// 引入字体图标文件
import './assets/fonts/iconfont.css'

步骤四:在publish/index.html中使用字体图标样式

<i class="iconfont icon-weixin"></i>

步骤五:在入口处执行webpack打包命令查看结果 -- yarn build

9.webpack插件--加载器--处理高版本js语法

目标: 让webpack对高版本 的js代码, 降级处理后打包

  • 为什么我们要处理高阶语法?
    • 高版本的js代码(例如:箭头函数), 打包后, 直接原封不动打入了js文件中, 遇到一些低版本的浏览器就会报错,低版本识别不了这样的箭头函数,需要有个插件自动帮我们降级,使低版本浏览器也可以识别
    • 原因是webpack 默认仅内置了 模块化的兼容性处理? ?`import ?export`
  • babel 的介绍 => 用于处理高版本 js语法 的兼容性 ?[babel官网](https://www.babeljs.cn/)

下面我们来操作以下将代码降级的具体步骤:

步骤一:安装包

yarn add -D babel-loader @babel/core @babel/preset-env

步骤二:配置 webpack.config.js文件

module: {
  rules: [
    {
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
            loader: 'babel-loader',
            options: {
                presets: ['@babel/preset-env'] // 预设:转码规则(用bable开发环境本来预设的)
            }
        }
    }
  ]
}

步骤三:在index.js中使用箭头函数(高版本js)

// 高级语法
const fn = () => {
  console.log("你好babel");
}
console.log(fn) // 这里必须打印fn 不能调用fn(), 不然webpack会精简成一句 你好babel /不会编译未使用的代码
// 没有babel集成时, 原样直接打包进lib/bundle.js
// 有babel集成时, 会翻译成普通函数打包进lib/bundle.js

步骤四:打包后观察dist/build.js -- 被转成普通函数使用了,这就是babel降级翻译的功能

10.webpack-dev-server自动刷新

目标: 启动本地服务, 可实时更新修改的代码, 打包**变化代码**到内存中, 然后直接提供端口和网页访问

步骤一:下载包

yarn add webpack-dev-server -D

?下载完之后:

1.webpack-dev-server配置 --?在webpack.config.js中添加服务器配置

module.exports = {
    // ...其他配置
    devServer: {
      port: 3000 // 端口号
    }
}

更多配置参考这里: https://webpack.docschina.org/configuration/dev-server/#devserverafter

? 步骤二:配置自定义命令 -- 在 package.json 文件下添加

scripts: {
	"build": "webpack",
	"serve": "webpack serve"
}

步骤三:运行命令-启动webpack开发服务器

yarn serve
#或者 npm run serve

<!-- 本文主要针对 webpack 的运作过程做了详细的解释,仅供了解即可,实际开发中用到vue是不需要自己手装这些插件的-->

手码不易,有问题可在下方提问...?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 11:47:14  更:2021-10-19 11:49:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 21:50:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码