百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

使用 Vue 脚手架,为什么要学 webpack?(一)

ztj100 2025-05-03 17:57 47 浏览 0 评论

先问大家一个很简单的问题:

vue init webpack prjectName 与 vue create projectName 有什么区别呢?

它们是 Vue-cli 2 和 Vue-cli3 创建项目的两个命令,之所以两个命令不同,根本原因是 Vue-cli2 是基于webpack 3,而 vue-cli3 是基于 webpack 4 的。

所以我们先介绍 webpack 是如何管理项目的,如何把项目中 js、css、html等是如何压缩转换文件?然后学习 vue-cli 2、vue-cli 3 分别如何创建项目,以及项目结构介绍。

一、全面了解 webpack

1.1、什么是Webpack?

webpack 就是前端模块化打包工具。讲人话就是,webpack 的理念就是一切皆模块化,把一堆堆的 js、css等文件放在一个总的入口文件引入,剩下 webpack 会把引入的文件根据对应的关系合并成一个 bundle.js 。打包后的 index.html 引入 bundle就可以了。除了 css、js还有图片、字体、html模板都可以模块化打包。

如下图:

1.2、为什么要将所有资源放在一个文件内?

我们都知道,网页渲染的时候,加载的东西越少,响应的也就更快,网页的加载速度就能快好多,有时为了优化性能,我们会把资源都合并到一个文件内,导致这个文件会很大,往往会出现两个问题:

  • 当项目庞大的时候,不同页面不能做到按需加载,而且将所有的资源一并加载,耗费时间过长,性能反而降低
  • 导致依赖库之间关系混乱,当项目越来越大时,会变得难以维护。

但是对于 webpack,可以很好地解决上述两个问题,webpack 有同步和异步两种加载方式,正确配置后,可以进行按需加载。所以 webpack 是一个十分聪明很有优秀的打包工具。

1.3、为什么使用webpack ?

  1. 对模块化规范 CommonJS 、AMD、CMD支持性友好。
  2. 形成项目依赖树,每个依赖都可拆分成一个模块,进行按需加载。
  3. 有强大的插件系统,可以实现代码压缩、分包、模块热替换等,自定义模块等自动化工作。
  4. 开发配置快速高效。是前端目前最主流的模块化打包工具。

二、开始你的第一个 webpack 项目

webpack 是一个基于 node 的项目,所以使用之前我们需要安装 node.js。

node.js 官网:https://nodejs.org/zh-cn/

下载之后进行安装,安装完成之后:

使用 node -v检查 node 的版本:如:v12.18.2

使用 npm -v 检查 npm的版本

2.1、安装webpack

安装可分:为全局安装和当前项目安装。

全局安装:npm install webpack -g

在c盘下会生成 node_modules 文件夹中会包含 webpack,此时此刻我们可以使用 webpack命令了;

项目内安装:npm install webpack --save 或者npm install webpack --save-dev

npm install webpack --save 与 npm install webpack --save-dev 区别在于是否将依赖存入 dependencies 以及 devdependencies。

2.2、生成 package.json

创建一个webpack项目文件夹,进入项目文件内根目录下,执行命令:npm init

如图:根据问题提示,输入对应信息后,会在根目录下生成 package.json 文件。

2.3、新建项目内容

dist -- distribution(发布)

创建 dist 文件夹,用于存储打包之后的文件。

创建 src 文件夹,文件夹内新建 index.js 作为入口;创建index.html文件,并创建main.js文件并引入html。

2.3、配置 webpack

webpack.config.js 代码如下:

Bash
module.exports={
 entry:'./src/main.js',
 output:{
  path:'./dist',
  filename:'bundle.js'
 }
}

entry(入口):配置入口文件

output(输出):设置打包后文件存放路径(path) 和文件名(filename)。

运行命令:webpack --config webpack.config.js,进行打包。

命令报错:

  • Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
  • - configuration.output.path: The provided value "./dist" is not an absolute path!
  • -> The output directory as **absolute path** (required).

提示路径需要设置绝对路径。

2.4、打包文件

此时需要引入 node 的 path 模块。并修改 path 配置,把路径设置为当前项目根目录下。

修改 package.config.js 文件代码如下:

Bash
const path = require('path')
module.exports={
 entry:'./src/main.js',
 output:{
  path:path.resolve(__dirname,'dist'),
 filename:'bundle.js'
 }
}

重新运行命令:webpack --config webpack.config.js,进行打包。此时就会在dist文件夹内出现了一个被打包后的 bundle.js。

三、webpack 用来做什么?

以上内容讲述的打包,只是打包了js内容,具体的index.html并没有被打包到dist文件内。那是什么原因呢?

webpack 用来处理我们写的 js 代码,webpack会自动处理 js 之间相关依赖。但是开发中不仅仅只有基本的 js 代码处理,也需要加载 css、图片、也包括一些高级的ES6转ES5、TypeScript 转 ES5、将 scss、less 转 css、将 jsx.vue 文件转js文件等。

webpack 本不支持上述这些转化,此时需要对 webpack 进行扩充。下篇文章介绍webpack的 loaders 和 plugin。


点赞关注不迷路,感谢支持!

相关推荐

爬取电影视频数据(电影资源爬虫)

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。作者:yangrq1018原文链接:https://segmentfault.com/a/11900...

Python效率倍增的10个实用代码片段

引言Python是一门功能强大且灵活的编程语言,广泛应用于数据分析、Web开发、人工智能等多个领域。它的简洁语法和高可读性让开发者能够快速上手,但在实际工作中,我们常常会遇到一些重复性或繁琐的任务。这...

Python数据处理:深入理解序列化与反序列化

在现代编程实践中,数据的序列化与反序列化是数据持久化、网络通信等领域不可或缺的技术。本文将深入探讨Python中数据序列化与反序列化的概念、实现方式以及数据验证的重要性,并提供丰富的代码示例。...

亿纬锂能:拟向PKL买地,在马来西亚建立锂电池制造厂

亿纬锂能5月12日公告,亿纬马来西亚与PEMAJUKELANGLAMASDN.BHD.(PKL)签订《MEMORANDUMOFUNDERSTANDING》(谅解备忘录),亿纬马来西亚拟向PKL购买标的...

一个超强的机器学习库(spark机器学习库)

简介PyCaret...

30天学会Python编程:9. Python文件与IO操作

9.1文件操作基础9.1.1文件操作流程9.1.2文件打开模式表9-1Python文件打开模式...

Python的Pickle序列化与反序列化(python反序列化json)

动动小手,点击关注...

python进阶突破内置模块——数据序列化与格式

数据序列化是将数据结构或对象转换为可存储/传输格式的过程,反序列化则是逆向操作。Python提供了多种工具来处理不同场景下的序列化需求。一、核心内置模块...

微信聊天记录可视化工具详细介绍(微信聊天记录分析报告小程序)

功能概要能做什么...

Python常用文件操作库使用详解(python中文件操作的相关函数有哪些)

Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...

Vue3+Django4全新技术实战全栈项目(已完结)

获课》aixuetang.xyz/5739/Django与推荐算法的集成及模型部署实践...

性能调优方面,经常要优化跑的最慢的代码,教你一种快速的方法

在我们遇到性能问题的时候,很多时候需要去查看性能的瓶颈在哪里,本篇文章就是提供了多种常用的方案来监控函数的运行时间。1.time首先说明,time模块很多是系统相关的,在不同的OS中可能会有一些精度差...

Python解决读取excel数据慢的问题

前言:在做自动化测试的时候,我思考了一个问题,就是如果我们的测试用例随着项目的推进越来越多时,我们做自动化回归的时间也就越来越长,其中影响自动化测试速度的一个原因就是测试用例的读取问题。用例越多,所消...

【Python机器学习系列】基于Flask来构建API调用机器学习模型服务

这是我的第364篇...

不会用mmdet工具?速看MMDetection工具的终极指南

来源:计算机视觉工坊添加微信:dddvisiona,备注:目标检测,拉你入群。文末附行业细分群...

取消回复欢迎 发表评论: