webpack中resolve.extensions 说明

webpack基础笔记,后续有高阶笔记。 💂 个人网站:【紫陌】【笔记分享网站,进群就有】💅 想寻找共同学习交流、共同成长的伙伴,【前端学习交流群】 阅读详情

1. webpack resolve.extensions 说明

esolve.extensions是用在配置 在使用过程中 使用到的后缀列表,
默认是:extensions: [‘.js’, ‘.json’]
使用webpack,当导入语句时,webpack 会先去寻找.js文件,如果该文件不存在就去寻找.json文件,如果还是找不到就报错。

//如下,webpack会先去寻找dataList.js文件,如果不匹配会接着再去寻找dataList
const datatList = require(./dataList);
import dataList from "./dataList"

2. 配置resolve.extensions时,要尽可能的优化构建性能

① 后缀尝试列表要尽可能的小,不要把项目中不可能存在的情况写到后缀尝试列表中。
② 频率出现最高的文件后缀要优先放在最前面,以做到尽快的退出寻找过程。
③ 在源码中写导入语句时,要尽可能的带上后缀,从而可以避免寻找过程。

module.exports = {
	resolve: {
	// 尽可能的减少后缀尝试的可能性
	extensions: ['js'],
	},
}
webpack04 resolve resolve是webpack的配置项中一个比较重要的属性,主要用来配置模块如何解析。 例如在ES2015中调用import 'lodash',resolve能够对webpack查找lodash的方式进行修改 resolve.alias 创建import或者require的别名,来确保模块引入更简单,最常见的就是用@来代替scr目录: module.exports = { re... 阅读详情

相关推荐

安装Tailscale

如果返回 /usr/bin/tailscale 或类似路径,说明已安装但 sudo 可能找不到它。如果 which tailscale 没有输出,说明安装失败,重新执行安装步骤。Tailscale 的后台服务 tailscaled 必须运行。检查 tailscaled 服务是否运行。检查 tailscale 命令是否存在。

FairLikeSnow的博客 1471

webpack配置之Extensions

ERROR in ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/vue/App.vue Module not found: Error: Can’t resolve ‘./Cpn’ in ‘*****’ 大家在初学webpack时都会遇到这样的问题 这种报错是因为在文件中引入时例如 import Cpn from "./Cpn.vue"; requ

Mountains_river的博客 1597

从零开始掌握Python机器学习:七步教程 基础篇

前言 「开始」往往是最难的,尤其是当选择太多的时候,一个人往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后...

hcgx2018的博客 1613

webpack resolve.extensions 配置

resolve.extensions用于配置在尝试过程中用到的后缀列表,默认是:extensions: ['.js', '.json']也就是说当遇到require('./data')这样的导入语句时,Webpack 会先去寻找./data.js文件,如果该文件不存在就去寻找./data.json文件,如果还是找不到就报错。如果这个列表越长,或者正确的后缀在越后面,就会造成尝试的次数越多,所以resolve.extensions的配置也会影响到构建的性能。 在配置resolve.extensions时你需要

liyunyun0124的博客 1599

Unity采样器过多导致URP默认的Lit.Shader报错(shader error in ‘universal render pipeline/lit’: maximum ps_4_0 samp)

Shader中多个Sample Texture2D,Sample Texture3D或者类似节点的使用,该类节点都需要一个采样器,如果Shader使用超过了16个纹理采样器,如多个Base Color,Normal Map等,就容易超出。是因为每种Shader Model和GPU都有一个对纹理采样器数量的限制,是因为每个采样器都需要在显卡占用一个独立的寄存器,而寄存器的数量是有限的,当超过限制,显卡无法分配更多的寄存器给新的采样器,因此会导致编译错误。2.什么原因导致纹理采样器超出16个?

qq_41884036的博客 4233

DMDiff(2025):一种基于SAR光学数据融合的双分支多模态条件引导扩散模型-k学长深度学习专栏

DMDiff提出了一种基于扩散模型的多模态遥感图像去云方法,通过双分支网络分别提取SAR的结构信息和光学图像的光谱特征,再利用跨模态注意力机制实现特征融合。创新性地采用IAP策略直接预测无云图像而非噪声,有效解决了传统方法在遥感图像处理中易出现的光谱失真问题。实验表明该方法在PSNR等指标上显著优于现有技术,但存在计算量大、生成速度慢等不足。未来可结合加速采样策略和几何约束进一步优化。

422

webpack优化构建速度示例-resolve.extensions:

当项目不仅仅包含.js或.json文件,还包含其他类型文件(如.ts、.vue、.css)作为模块时,配置resolve.extensions可以不必要的文件搜索提高性能。可以看到优化resolve.extensions的顺序,简单的三个小模块的打包就带来了1508-1467=41ms的性能提升。

qq_36413371的博客 419

雷达参数的设置

采样率又可以叫做采样速率或者,顾名思义就是每秒采集的次数。该值越高,单位时间内对信号的采集越多,采样率的单位可以用Hz或者sps表示(sps是采样率,是每秒采样点的数量,sp表示采样点数),一般1sps=1Hz。采样时间是采样点数和采样周期的乘积得到的结果。假设实际采样率为4560ksps,采样点数为256,那么采样周期为1/4560(ms),那么ADC的采样时间就为256*(1/4560)(ms)=0.056ms=56微秒。

qq_50974341的博客 1912

resolve.extensions

resolve.extensions 在webpack.base.conf.js中,我们可以看到resolve配置,其中的extengsions是一个数组,如下所示: extensions: ['.js', '.vue', '.json'], 通过这样的配置,我们在应用组件时,就可以更为方便的使用,比如: import Hello from '@components/Hello'; 即Hello.vue这个组件我们不需要添加.vue后缀也可以引用到,如果不用extensions, 我们就必须要用@c

JasonAlonk的博客 1072

更改训练好的yolo模型中的class类名,无需重新训练

本文介绍了如何在不重新训练YOLO模型的情况下修改其类名的技巧。关键点在于理解YOLO类名存储逻辑:类名列表(names)存储在配置文件中(.yaml),而非权重文件(.pt)。通过修改配置文件的类名列表(保持类别数量nc不变),即可实现类名更新。具体步骤包括:1)准备修改后的配置文件;2)加载模型并更新类名;3)验证推理结果。该方法适用于YOLOv5/YOLOv8等版本,能有效节省开发时间,适用于类名表述调整、多场景复用等需求。注意:增减类别需重新训练,仅修改类名时需确保类别数量一致。

yolo模型训练找我,AI游戏合作找我 880

5GS 协议栈 — PFCP 协议 — URR 用量上报规则

目录 文章目录目录URR 用量上报规则UEE 的参数Usage Report 的参数示例 URR 用量上报规则 29244 5.2.2 Usage Reporting Rule URR 的作用? 用来告诉 UPF 如何对 PDR 识别的 SDF 或 Application 业务进行使用量统计信息的上报。CP 收到 Report Information 后,可用于计费或者管控(e.g. 超量限速)等用途。 URR 在哪个流程里下发的? N4 会话建立流程。 N4 会话修改流程。 URR 是怎么工作

烟云的计算 4589

TypeScript:13、Webpack 集成 TypeScript

实际项目通常需要把多个模块、样式和资源打包成浏览器可以加载的文件。Webpack 负责构建和打包,TypeScript 负责类型检查和编译,两者可以通过ts-loader集成。

sunluyi的博客 231

华为OD机试新系统真题-谁没交卷(Java /Py/C++/Go/C/Js)

华为OD机试 新系统真题【谁没交卷】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【谁没交卷】多语言题解。

qq_45776114的博客 421

webpack之resolve

webpack从entry开始递归解析所有依赖的模块,而怎么找到这些模块对应的文件,怎么更准确更快地找到这些模块所在文件,这就是resolve擅长的了。我们来了解下。 resolve.modules 默认值是["node_modules"], 意思是,webpack默认先去 当前目录的node_modules里找模块,要是没找着,就往上一级目录的node_modules找,还没找着,就继续往上,直到找到为止。 要是到头了还是没找着,那说明根本没这模块。 比如,我们会这样启动weback调试,node --i

richest_qi的博客 2857

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Webpack之resolve

文章目录resolve.extensions注意resolve.mainFilesresolve.alias resolve.extensions 我们在引入外部模块的时候,通常会有这种写法:import test from './test/test 这种写法就是想从./test目录下去引入test.js。 可是再进行React的开发时,我们经常会将文件后缀命名为.jsx。那么再通过上面那样的写法...

Meskjei的博客 1392

怀旧版电脑GBC模拟器

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

Webpack4 配置 Resolve

Webpack4 配置 Resolve Webpack在启动后会从webpack.config.js 配置文件中的enter属性指定的入口模块出发找出所有依赖的模块,Resolve 的作用就是:配置 Webpack 如何寻找模块所对应的文件。resolve 属性的值是一个对象。该对象常用的属性有: modules、extensions、alias、..., 其中modules是配置寻找模块的根目录...

liujun2son 1857

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

初识webpack(二)解析resolve、插件plugins、dev-server

用于在文件中根据resolve.mainFiles配置中指定的文件顺序查找index接下来只详细写一下两个配置项,比较常用。

DogEgg_001的博客 2130

3步解决Webpack模块解析难题:enhanced-resolve原理与实战扩展

你是否曾被`Module not found`错误困扰数小时?是否在处理第三方库路径时感到无从下手?Webpack作为前端工程化的核心工具,其模块解析系统enhanced-resolve如同隐形的导航系统,决定着项目资源的加载效率与稳定性。本文将通过3个实战步骤,带你从原理到扩展全面掌握这一核心机制,让模块路径问题从此迎刃而解。 ## 一、解析引擎:enhanced-resolve的工作原理解密...

gitblog_01010的博客 1137

彻底解决模块引用烦恼:Webpack resolve配置终极实战指南

GitHub 加速计划 / we / webpack 项目提供了一套功能齐全的 Webpack + vue-loader 配置方案,集成了热重载、代码检查、测试和 CSS 提取等功能。本文将详细介绍如何通过优化 Webpack 的 resolve 配置,解决模块引用过程中的常见问题,提升开发效率。 ## 什么是 Webpack resolve 配置? Webpack 的 resolve 配置用

gitblog_00051的博客 484

引入codemirror时报错,webpack中resolve.extensions配置产生的问题

问题 在引入codemirror的时候,找不到对应的CodeMirror对应的函数。原因在于在CodeMirror库中lib的CodeMirror文件有2个,相同的名字。 举个例子,在CodeMirror/mode/javascript下的任一个js文件,都是报错的。 这里引入了lib/CodeMirror,分析了下,是传入的CodeMirror缺失了对应的方法 我们输出JS文件引入的情况。 发现了如果没有指名后缀的话,无法找到正确的文件。 这个导致的原因是lib文件夹下存在2个相同名字的文件。

gdutRex的博客 3641

webpack配置详解【四】 -- resolve详解

resolve: 解析模块的规则 resolve.alias resolve.alias 配置项通过别名来把原导入路径映射成一个新的导入路径。例如使用以下配置: resolve: { alias: { $css: resolve(__dirname, 'src/css') } } 这样在js文件里面引用的时候可以简写文件路径 import '$css/index.css' extensions 配置省略文件路径的后缀名 resolve: { // 配置省略文件路

daodaoke的博客 3151

webpack resolve extensions 配置

配置默认扩展名 1.需要有一个默认空字符串“”,否则在require 全名的时候反而会找不到 2.默认值是[“”, “.webpack.js”, “.web.js”, “.js”]参考文档:https://webpack.github.io/docs/configuration.html

ISaiSai的专栏 1万+

深入理解webpack之resolve

相信很多用过vue-cli的朋友对都不会感到陌生,但不知有多少和我一样的朋友只知其行未解其意恰巧之前详细的查阅了相关文档,弄清楚了这个问题,在此做下记录,也希望能对读到的朋友有益。说一下题外话,真心建议大家一定要细读相关文档,很多不清楚的问题都是因为没有仔细的阅读。言归正传,webpack中使用字段来配置模块的相关解析策略。本质上是通过对resolve库的使用来解析模块路径,帮助 webpack 找到 bundle 中以require/import引入的模块代码。

liubangbo的专栏 3014

XiaoMusic 小爱音箱免费听歌:4步从部署到多房间播放

周五晚上你对小爱同学说“播放周杰伦的晴天”,音箱回了一句没有版权。XiaoMusic 是一个开源工具,它用 yt-dlp 先把歌曲下载下来,再交给小爱音箱播放,让免费听歌不再依赖音乐平台的会员。 ## 📋 项目速览 | 能力 | 说明 | |---|---| | 语音点歌 | 说“播放歌曲+歌名”自动下载并播放 | | 本地歌单 | 音乐文件夹按目录划分歌单,报目录名切换 | | 网络歌单

gitblog_00368的博客 987

Webpack中resolve配置

背景: (1)开发中为什么引入模块时,不写具体的文件后缀,也能正确加载到文件呢? (2)甚至直接引入的是一个文件夹的路径时,也能正确使用文件下的index.js文件呢? import Child from './child'; import Child from './child.js'; resolve配置: (1) 在引入模块时,如果没有写后缀,那么webpack会在该目录下去查找有没有.js或者.jsx文件,再进行引用。 (2) mainFiles中可以配置入口文件,默认是读取一个文件夹下

祥哥的说 1518

深入浅出webpack学习(5)--Resolve

今天看到webpack配置入门的一个系列,感觉不错,作为查阅资料备存。 转载一波: 这是有关书籍地址:http://webpack.wuhaolin.cn/ 这是我转载的地址:https://segmentfault.com/a/1190000013176083 Resolve webpack在启动后会从配置的入口模块触发找出所有依赖的模块,Resolve配置webpack如何寻找模块对应的文件。...

weixin_39499923的博客 314
上一篇: Axios总结(个人留存)
下一篇: devServer中的historyApiFallback说明
engineer_why
博客等级 码龄6年 233粉丝 10原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

engineer_why

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

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

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

打赏作者

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

抵扣说明:

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

余额充值