[Node] Node.js Webpack和打包过程

Mac下Webpack初探 Webpack初探一、什么是Webpack        Webpack其实可以看做一个模块打包机,将你项目中的一些浏览器无法直接运行的文件(如 Javascript、Scss)进行打包,使之可直接供浏览器使用。二、为什么要用Webpack        看到一篇文章很详细说明了使用Webpack的原因,传送门三、使用Webpack的准备工作首先需要进行node.js的安装,我安装的是左边这个版本... 阅读详情

🖥️ Node.js专栏:Node.js 初级知识 - Webpack和打包过程
🧑‍💼 个人简介:一个不甘平庸的平凡人🍬

✨ 个人主页:CoderHing的个人主页

🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

👉 你的一键三连是我更新的最大动力❤️


目录

内置模块path

path常见的API

1 认识webpack工具

认识webpack

脚手架依赖webpack

Webpack到底是什么呢?

Webpack官方图

Vue项目加载的文件有哪些?

Webpack的使用前提

Webpack的安装

2 webpack基本打包

Webpack的默认打包

创建局部的Webpack

3 webpack 配置文件

webpack配置文件

指定配置文件

Webpack的依赖图

4 编写和打包CSS文件

css-loader的使用

CSS-loader的安装

CSS -loader 的使用方案

loader配置方式

认识style-loader

配置style=loader

5 编写和打包LESS文件

如何处理less文件?

6 postcss工具处理CSS

认识PostCSS工具

Postcss-loader

单独的postcss配置文件

postcss-preset-env


内置模块path

path模块用于对 路径和文件 进行处理 提供了很多好用的方法

如果我们在window上使用 \ 来作为分隔符开发了一个应用程序 要部署到linux上面该怎么办

显示路径会出现一些问题 ; 为了屏蔽它们之间的差异,在开发中对于路径的操作我们可以使用path模块

path常见的API

从路径中获取信息

dirname:获取文件的父文件夹

basename:获取文件名

extname:获取文件扩展名

路径的拼接: path.join

拼接绝对路径:path.resolve

path.resolve()方法 把一个路径或路径片段的序列解析为一个绝对路径

给定的路径的序列是从右往左被处理的 后面每个path被依次解析 直到构造完成一个绝对路径

在处理完所有给定path的段之后,还没有生成绝对路径,则使用当前工作目录

生成的路径被规范化并删除尾部斜杠 零长度path段被忽略

如果没有path传递段,path.resolve()将返回当前工作目录的绝对路径

1 认识webpack工具

认识webpack

目前前端的开发已经变得越来越复杂了

如 开发过程中我们需要通过 模块化的方式来开发

如 会使用一些 高级的特性来加快我们的开发效率或者安全性 如ES6+ TS开发脚本逻辑 通过sass less邓方式编写css样式代码

如 开发过程中 还希望 实时的监听文件的变化 并且 反映到浏览器上 提高开发效率

如 开发完成后 还需要将代码进行压缩 合并 以及其他相关优化

但是对于很多的前端开发者来说 不需要思考这些问题 日常开发中 根本没有面临这些问题

因为目前前端开发 通常会直接使用 三大框架来开发:Vue React Angular

事实上,这三大框架的创建过程 都是借助于脚手架(CLI)的

事实上,Vue-CLI  create-react-app Angular-CLI都是基于webpack 来帮助我们支持模块化 less TS 打包优化等

脚手架依赖webpack

Webpack到底是什么呢?

官方解释为:webpack is a static module bundler for modern JavaScript applications

webpack是一个静态的模块化打包工具 为现代的JS应用程序

打包bundler:webpack可以将帮助我们进行打包,所以是一个打包工具

静态的static:最终可以将代码打包成最终的静态资源(部署到静态服务器)

模块化module: webpack默认支持各种模块化开发 ES Module CommonJS AMD等

现在的modern:因为现代前端开发面临各种各样的问题,才催生了webpack的出现和发展

Webpack官方图

Vue项目加载的文件有哪些?

JavaScript的打包:

将ES6转换成ES5的语法;

TypeScript的处理,将其转换成JavaScript

Css的处理:

CSS文件模块的加载 提取;

Less Sass等预处理器的处理

资源文件img font

图片img文件及字体font文件的加载

HTML资源的处理:

打包HTML资源文件

处理vue项目的SFC文件.vue文件;

Webpack的使用前提

webpack官方文档:https://webpack.js.org

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

DOCUMENTATION:文档详情,也是我们最关注的!

webpack的运行是依赖Node环境的,所以电脑上必须有Node环境

Webpack的安装

webpack的安装目前分为两个:webpack webpack-cli

它们的关系是什么呢?

执行webpack命令 会执行node_modules下的.bin目录下的webpack

webpack在执行时是依赖webpack-cli的,如果没有安装就会报错

webpack-cli中代码执行时 才是真正利用webpack进行编译和打包的过程

所以安装webpack时 我们需要同时安装webpack-cli(第三方的脚手架事实上是没有使用webpack-cli的 而是类似于自己的vue-service-cli的东西)

2 webpack基本打包

Webpack的默认打包

通过webpack进行打包

在目录下 直接执行 webpack命令

webpack

生成一个dist文件夹,里面存放了一个main.js文件 就是我们打包后的文件;

这个文件中的代码被压缩和丑化

我们发现 代码中存在的ES6语法 如 箭头函数 const等 这是因为默认情况下 webpack并不清楚我们打包后的文件是否需要转成ES5之前的语法 后续我们需要通过babel进来转换和设置

我们发现是可以正常进行打包的,但有一个问题,webpack如何找到我们的入呢?

当我们运行webpack时 webpack会查找当前目录下的 src/index.js作为入口

所以 如果当前项目中没有存在src/index.js文件 那么会报错

当然 我们也可以通过配置 来指定入口和出口

JavaScript
npx webpack --entry ./src/main.js  --output-path ./build

创建局部的Webpack

前面我们直接执行webpack命令使用的是全局的webpack 如果希望使用局部的按照下面的步骤进行:

1 创建package.json文件 用于管理项目信息 库依赖等

JavaScript
npm init

2 安装局部的webpack

JavaScript
npm install webpack webpack-cli -D

3 使用局部的webpack

JavaScript
npx webpack

4 在package.json中创建scripts脚本,执行脚本打包即可

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

3 webpack 配置文件

webpack配置文件

在通常情况下,webpack需要打包的项目是非常复杂的,并且我们需要一系列的配置来满足要求,默认配置必然是不可以的

我们在根目录下创建一个webpack.config.js文件,作为webpack配置文件

JavaScript
const path = require('path')

// 导出配置信息
module.exports = {
    entry:"./src/main.js",
    output:{
        filename:"bundle.js",
        path:path.resolve(__dirname,"./dist")
    }
}

指定配置文件

如果我们的配置文件不是webpack.config.js的名字 而是其他的?

如 我们将webpack.config.js修改成xiong.config.js

这时 我们通过 --config来指定对应的配置文件

JavaScript
webpack --config xiong.config.js

但是每次执行命令来对源码进行编译 会很繁琐,所以我们可以在packa.json中增加一个脚本

JavaScript
{
Debug
    "scripts":{
        "build":"webpack --config xiong.config.js"
    },
    "devDependencies":{
        "webpack":"^5.14.0",
        "webpack-cli":"^4.3.1"
    }
}

Webpack的依赖图

webpack到底是如何对我们的项目进行打包的?

事实上 webpack在处理应用程序时 会根据命令或者配置文件找到入口文件

从入口开始 生成一个依赖关系图 这个依赖关系图 会包含应用程序中所需的所有模块(如 js css 等)

然后遍历图结构,打包成一个个模块(根据文件的不同使用不同的loader来解析)

4 编写和打包CSS文件

css-loader的使用

Loader 可以用于对 模块的源代码 进行转换

我们可以将css文件也看成一个模块,我们通过import来加载这个模块

在加载这个模块时 webpack其实并不知道如何对其进行加载,必须要指定对应的loader来完成这个功能

我们需要一个什么样的loader?

对于加载css文件来说 我们需要一个可以读取css文件的loader  

这个loader最常用的是css-loader

CSS-loader的安装

JavaScript
npm install css-loader -D

CSS -loader 的使用方案

如何使用loader来加载css文件呢? 有三种方式:

1 内联方式:

在引入的样式前加上使用的loader,并使用!分割

JavaScript
import "css-loader!../css/style.css"

2 CLI方式(webpack5中不再使用)

已淘汰..

3 配置方式

loader配置方式

我们的webpack.config.js文件中写明配置信息:

module.rules中允许我们配置多个loader(因为我们也会继续使用其他的loader,来完成其他文件的加载)

这种方式可以更好的表示loader的配置 也方便后期的维护 同时也让你对各个loader有一个全局的概览

module.rules的配置如下:

rules属性对应的值是一个数组[Rule]

数组中存放的是一个个Rule,Rule是一个对象,对象中可以设置多个属性

test属性:用于对resource(资源)进行匹配,通常会设置正则表达式

use属性:对应的值是一个数组:[UseEntry]

UseEntry是一个对象 可以通过对象的属性来设置一些其他的属性

loader:必须有一个loader属性,对应的值是一个字符串

options:可选属性 值是一个字符串或对象,值会被传入loader中

query:目前已经使用options来替代;

传递字符串(如:use:['style-loader'])是loader属性的简写方式:(如:use[{loader:'style-loader'}])

loader属性:Rule.use:[{loader}]的简写

认识style-loader

可以通过css-loader来加载css文件了

但是发现 这个css在我们的代码中没有生效(页面没效果)

为什么呢?

因为css-loader只负责将.css文件进行解析,并不会将解析之后的css插入到页面中

如果我们希望再完成 插入 style的操作,我们还需要另外一个loader 就是 style-loader

安装 style-loader

JavaScript
npm install style-loader -D

配置style=loader

在配置文件中 添加 style-loader

注:因为loader的执行顺序是从右向左(或者说 从下到上,从后到前)所以我们需要将style-loader写到css-loader的前面

JavaScript
use:[
    // 注 style-loader写到css-loader的前面
    {loader:"style-loader"}
    {loader:"css-loader"}
]

5 编写和打包LESS文件

如何处理less文件?

在开发中 可能会使用less sass styus的预处理器 来编写css样式 效率更高

那么 如何让我们的环境支持这些预处理器?

首先我们需要确定less sass 等编写的css需要通过工具转换成普通css

如 下面编写的less样式:

CSS
@fontSize: 50px;
@fontColor:blue;

.title {
    font-size: @fontSize;
    color: @fontColor;
}

可以使用less-loader来处理

先使用less工具转换到css 再用style

JavaScript
npm install less-loader -D

JavaScript
{
    test:/\.less$/,
    use:["style-loader","css-loader","less-loader"]
}

6 postcss工具处理CSS

认识PostCSS工具

什么是PostCSS呢?

他是一个通过Js来转换样式的工具

可以帮助我们进行一些CSS的转换和适配 如 自动添加浏览器前缀,css样式的重置

实现这些功能 需要借助于PostCSS对应的插件

如何使用PostCSS呢? 分为两步:

一:查找PostCSS在构建工具中的拓展,如webpack和postcss-loader;

二:选择可以添加你需要的PostCSS相关的插件

Postcss-loader

可以借助于构建工具:

在webpack中使用postcss就是使用postcss-loader来处理

我们来安装postcss-loader:

JavaScript
npm install postcss-loader -D

我们修改加载css的loader:(配置文件过多,给出一部分了)

注:因为postcss需要有对应的插件才会起效果.所以我们需要配置它的plugin

JavaScript
{
    loader:"postcss-loader",
    options:{
        postcssOptions:{
            plugins:[
                require('abtoprefixer')
            ]
        }
    }
}

单独的postcss配置文件

因为我们需要添加前缀,所以要安装autoprefixer;

我们可以将这些配置信息放到一个单独的文件中进行管理

在根目录下创建postcss.config.js

JavaScript
module.exports = {
    plugins:[
        // require("autoprefixer")
        "autoprefixer"
    ],
}

postcss-preset-env

preset => 预设

事实上,在配置postcss-loader时 我们配置插件并不需要使用autpprefixer

我们可以使用另外一个插件:postcss-preset-env

postcss-preset-env也是一个postcss的插件

它可以帮助我们将一些现代的CSS特性,转成大多数浏览器认识的CSS 且会根据目标浏览器或者运行时环境添加所需的polyfill

也包括会自动帮助我们添加autoprefixer(相当于已经内置了autoprefixer)

首先 我们需要安装它

JavaScript
npm install postcss-preset-env -D

之后 我们直接修改之前的autoorefixer即可:

JavaScript
plugins:[
    "postcss-preset-env"
],

【Vue】下载依赖包node_modules & 打包项目 Vue下载依赖包node_modules 阅读详情

相关推荐

使用Node.js进行应用程序的打包和部署

Node.js是一种基于Chrome V8引擎的JavaScript运行时环境,它可以在服务器端运行JavaScript代码。在开发Node.js应用程序时,打包和部署是非常重要的步骤,它们可以确保应用程序在生产环境中正确运行并且具有良好的性能。本文将介绍如何使用Node.js进行应用程序的打包和部署。

CodeWWWCode的博客 2823

Node-Webpack静态模块打包工具

Webpack概念 使用 Webpack 修改 Webpack 打包入口和出口 自动生成 html 文件 打包 css 模块 打包 less 模块 打包图片 babel 编译器 Webpack 开发服务器 打包模式 开发环境调错 - source map 解析别名 alias

2301_76866366的博客 931

webpack打包node.js后端项目的方法

本篇文章主要介绍了webpack打包node.js后端项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

NodeJs之使用webpack打包项目

首先要明白web开发的困境 文件依赖错综复杂 静态资源请求效率低 模块化支持不友好 浏览器对高级js支持不友好 … 因此我们要使用webpack打包项目 Webpack 为何要用::友好支持模块化、代码混淆、处理js兼容、性能优化等… 使用 [🚀第一步:]初始化项目:npm init -y [🚀第二步:]新建 src/index.html [🚀第三步:安装模块Jquery] npm install jquery [🚀第四步:测试]隔行换色 index.html <!DOCTYPE html

没有途径,只有努力 2917

4090显卡实测:PointPillars在KITTI数据集上的3D目标检测复现全流程(附避坑指南)

本文详细记录了在NVIDIA RTX 4090显卡上,从环境搭建、数据处理到模型训练与评估,完整复现PointPillars算法在KITTI数据集上进行3D目标检测的全流程。重点分享了版本配置、数据预处理、性能调优及常见问题的避坑指南,帮助开发者高效利用硬件资源,成功跑通并理解这一经典3D检测项目。

purple的博客 915

电容DAC版图布局中的对称艺术:从二维共质心到误差最小化

本文深入探讨了电容DAC版图布局中的对称艺术,重点介绍了二维共质心技术如何有效最小化误差。通过分析系统误差和随机误差的来源,详细解析了共质心布局的核心技术及优化策略,包括梯度误差补偿和寄生参数平衡方法。实战案例展示了该技术在12位SAR ADC设计中的应用效果,为高精度集成电路设计提供了重要参考。

weixin_29300241的博客 584

WebPack-打包工具

这里的入口和出口就是说 打包哪个项目 打包后输出到哪里。好的到这里最基本的打包就完成了 其他文件的打包会更新出来。这里使用的是es6规范 所以我们需要降级到es5。先打开下载好的package.json 添加一下内容。这里设置一下打包方式为webpack。新建webpack.config.js。然后我们直接 终端输入 webpack。下载完毕后配置一下入口与出口。我们只命名导出一个变量。先下载webpack。

m0_68711597的博客 1790

如何制作DOS启动盘 U盘制作DOS启动盘 HP-U盘启动DOS7 详细步骤教程 Intel网卡使用软件 bootutil lanconfig eeupdate Intel网卡修改MAC地址教程

制作DOS启动盘不是一项复杂的任务,只要按照以下简单的步骤进行操作,您就可以自己动手制作一个DOS启动盘。

lcy524514826的博客 897

webpack 的基本使用

webpack简介 webpack 是一款基于项目的打包JavaScript 应用程序的静态模块打包器,当 webpack 处理应用程序时它会将所有模块打包成一个或多个 bundle。它解决了网页请求时出现的二次请求及依赖的复杂关系,提高了网页显示的效率。 webpack 安装 1. webpack 是基于node程序编写的打包器。在使用之前需要先安装node. 直接在cmd 中输入npm ins...

weixin_43841806的博客 184

如何用capl操控程控电源(RS232)

capl脚本操控RS232

xiaohuanxiong_的博客 3993

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 494

项目实践之webpack

但,在开发中不仅由基本的js代码处理,也需要加载css、图片、也包括一些高级的将ES6转成ES5代码,将TypeScript转成ES5代码,将scss、less转成css,将.jsx、.vue文件转成js文件等。除了常见的通过 package.json 的 main 来将一个 npm 模块导出为 loader,还可以在 module.rules 中使用 loader 字段直接引用一个模块。2、webpack中的插件,就是对webpack现有功能的各种扩展,比如打包优化,文件压缩等。

云 中 谁 寄 锦 书 来 ,雁 字 注 回 时 ,月 满 西 楼 。 1113

手把手教你使用Segformer训练自己的数据

SegFormer 基于Swin transformer 修改

weixin_38353277的博客 2万+

Vue(二)vue-cli和webpack的使用

基于:【狂神说Java】Vue最新快速上手教程通俗易懂 目录1 简介2 vue-cli使用2.1 安装node.js2.2 创建工程2.3 运行项目 1 简介 vue-cli官方提供的一个脚手架,用于快速生成一个vue的项目模板; 2 vue-cli使用 2.1 安装node.js 官网node.js 安装国内node源:npm install cnpm -g 安装vue-cli,使用命令:cnpm install vue-cli -g 2.2 创建工程 随便一个目录创建文件夹:Vue 执行:vue

你佳哥 858

SOME/IP协议详解「1.1·面向服务与面向信号」

面向信号和面向服务的区别,和举例子

雪云飞星的博客 5656

【以太网硬件九】1000base-X是什么?

简要描述1000base-X物理层规范

highman110的博客 1万+

Node.js的下载与安装(附webpack安装)

Node.js官网 安装包名称: 名词解释: 安装: 测试: 备注:Node.js卸载教程

小森努力努力再努力i 472

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Vue - Webpack

文章目录一、什么是Webpack二、Webpack安装1. 全局安装webpack三、Webpack的初使用1. 在项目目录新增webpack.config.js文件2. webpack打包四、loader1. loader使用过程 一、什么是Webpack webpack是一个JavaScript应用的静态模块打包工具 二、Webpack安装 安装webpack首先需要安装Node.js, Node.js自带了软件包管理工具npm 1. 全局安装webpack npm install webpack

qq_33962481的博客 326

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

node、npm、webpack、vue-cli傻傻分不清?

● node 为了正常执行很多的代码,通过npm(Node Package Manager)工具进行管理和分发,我们会经常使用NPM来安装一些开发过程中依赖包。,浏览器端js有很多缺陷,比如不能操作本地文件呐,而node.js 可以。node是一个平台,是服务器端JavaScript的解析器,npm社区或官网是一个巨大的Node生态系统,社区成员可以随意发布和安装npm生态中的包,直接安装到你的项目中就可以使用,1-2,node、npm、webpack、vue-cli之间的联系?

伟庭师兄的博客 257

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使用VsCode进行webpack打包

前言:折腾了两天,折腾的有点伤心,以往的项目是站在大树地下使用框架自带的打包框架,当自己用webpack来实现自动打包的时候却发现,各种红~~~当自己把环境搭建好写出第一个demo的时候就发现这些过程都是很经验的积累吧.第一步:确保安装node.js,我的版本是v6.11.1webpack版本4.16第二步:1:在电脑本机建立一个新文件夹.2:打开vscode选择 文件&gt;&gt;打开文件夹....

qq_34665877的博客 3万+

webpack打包教程

基础教程 首先要保证装了nodejs和npm 第一步:创建文件夹,命名为demo 第二步:win+R,输入cmd,进入命令行窗口, 第三步:进入demo的文件目录下,首先输入d:进入D盘;再输入cd /GW/demo进入demo 第四步:npm init,初始化项目,demo文件夹下会出现一个package.json文件第五步:安装webpack4和webpack-cli 命令行输入npm i...

guowenf的博客 1483

webpack4系列教程(二):创建项目,打包第一个JS文件

1. 创建项目 1.1 初始化一个项目 首先安装nodejs,打开nodeJs官网直接下载安装即可,安装完毕后打开命令行工具,进入你的项目文件夹,执行 npm init 进行项目的初始化: 过程中会让你填写项目名、版本、描述、仓库地址、关键字等信息,可以不填一路回车,执行完毕后会在根目录下创建一个 package.json 文件,这...

weixin_33739523的博客 101

express搭建的nodejs项目使用webpack进行打包

express搭建nodejs后台接口服务进行webpack打包流程和问题记录

qq_44886882的博客 9273

webpack把vue文件编译成html,webpack配置打包vue文件

1、首先全局安裝node,和npm。檢查是否安裝成功 2、新建一個文件下,進入該文件夾。前先執行  npm init -y  然后就會在文件夾下出現一個package.json文件 然后執行  npm install webpack --save-dev 下載webpack 因為使用的webpack版本是4+的,所以還需要安裝webpack腳手架,執行  npm install webpack-c...

weixin_32512381的博客 1389

webpack打包js文件的问题

前言 这里记录下webpack打包js文件的配置和遇到的问题。因环境版本等不同,解决办法未必都是通用的,仅作为大家参考之用; 我的环境配置 macOS M1 系统 webpack版本:(全局版本)webpack 5.49.0,webpack-cli 4.7.2 node版本:v14.17.4 开发工具:webstorm 学习自建目录结构 dist目录下存放的是我们webpack打包后的最终js输出文件 node_modules 是我们安装项目本地的webpack后,目录自动生成的,全局和本地的webpa

一捌柒的博客 2363

webpack替换html js,用 webpack 替换 requirejs 打包

这篇文章里,使用requirejs对项目进行了打包,现在替换为 webpack 进行打包:可以看到项目文件夹下多了 package.json 和 webpack.config.js文件,以及 node_modules 文件夹。我在package.json 写入了webpack 打包所需要的依赖,以及定义了 scripts 字段,以便更方便的执行 webpack,但是使用webpack 之前,你还要...

weixin_28694295的博客 350
上一篇: [Node] Node.js 包管理工具详解npm yarn cnpm npx pnpm
下一篇: [Node] Node.js Webpack打包图片-Js-Vue
评论 44
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

coderHing[专注前端]

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

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

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

打赏作者

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

抵扣说明:

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

余额充值