Webpack快速入门

news/2024/11/20 21:31:33/

目录

  • 一. 什么是Webpack
  • 二. Webpack安装
  • 三. 案例:JS打包
    • 1. 创建nodejs项目
    • 2. 编写js文件
    • 3. 编写webpack.config.js
    • 4. 打包
  • 四. 案例:JS合并CSS
    • 1. 安装style-loader和css-loader
    • 2. 修改webpack.config.js
    • 3. 编写css文件
    • 4. 修改main.js
    • 5、打包
    • 6、打开浏览器测试


一. 什么是Webpack

官网中文文档:https://webpack.docschina.org/

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

从图中我们可以看出,Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。
image-20210122221026758



二. Webpack安装

# 全局安装
npm install -g webpack webpack-cli# 查看是否安装成功webpack -v


三. 案例:JS打包

创建若干jscss文件,然后分别用webpack进行打包

1. 创建nodejs项目

首先创建一个webpack空文件夹,然后打开cmd,切换到当前目录,输入如下指令

npm init -y

image-20210203194014107

2. 编写js文件

在项目目录下创建src文件夹,在其中创建cssjs文件

out.js

exports.out = function (str) {console.log(str);document.write(str);
}

add.js

exports.add = function (a, b) {return a + b;
}

创建main.js:入口文件,引入上述js文件

//导入out.js
const out = require("./out.js");
//导入add.js
const add = require("./add.js");
out.out("hello" + add.add(1, 1));

3. 编写webpack.config.js

在项目目录下创建配置文件webpack.config.js,用来配置打包

以下配置含义:读取当前项目目录下src文件夹中的main.js(入口文件)内容,分析资源依赖,把相关的js文件打包,打包后的文件放入当前目录的dist文件夹下,打包后的js文件名为bundle.js

//导入path模块,Node.js内置模块
const path = require("path");//定义JS打包规则
module.exports = {entry: './src/main.js', //配置入口文件    output: {path: path.resolve(__dirname, './dist'), //指令输出路径,__dirname是一个常量表示当前文件所在路径        filename: 'bundle.js' //输出文件名称    }
}

4. 打包

然后执行webpack打包命令,webpack -h可以查看所有后缀命令
image-20210203202405452
然后在生成的dist目录下创建index.html,引用bundle.js进行测试

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./bundle.js"></script>
</body>
</html>

然后打开浏览器测试,成功!
image-20210203202913804



四. 案例:JS合并CSS

1. 安装style-loader和css-loader

Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换。

Loader 可以理解为是模块和资源的转换器。

首先我们需要安装相关Loader插件

  • css-loader 是将 css 装载到 javascript
  • style-loader 是让 javascript 认识 css
npm install --save-dev style-loader css-loader

2. 修改webpack.config.js

//导入path模块,Node.js内置模块
const path = require("path");//定义JS打包规则
module.exports = {entry: './src/main.js', //配置入口文件    output: {path: path.resolve(__dirname, './dist'), //指令输出路径,__dirname是一个常量表示当前文件所在路径        filename: 'bundle.js' //输出文件名称    },module: {rules:[{test:/\.css$/,  //把项目中所有.css结尾的文件进行打包use:["style-loader","css-loader"]}]}
}

3. 编写css文件

在src文件夹中创建style.css文件

body {background-color: yellow;
}

4. 修改main.js

修改main.js入口文件,引入style.css

//导入out.js
const out = require("./out.js");
//导入add.js
const add = require("./add.js");//导入style.css
require("./style.css")out.out("hello" + add.add(1, 1));

5、打包

打开cmd重新输入webpack命令进行打包

webpack
  • 注意:如果配置文件名不是webpack.config.js,则需要通过webpack -config 配置文件名来指定配置文件

6、打开浏览器测试

可以看到背景都变成蓝色
image-20210203213759530
我们可以查看网页源码,打开bundle.js查看
image-20210203214044054
image-20210203214052645
可以看到webpack将js和css统一打包合成一个js文件,是一个合并并加密的文件,因此webpack为安全性有了很好的保证


http://www.ppmy.cn/news/605621.html

相关文章

LeetCode简单题之字符串中的单词数

题目 统计字符串中的单词个数&#xff0c;这里的单词指的是连续的不是空格的字符。 请注意&#xff0c;你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: “Hello, my name is John” 输出: 5 解释: 这里的单词是指连续的不是空格的字符&#xff0c;所以 “Hello,”…

MongoDB从零开始详细教程(超详细讲解)

目录一、简介1. 简单介绍2. 业务应用场景3. 什么时候选择MongoDB4. 体系机构5. 数据类型6. 特点二、Windows安装&启动&连接1. 下载压缩包2. 解压3. 安装服务4. 启动服务5. shell连接登录&退出6. Compass图形化连接登录三、Linux安装&启动&连接1. 下载压缩包…

numpy数组方法

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/weixin_37887248/article/details/81744755 </div><!--一个博主专栏付费入口--><!-…

MySQL详细学习教程(建议收藏)

目录1、初识数据库1.1、什么是数据库1.2、数据库分类1.3、相关概念1.4、MySQL及其安装1.5、基本命令2、操作数据库2.1、操作数据库2.2、数据库的列类型2.3、数据库的字段属性2.4、创建数据库表2.5、数据库存储引擎2.6、修改数据库3、MySQL数据管理3.1、外键3.2、DML语言1. 添加…

python图像处理实战(三)—图像几何变换

&#x1f680;写在前面&#x1f680; &#x1f58a;个人主页&#xff1a;https://blog.csdn.net/m0_52051577?typeblog &#x1f381;欢迎各位大佬支持点赞收藏&#xff0c;三连必回&#xff01;&#xff01; &#x1f508;本人新开系列专栏—python图像处理 ❀愿每一个骤雨初…

pytorch.range() 和 pytorch.arange() 的区别

总结&#xff1a; torch.range(start1, end6) 的结果是会包含end的&#xff0c; 而torch.arange(start1, end6)的结果并不包含end。 两者创建的tensor的类型也不一样。 参考&#xff1a; torch.range torch.arange

LeetCode简单题之二进制矩阵中的特殊位置

题目 给你一个大小为 rows x cols 的矩阵 mat&#xff0c;其中 mat[i][j] 是 0 或 1&#xff0c;请返回 矩阵 mat 中特殊位置的数目 。 特殊位置 定义&#xff1a;如果 mat[i][j] 1 并且第 i 行和第 j 列中的所有其他元素均为 0&#xff08;行和列的下标均 从 0 开始 &#x…

数据结构——八大排序算法(面试必备)

目录1. 交换排序——冒泡排序2. 交换排序——快速排序3. 选择排序——简单选择排序4. 选择排序——堆排序什么是堆堆排序基本思想步骤图解代码实现5. 插入排序——简单插入排序6. 插入排序——希尔排序7. 归并排序8. 基数排序1. 交换排序——冒泡排序 从要排序序列的第一个元素…