PWA-manifest文件添加

网站添加PWA支持,仅需三步,无视框架的类型 如果你的是Vue项目原理也是一样的。 阅读详情

https://developer.mozilla.org/zh-CN/docs/Learn

只能在https://或http://localhost的网址运行

普通的网页:没有manifest文件

在这里插入图片描述

新建mainfest文件:mainfest.webmanifest/manifest.json

{
    "name": "用于指定应用的名称,用户安装横幅提示的名称,和启动画面中的文字",
    "short_name": " 应用的短名称,主屏幕显示",
    "display": "standalone",
    "orientation": "landscape",
    "start_url": "login.html",
    "theme_color": "purple",
    "background_color": "purple"
    }

display: 用于指定app的显示模式
start url: 指定用户从设备启动应用程序时加载的URL, 可以是绝对路径和相对路径如/index.html

<link rel="manifest" href="manifest.json">

在这里插入图片描述
出现访问问题:

Access to manifest at 'file:///C:/Users/%E6%9D%8E%E7%99%BD/Desktop/PWA/manifest.json' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.

解决:

在这里插入图片描述
在这里插入图片描述

成功显示,可在手机端添加了

在这里插入图片描述
在这里插入图片描述

跨域解决之JSONP和CORS的详细介绍
添加链接描述
添加链接描述
解决 Chrome 浏览器跨域加载本地文件的问题
版本:87
在这里插入图片描述

掌控Web未来:WebKit中Web应用清单(Manifest)的全面支持 Web应用清单,通常指的是文件,是渐进式Web应用(PWA)的核心组成部分。它为Web应用提供了一个声明式接口,允许Web页面在没有浏览器传统界面的情况下运行,使得Web应用能够更接近原生应用的体验。WebKit作为许多现代浏览器的内核,对Web应用清单提供了全面的支持。本文将详细介绍WebKit对Web应用清单的支持,并提供实际的代码示例。 阅读详情

相关推荐

探讨 Vue CLI 中的 PWA 插件如何集成 Service Worker,实现离线缓存、推送通知和添加到主屏幕功能。

你可以把它想象成一个默默守护你的应用的管家,在你网络不好的时候,还能给你端茶倒水(提供缓存)。各位观众老爷,晚上好!我是今晚的讲师,今天咱们不聊风花雪月,就聊聊Vue CLI的PWA插件,看看它怎么把Service Worker这玩意儿玩得转,让你的Vue应用也能离线可用,还能推送通知,甚至能添加到主屏幕,瞬间逼格满满。通过 Vue CLI PWA 插件,我们可以很方便地将 PWA 功能集成到 Vue 应用中,让你的网站拥有离线缓存、推送通知和添加到主屏幕等特性,提升用户体验,让你的网站更像原生 App。

weixin_41455464的博客 783

使用Manifest文件添加到你的网站中,让你的WebApp更“Native”

本文主要探索如何让被添加到桌面的Web App具有更贴近Native App的使用体验(桌面图标、开屏页、shell…)。因此,我们使用了Web App Manifest。通过我们添加manifest文件,并在HTML中设置相应的meta标签来使用它即可;而在safari与ie中,可以通过一些特有的meta、link标签来实现。是不是很简单,很方便?这就使得我们能够以很低成本的改动我们Web App。

1648

第二十一篇: `man`, `tldr`, `explain` - 授人以渔的“终极指令”

我们已经一起学习了19个(组)关键命令,从nvidia-smi到kubectl。但这只是GPU运维武器库中的一小部分。技术日新月异,新的工具、新的参数会不断涌现。这个系列的真正目的,不仅是教会你使用这19件“兵器”,更是希望你掌握学习任何一件新兵器的方法论。这套方法论就是你的“终极指令”。授人以鱼不如授人以渔。至此,《GPU运维指令集:20个关键命令的战地手册》系列已全部完结。我们从nvidia-smi出发,一路探索了监控、诊断、容器、集群、网络、性能等各个维度的命令,最后用自动化脚本将它们串联,又用。

weixin_42587823的博客 1350

Web App Manifest

简介 Web应用程序清单在一个JSON文本文件中提供有关应用程序的信息(如名称,作者,图标和描述)。manifest 的目的是将Web应用程序安装到设备的主屏幕,为用户提供更快的访问和更丰富的体验。 Web应用程序清单是被称为渐进式Web应用程序(PWA)的Web技术集合的一部分, 它们是可以安装到设备的主屏幕的网络应用程序,而不需要用户通过应用商店,伴随着其他功能, 比如离线可用和接收推送通知。...

A杨国璇的博客 631

EG800K 4G模块AT指令避坑指南:让你的STM32物联网项目稳定连接云端

本文详细解析了EG800K 4G模块在STM32物联网项目中的AT指令应用避坑指南,涵盖从底层协议到云端稳定的全链路优化策略。通过实战案例和防护机制,帮助开发者解决常见通信陷阱,提升云端通信的稳定性和效率。

weixin_26834815的博客 288

从零做出可发布的2D冒险游戏!Unity全流程实战指南:从资源搭建到打包发布,新手也能跟着做

项目配置→资源导入→核心模块开发→关卡设计→调试→打包发布;玩家控制→敌人AI→道具系统→UI系统→游戏管理器→音效系统;新手开发重点:先实现核心玩法(移动、跳跃、攻击),再补充UI、音效、存档等辅助功能;调试是关键:每实现一个功能就测试,避免最后一堆bug难以定位。从零做一款完整的2D冒险游戏,能快速提升你的Unity综合能力——不仅能掌握C#编程、2D物理、UI系统,还能理解游戏开发的完整流程。先做出基础版,再慢慢迭代优化,你会发现游戏开发并没有想象中那么难。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1176

web app manifest文件清单详解说明

是一个 JSON 文件,它告诉浏览器您的Web应用程序以及在用户移动设备或桌面上“安装”时它应该如何表现。Chrome需要提供清单才能显示“添加到主屏幕”提示。典型的清单文件包括有关应用程序名称,应使用的图标,启动时应启动的start_url等信息。

1784

C#中的Chart控件——当数据源很多时可以显示进度条拉动观察,也可以记录到后台文本详细对照

C#中的Chart控件——当数据源很多时可以显示进度条拉动观察,也可以记录到后台文本详细对照下面进行详细步骤说明,感兴趣的同学可以看一下: 1简单示例(一条线): 2.数据源随着时间不断变化,进度条变化 。多条线: 3.看在整段时期内的数据大体图(消去或出现)进度条: 4.后台将时刻记录变化记录到一个txt文本里以供详细校验: 话不多说上码: using System; using Sys...

帅boy的博客 4308

Webpack PWA Manifest 使用教程

Webpack PWA Manifest 使用教程 项目介绍 Webpack PWA Manifest 是一个用于生成 Progressive Web App (PWA) 清单文件的 Webpack 插件。该插件可以帮助开发者轻松地为他们的 Web 应用添加 PWA 功能,包括生成 manifest.json 文件和图标集。 项目快速启动 安装 首先,你需要安装 webpack-pwa-manif...

gitblog_00353的博客 603

使用MATLAB/Simulink搭建一个简化的无人机螺旋桨气动特性模型,并通过仿真验证其基本功能

螺旋桨概述特点:螺旋桨通过旋转产生推力,推动无人机前进或上升。关键参数直径(D):影响推力和功率消耗。螺距(P):定义了螺旋桨每转一圈理论上前进的距离。效率(η):衡量螺旋桨将机械能转化为推力的有效性。应用场景:航拍摄影、农业监测、物流配送等。仿真目标搭建一个简化的无人机螺旋桨气动特性模型,涵盖从电机输入到螺旋桨输出推力的过程。分析不同条件下的系统响应特性(如推力、功率消耗),并探讨优化螺旋桨设计的方法。定义螺旋桨的一些基本物理参数,如直径、螺距、推力系数、功率系数等。使用Constant。

xiaoheshang_123的博客 428

zynq的vitis工程烧录到Winbond(华邦)型号W25Q256JVEQ的QSPI FLAHS

vitis2023.1直接支持W25Q256JVEQ。

FPGA艺术家的博客 676

【PWA】关于PWA的实操以及使用经验总结

什么是PWA如何给项目加上PWA优缺点增强我们的 PWA写在后面关于标题的说明:实操: 实际操作PWA什么是PWAPWA是渐进式 Web 应用, 类似于原生 App 的体验。当我们在手机浏览器上打开网页时,然后通过浏览器的 “更多” 功能,选择添加到主屏幕。这个时候,我们的手机桌面上会生成一个当前网页的 “快捷入口”。如果你的网站没有加PWA的话,那么,手机桌面上生成的只是网页的一个“快捷方式”,从桌面上点击进入,依然是用浏览器打开。如果你的网站加上了PWA。

qiqiyuer的博客 2084

基于树莓派4B设计的厨房环境监测系统_368

本项目设计并实现了一种基于树莓派4B的厨房环境监测系统,提升厨房使用过程中的安全性与智能化水平。系统采用树莓派4B作为主控核心,集成DHT11温湿度传感器、MQ2烟雾传感器、火焰传感器、光敏传感器、水滴检测传感器等多种传感器,实现对厨房环境温湿度、烟雾、火焰、光照与溢水等参数的实时监测,并通过蜂鸣器进行本地报警。系统通过WIFI连接互联网,利用MQTT协议将环境数据上传至华为云物联网平台,实现远程可视化监控。

415

Quasar CLI 开发 PWA 前置准备:添加 PWA 模式、src-pwa 目录结构与源文件定制指南

Progressive Web App(PWA)是 Quasar 框架众多部署目标中的核心形态之一:在 `@quasar/app-vite` 项目中,只需一条命令即可为现有应用叠加 PWA 能力(离线缓存、可安装、类原生体验)。本文基于 Quasar 官方文档 [developing-pwa/preparation.md](https://link.gitcode.com/i/8a0b08ea2f

gitblog_00341的博客 291

PCB制造工艺参数到AD规则设置

本文提供了PCB设计与制造的落地指南,强调需先了解PCB厂的工艺参数,再在Altium Designer中设置相应规则。核心步骤包括:获取PCB厂的关键工艺参数(线宽/线距、过孔尺寸等),在AD中设置电气规则、布线规则、阻焊规则等,并进行DRC检查。文章还给出了常见问题避坑建议和快速落地模板,帮助设计师确保设计符合生产要求,避免因工艺不匹配导致的报废或成本增加。

qq_37999850的博客 293

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PWA实践:添加到主屏幕

Progressive Web Apps(PWA)的“添加到主屏幕”功能允许用户将网站像原生应用一样安装到设备主屏幕上,提供更快的访问和离线体验。整个过程基于标准 Web 技术(HTML、JavaScript),确保跨浏览器兼容(支持 Chrome、Edge、Safari 等现代浏览器)。这能显著提升用户留存率(例如,研究表明 PWA 可增加 20% 的用户参与度)。)定义了应用的元数据,如名称、图标、启动 URL 等。标签引用 Manifest 文件,并设置视口(viewport)以支持响应式设计。

2501_93895614的博客 1154

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

PWA 渐进式网络应用 - 3 - manifest.json 添加应用至桌面

PWA 渐进式网络应用 - 3 - manifest.json 添加应用至桌面 简介 WEB 应用清单 manifest.json web 应用清单是一个简单的 json 文件,其中包含 short_name 以及 icons 字段,目的是提供将应用添加至桌面的功能,从而使用户可以无需下载如同原生应用一般从桌面打开 web 应用,只要在 service worker 基础上添加一个描...

mjzhang1993的博客 4972

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 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")

基于PWA程序员盒子实现了添加应用程序到桌面的功能

PWA基于通过先进的技术为Web应用带来接近本地应用的使用体验。基于PWA的Web应用从一个Web页面变为一个沉浸式的顶层应用,并且时刻保持着对网络的低依赖性。

weixin_36063821的博客 8221

步步提高网站体验系列之——PWA(Manifest)

前言 接上篇步步提高网站体验系列之——PWA(Service Worker)。,这次通过manifest.json来实现将网站添加到主屏幕,当有新文章上线时通过Notification(通知)提醒用户。 这两种交互方式的共同目的其实只有一个:吸引并留住用户。 文章目录如下: manifest.json 简介 兼容性 依赖 实现 manifest.json简介 PWA 提供了 ma...

辰辰沉沉大辰沉 2836

git文件清单_构建离线Git趋势PWA,第3部分:清单和通知

git文件清单This article is the last part of the 3-part series on building a Progressive Web Web. If you landed here first and need to review the previous articles, here is Part 1 and Part 2. 本文是有关构建渐进式We...

culiu9261的博客 294

使用PWA 将网页变为桌面应用保姆级教程

本文介绍了渐进式网络应用(PWA)的核心特性及其配置方法。首先阐述了PWA的六大特点:渐进增强、响应式布局、离线访问、推送通知、安装性和链接分享。随后详细说明了配置过程

鹏多多的博客 2730

PWA:添加应用至桌面及分享

系列文章: Service Workers 和离线缓存 Notification with Service Workers push events PWA:添加应用至桌面及分享(本文) 继上两篇离线缓存和发送通知之后,这篇是 PWA(progressive web apps) 相关的第三篇,也是计划中的最后一篇。 这篇将讲述如何为...

weixin_34209406的博客 1457

vue项目引入PWA(vue-cli4)

1.概念 PWA 全称为 Progressive Web App,中文译为渐进式 Web APP。 其目的是通过各种 Web 技术实现与原生 App 相近的用户体验。也就是说,只要你使用浏览器,就可以实现免除下载或者是快速下载就能直接使用软件。比如微博、淘宝等。 PWA 是 Google 于 2016 年提出的概念,于 2017 年正式落地,于 2018 年迎来重大突破,全球顶级的浏览器厂商,Google、Microsoft、Apple 已经全数宣布支持 PWA 技术。 PWA 能做到原生应用的体验不是靠特

itlsq的博客 5965

webpack 工程的 PWA 实战

webpack 是现代化前端工程的标配,PWA 也是最近火热的新技术。如何结合这两者,组成了本场 Chat 的主题。主要内容包括: 什么是 PWA,它有哪些优势 ServiceWorker 的生命周期 webpack 相关配置 调试 PWA 写一个 manifest.json 实现添加到主屏 降级方案 本场 Chat 需要读者: 了解 webpack 的基本配置; 了解浏览器缓存策略。 ...

GitChat 1002

单页面的html文件配置PWA生成手机桌面图标

单页面的HTML文件配置PWA生成手机桌面图标

weixin_47401153的博客 849

vue3+vite项目中启用pwa

vue3+vite项目中启用pwa

路过君的博客 1370
上一篇: Worker&worker.js
下一篇: PWA:Service worker生命周期事件对网络资源的处理
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值