(万字) webpack搭Vue项目

博文介绍:拒绝做CV前端

1. 我们平时都是使用 vue-cli 脚手架快速搭建项目(vue-cli 基于 webpack),可是我们不知道其中的原理与细节,导致我们在遇到一些细节问题无法自己配置解决。

2. 为了让我们能更好的了解 vue-cli 实现过程,我们需要学习使用 webpack 从一个 index.html 文件从零开始创建一个完整的项目(包含 babel、样式预处理器、vue、webpack插件、dev-server、proxy代理等.

目录: 

1. 什么是 webpack ?

1.1 安装 webpack :(需要 node 环境)Node.js

1.2 使用终端命令 webpack 

1.3 引入使用打包好的文件

2. 了解 node、webpack 的配置文件 ! 

2.1 package.json (属于node)

2.2 package-lock.json (node)

2.3 webpack.config.js (webpack) !

3. 入口出口(entry、output)

3.1 入口 (entry)

3.2  出口 (output)

4. loader 

4.1 先了解 webpack 打包规则

4.2  css-loader、style-loader、less-loader

4.3  file-loader、url-loader (webpack 4)

~1. file-loader

~2. url-loader

4.4  asset-module(资源模块),webpack 5

5. Babel-loader (Babel)

1. 什么是 Babel ?

2. 学会安装和配置预设:

3. 配置规则:

阶段总结:

6. Plugin (插件)

6.1. 什么是插件:

6.2. 基本使用方法 和 clean-webpack-plugin 插件

6.3. html-webpack-plugin

7. 本地服务(DevServer)

7.1. 安装和使用:

7.1.1. 安装:

7.2.2. 配置:

7.3.3. 进入服务端口

7.3.4. 自行配置端口号(port)和主机名 (hostname)

7.2. 热模块替换(HMR)

8. 配置文件分离

9. proxy 代理

10. 解析(Resolve)

11. 使用 vue 库,和 .vue 单文件组件

11.1  使用 vue 库:

11.2. vue 单文件组件


1. 什么是 webpack ?

我们先听一句官方的话:

1. webpack 是一个开源的前端打包工具。webpack 提供了前端开发缺乏的模块化开发方式,将各种静态资源视为模块,并从它生成优化过的代码。
2. 要使用 Webpack 前须先安装 Node.js。Webpack 其中一个特性是使用加载器来将资源转化成模块。开发者可以自定义加载器的顺序、格式来因应项目的需求。

小例子初识 webpack 

cd3ec385d08d49d39701e4622427098e.png

1. 我们在 index.html 里导入 index.js 

2. 再在 index.js 里从 js 文件夹导入 sayHello.js 

482da4f40c714e8b91e33e0b017ccdb6.png

c253ffef0333441dadbbd84254b5aa6e.png

为了支持这种模块化写法就需要 webpack 来打包这个文件


1.1 安装 webpack :(需要 node 环境)Node.js

终端命令:npm i webpack -g ( 全局安装 webpack )

此时注意我们需要再安装一个 webpack-cli npm install webpack-cli -g

执行 webpack -v 查看是否安装成功

1.2 使用终端命令 webpack 

首先打开终端,直接使用命令 'webpack' 就可以进行打包。

3. 打包后的文件会生成一个 dist 文件夹,放在项目根目录下,里面放着一个被打包好的 main.js 文件。main.js 如下:

c557841410294ddb8af2032caef87c31.png

2d32addd50e742ef8ebc03dae59713a1.png

1.3 引入使用打包好的文件

在 index.html 文件里引入 dist/main.js 


2. 了解 node、webpack 的配置文件 ! 

2.1 package.json (属于node)

~1. 什么是 package.json,这是一个包含项目名称、打包入口(main)、所需的依赖包的版本的配置文件,我们可以自己在根目录新建,也可以在终端输入 npm init ( 或者 npm init -y 这是一种简单的写法,可以直接生成如下配置文件)

66c1c684822b42598b4385192219e8b0.png

我们可以看见我们熟悉的东西,'main' : 'index.js',这是默认的打包入口,这就是为啥我们一开始一定要在 src 目录下新建 index.js 文件,不能改名字。

~2. 如果使用 npm init 就会让在控制台输入自定义的 "name"、"version"等

我们更推荐 npm init -y 这个命令

如图是使用 npm init 控制台显示,此时输入一个 yes 就可以得到一样的 package.json 文件,就是让你输入一些配置实际我们并不需要,只需要输入回车键,最后一步输 yes 就ok了。

45e193c9b2ce4e868ee8cd1461650bd5.png

~3. 使用一下这个文件:

修改 script(脚本) 配置项,为 "runpack": "webpack",就可以在终端输入 npm run runpack,让我们的 npm 大佬帮我们运行 webpack 啦。

注意:里面包含着我们所有依赖包和对应的的版本,执行 npm install 会按照这个文件里的版本信息来下载,下载的依赖包都会放在根目录下的 node_modules 文件夹里。

2.2 package-lock.json (node)

lock: 中文是锁的意思,就是锁定依赖包的版本防止后来因为不同的程序员使用不同的版本导致的错误和误会,所以我们需要把它们锁起来,通俗一点就是固定我们依赖包的版本,防止后期因为版本不一样导致的错误。        

3928422cbf594b08a56f50a02d524557.png

2.3 webpack.config.js (webpack) !

webpack.config.js (也可以是 webpack.config.json)文件,webpack 的所有配置都写在里面。

概念 | webpack 中文文档

先了解一下 webpack.config.js 文件的书写规则,整个文件内部使用 module.exports = { 里面书写键值对 } 导出,如下:

51fd071ff73f4070a20ee1104028f098.png


3. 入口出口(entry、output)

3.1 入口 (entry)

entry 配置项是用来指定 webpack 打包入口 js 文件的配置,可指定一个路径。此项默认配置为 ' ./src/index.js ',这也是一开始我们新建文件 index.js 并且不能改名的原因。

3.2  出口 (output)

此项指定一个对象,第一个属性 path 也是指定一个路径,默认是指定根目录下的 dist 文件夹,只

我们如果要指定需要导入一个路径( path )模块,如下:

filename 指定一个文件名,这是 index.js 被打包后的文件名,导入这个文件就可以看见效果。

const path = require('path');

2221557f9e2546af9720d27aeaca908e.png

注意:此时我们的 index.html 还是在原来的文件夹里,我们先使用这个原来的文件导入 bundle.js 看效果,后面学了 plugin 插件之后再回头解决这个问题。


4. loader 

4.1 先了解 webpack 打包规则

没有被依赖的文件(模块)是不会被打包的,比如你随便在 js 文件夹下面新建一个 element.js,这个文件是不会被 webpack 打包的,因为它没有被依赖,不需要自然不是不会打包啦,当然其他的一些静态资源(如图片、视频)会有自己的打包部署方法,后面会讲到。

注意:每次依赖的文件有修改我们都是需要重新打包的,以后使用插件(plugin)解决这个问题,先卖个关子。

webpack 作为一个中间人,把一堆文件打包成浏览器可以识别的资源,可以看出 webpack 的强大和重要性。

48e70715835745e1977fe07ac45d21e8.png

演练

我们在 js 文件夹下新建一个 element.js ,在页面上创建一个元素。 一定记得去 index.js 里导入 element.js 。

edc6d4b48b7d4b9692109c78b0ca9cb8.png

import './js/element.js'

f7e9b9cbce1d487688379c62fbb73989.png

设置样式:

写一点 css代码 在 css/element.css 文件里,如下:

41f17cd798c8428288f7cb351ca67e79.png

然后再去 index.js 或者 element.js 导入它,但是会报错

15876eab2dfb4676a3fcb072a425acb1.png

这里提到了一个叫 loader 的东西,那 loader 是什么呢?


4.2  css-loader、style-loader、less-loader

我们先了解什么是 loader ,

Vue可以用于搭建后台管理系统的模板,它可以帮助你快速配置好webpack等功能,使开发过程更加高效。 一个基于Vue的后台管理系统项目通常包括前端框架、后端框架、数据库和其他工具或库的选型。前端框架使用Vue.js 3.x,后端框架使用Node.js和Express,数据库使用MongoDB。同时,还会使用一些其他工具或库,如Axios、Element.ui、JWT、bcrypt和jsonwebtoken。 通过使用Vue实战演示,你可以学会如何开发一款后台管理系统。这个教程将从技术选型、数据库设计、前后端分离、权限管理和数据展示等方面一步步进行讲解。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [168张图,万字长文,手把手教你开发vue后台管理系统](https://blog.csdn.net/china_coding/article/details/127156532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue搭建后台管理系统模板](https://download.csdn.net/download/yuyecsdn/12151614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [手把手教你后台管理系统开发(Vue实战)](https://blog.csdn.net/2301_76720304/article/details/130387018)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

John Rivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值