【Vue】1-1、webpack的基本使用

一、什么是 Webpack

概念:

webpack 是前端项目工程化的具体解决方案。

主要功能:

它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端 JavaScript 的兼容性、性能化等强大的功能。

好处:

让程序员把工作重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。

注意:

目前 VueReact 等前端项目基本上都是基于 webpack 进行工程化开发的。

 

二、Demo

步骤:

1)新建项目空目录,并运行 npm init -y 命令,初始化包管理配置文件 package.json

2)新建 src 源代码目录

3)新建 src -> index.html 首页和 src -> index.js 脚本文件

4)初始化首页基本结构

5)运行 npm install jquery -S 命令,安装 jquery

6)通过 ES6 模块化的方式导入 jquery,实现列表隔行变色效果

执行完 npm install jquery -S 命令后会下载 jquery,并自动把 jquery 加载到 package.json 文件中

{
  "name": "change-rows-color",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "jquery": "^3.6.0"
  }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>隔行变色</title>
    <script src="./index.js"></script>
</head>
<body>
    <ul>
        <li>这是第 1 个li</li>
        <li>这是第 2 个li</li>
        <li>这是第 3 个li</li>
        <li>这是第 4 个li</li>
        <li>这是第 5 个li</li>
        <li>这是第 6 个li</li>
        <li>这是第 7 个li</li>
        <li>这是第 8 个li</li>
        <li>这是第 9 个li</li>
    </ul>
</body>
</html>
// 使用 ES6 导入 jquery
import $ from 'jquery'

// 定义 jquery 的入口函数
$(function(){
    // 实现功能
    $('li:odd').css('background-color','cyan');
    $('li:even').css('background-color','pink');
})

由于使用 ES6 语法导入 jquery,因浏览器兼容问题出现下列报错,可以使用 webpack ,解决浏览器兼容问题。

使用 npm install webpack@5.42.1 webpack-cli@4.9.0 -D 命令安装 webpack,并记录到 package.json 文件中  

{
  "name": "change-rows-color",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "jquery": "^3.6.0"
  },
  "devDependencies": {
    "webpack": "^5.42.1",
    "webpack-cli": "^4.9.0"
  }
}
/**
 * 开发阶段以及部署运行阶段都需要用到的包需要在命令行末尾添加“-S”或“--save”添加到“dependencies”的分支中
 * 只在开发阶段会使用到的包就需要在命令行末尾添加“-D”或“--save-dev”添加到“devDependencies”的分支中
 **/

 

三、配置 Webpack 

步骤:

1)在项目根目录中,创建名为 webpack.config.jswebpack 配置文件,并初始化如下的基本配置

module.exports = {
	mode:'development'	// mode 用来指定构建模式,可选择 development 和 production
}

2)在 package.jsonscripts 节点下,新增 dev 脚本如下:

"scripts":{
	"dev":"webpack" // scripts 节点下的脚本,可以通过 npm run 执行,例如:npm run dev
}

3)在终端中运行 npm run dev 命令,启动 webpack 进行项目的打包构建

最终效果:

 

四、mode 的可选值 

mode 节点的可选值有两个,分别是:

1)development

  • 开发环境

  • 不会对打包生成的文件进行代码压缩和性能优化

  • 打包速度快,适合在开发阶段使用

2)prodution

  • 生产环境

  • 会对打包生成的文件进行代码压缩和性能优化

  • 打包速度很慢,仅适合在项目发布阶段使用

 

五、webpack.config.js 文件的作用  

webpack.config.jswebpack 的配置文件。

webpack 在真正开始打包构建之前,会先读取这个配置文件,从而基于给定的配置,对项目进行打包。

由于 webpack 是基于 node.js 开发出来的打包工具,因此在它的配置文件中,支持使用 node.js 相关的语法和模块进行 webpack 的个性化配置。

六 、webpack 中的默认约定

webpack 4.x5.x 的版本中,有如下的默认约定:

  • 默认的打包入口文件为:src -> index.js

  • 默认的输出文件路径为:dist -> main.js

可以在 webpack.config.js 文件中修改打包的默认约定

webpack.config.js 配置文件中

  • 通过 entry 节点指定打包的入口

  • 通过 output 节点指定打包的出口

示例代码:  

// 导入 node.js 中专门操作路径的模块
const path = require('path')

modeule.exports = {
	entry: path.join(__dirname,'./src/index.js'),	// 打包入口文件的路径
	output:{
		path:path.join(__dirname,'./dist'),			// 输出文件的存放路径
		filename:'bundle.js'						// 输出文件的名称
	}
}

一  叶  知  秋,奥  妙  玄  心 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/352092.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM系列-7内存调优

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理&#x1f525;如果感觉博主的文…

课时5:编程语言解读

1.2.1 编程语言解读 学习目标 这一节&#xff0c;我们从 基础知识、编程语言、小结 三个方面来学习。 基础知识 程序 外在关系&#xff1a;业务数据&#xff1a;用户访问业务时候&#xff0c;产生的信息内容数据结构&#xff1a;静态的描述了数据元素之间的关系算法&#x…

PHP伪协议使用姿势

php支持的伪协议 1 file:// — 访问本地文件系统 2 http:// — 访问 HTTP(s) 网址 3 ftp:// — 访问 FTP(s) URLs 4 php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; 5 zlib:// — 压缩流 6 data:// — 数据&#xff08;RFC 2397&#xff09; 7 glob:// —…

rqt查看rosbag中视频的方法

1. 播放bag视频 执行&#xff1a; rosbag play xxx.bag2. 打开rqt_image_view 执行&#xff1a; rqt_image_view3. 在选择话题处选择图片话题

SpringBoot之分页查询的使用

背景 在业务中我们在前端总是需要展示数据&#xff0c;将后端得到的数据进行分页处理&#xff0c;通过pagehelper实现动态的分页查询&#xff0c;将查询页数和分页数通过前端发送到后端&#xff0c;后端使用pagehelper&#xff0c;底层是封装threadlocal得到页数和分页数并动态…

sqli-labs靶场(1-6关)

1、第一关 测试id1 id1加一个引号报错&#xff0c;两个引号正常&#xff0c;应该是字符&#xff0c;还有回显 猜测字段长度 id1 order by 3 -- id1 order by 4 -- 字段长度为三&#xff0c;接下来确定位置&#xff1a;id1 and 12 union select 1,2,3 -- 查出库名,及版本号id1 …

Transformer and Pretrain Language Models3-4

Transformer structure 模型结构 Transformer概述 首先回顾一下之前的RNN的一个端到端的模型&#xff0c;以下是一个典型的两层的LSTM模型&#xff0c;我们可以发现&#xff0c;这样一个RNN模型&#xff0c;一个非常重要的一个缺点就在于&#xff0c;它必须顺序地执行&#x…

项目管理平台

技术架构&#xff1a; MySQL、Servlet、JSP 功能模块&#xff1a; 从管理员角度看: 用户登入系统后&#xff0c;可以修改管理员的密码。同时具有以下功能&#xff1a; 1、管理员可以管理具体项目信息。 2、管理员可以管理项目经费信息。 3、管理员可以管理项目资源信息。 4、…

光明之盒:揭开可解释性人工智能的神秘面纱

在人工智能&#xff08;AI&#xff09;的日益普及之际&#xff0c;可解释性人工智能&#xff08;Explainable AI&#xff0c;简称XAI&#xff09;成为了桥接人机理解的关键技术。XAI不仅让人们窥视AI的内在工作原理&#xff0c;还能够提高我们对其决策过程的信任感。本文将深入…

【QT+QGIS跨平台编译】之十一:【libzip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libzip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libzip介绍 libzip是一个开源C库,用于读取,创建和修改zip文件。 libzip可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件。在不关闭存档的情况下所做的更改可以还原…

网站服务器中毒或是被入侵该怎么办?

随着互联网的普及和发展&#xff0c;网站服务器已经成为了企业和个人存储数据、展示信息的重要平台。然而&#xff0c;网络安全问题也日益突出&#xff0c;其中网站服务器中毒或被入侵的事件时有发生。一旦发生这种情况&#xff0c;不仅会导致网站无法正常运行&#xff0c;还可…

快速搭建一个基于MVC架构的Spring Boot应用

提示&#xff1a;如果对 MVC 架构模式不熟悉可以看我的博客 > MVC架构模式与三层架构 快速搭建一个基于MVC架构的Spring Boot应用 一、Web 服务二、快速构建一个Spring Web MVC的 Web 应用1.使用脚手架快速的搭建环境&#xff1a;2.准备数据库&#xff1a;3.编写Dao层访问数…

Linux修改系字符集的方法总结

引言&#xff1a; Linux系统安装后&#xff0c;发现中文显示乱码。因为系统原编码为en_US.UTF-8&#xff0c;那么怎样改为中文呢&#xff1f; 1、检查系统编码 locale英文环境如下&#xff1a; 中文环境如下&#xff1a; 2、检查是否安装中文包 #rpm -qa|grep chinese 3、安…

Spring第二讲

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://www.springframework.org/sche…

docker 修改默认存储位置

✨✨✨✨✨✨✨ &#x1f380;前言&#x1f381;查看前面docker储存位置&#x1f381;移动文件位置&#x1f381;修改配置文件docker.service&#x1f381;修改daemon.json&#x1f381;加载配置并重启 &#x1f380;前言 最近服务出现系统盘满了,发现其中docker存储占用很大一…

6.【SpringBoot3】登录优化-redis

1. SpringBoot 集成 redis 示例 在之前实现的登录接口中&#xff0c;用户登录成功后会生成一个令牌响应给浏览器&#xff0c;之后浏览器访问其他接口时&#xff0c;都要携带该令牌&#xff0c;接受拦截器的检验&#xff0c;如果令牌有效就放行&#xff0c;允许访问后续接口&am…

校招刷题指南

编程题训练逻辑思维能力&#xff0c;这是程序员需要具备的核心能力。校招还是比较看重算法能力的&#xff0c;刷题时建议分类型刷&#xff0c;先做简单题&#xff0c;再做比较困难的题&#xff1b;先刷数据结构相关的&#xff0c;然后是剑指offer的其他题目&#xff1b;刷题过程…

MySQL-删除重复数据

在实际应用中&#xff0c;遇到一个这样的问题&#xff0c;MySQL中存储的数据为资讯类数据&#xff0c;在页面展示时会出现多个平台的新闻报导相同的内容&#xff0c;导致页面会出现重复数据。因为数据是每天定期更新&#xff0c;所以最快捷有效的方式是在更新完数据后增加一个去…

【Leetcode】2861. 最大合金数

文章目录 题目思路代码结果 题目 题目链接 假设你是一家合金制造公司的老板&#xff0c;你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用&#xff0c;并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。 对于第 i 台…

C++实现推箱子游戏

推箱子游戏 运行之后的效果如视频所示&#xff0c;在完成游戏后播放音乐 准备工作&#xff1a;建立一个新的文件夹&#xff0c;并在文件夹中任意增加一张背景图片&#xff0c;以及各个部件的照片文件 因为这里用到了贴图技术&#xff0c;要使用graphic.h这个函数&#xff0c…