React 测试 Enzyme

基于 Jest + Enzyme 的 React 单元测试 前言如果你想学习 React 单元测试,那就从这篇文章开始吧。Star 项目,clone 到本地,根据教程走一遍,有任何问题欢迎 issue 讨论。 项目GitHub地址:react-test-demo 文章主要内容如下: * Jest 和 Enzyme 的基本介绍 * 测试环境搭建 * 测试脚本编写 * UI 组件测试 * Reducer 测试 * 运行并调试 * 参考 阅读详情

原文地址:https://www.cnblogs.com/vvjiang/p/8599980.html

参考地址:https://www.cnblogs.com/susu8/p/9512393.html

 

Enzyme是用于React的测试,需搭配其他单元测试使用

 

安装

安装enzyme

npm install --save-dev enzyme

安装对应配适器

npm install --save-dev enzyme-adapter-react-16

配适器对应react的列表

enzyme-adapter-react-16 ^16.0.0

enzyme-adapter-react-15 ^15.5.0

enzyme-adapter-react-15.4 15.0.0-0 - 15.4.x

enzyme-adapter-react-14 ^0.14.0

enzyme-adapter-react-13 ^0.13.0

 

基本示例(搭配Jest)

import React from 'react'

import Enzyme from 'enzyme'

import Adapter from 'enzyme-adapter-react-16'



// 配置配适器

Enzyme.configure({ adapter: new Adapter() })



const {shallow}=Enzyme



test('test1', function () {

    let button = shallow(<button>test</button>);



    expect(button.text()).toEqual("test");

})

Shallow方法

Shallow将一个组件渲染成虚拟DOM对象,但是只渲染第一层,不渲染所有子组件

 

mount方法

mount方法用于将React组件加载为真实DOM节点。然而真实DOM需要一个浏览器环境,为了解决这个问题,我们可以用到jsdom

安装jsdom:

npm install --save-dev jsdom

在test目录下新建一个文件setup.js:

import jsdom from 'jsdom';

const { JSDOM } = jsdom;



// 使用jsdom环境

if (typeof document === 'undefined') {

    const dom=new JSDOM('<!doctype html><html><head></head><body></body></html>');

    global.window =dom.window;

    global.document = global.window.document;

    global.navigator = global.window.navigator;

}

将setup.js配置到jest(运行每个测试文件前先运行setup.js)

setupFiles:["<rootDir>/test/setup.js"],

mount的使用方法和Shallow一样

 

wrapper对象

shallow和mount返回的是wrapper对象,其具有的方法如下:

(详细Api地址http://airbnb.io/enzyme/docs/api/ShallowWrapper/at.html)

.get(index):返回指定位置的子组件的DOM节点

.at(index):返回指定位置的子组件

.first():返回第一个子组件

.last():返回最后一个子组件

.type():返回当前组件的类型

.text():返回当前组件的文本内容

.html():返回当前组件的HTML代码形式

.props():返回根组件的所有属性

.prop(key):返回根组件的指定属性

.state([key]):返回根组件的状态

.setState(nextState):设置根组件的状态

.setProps(nextProps):设置根组件的属性

.instance():返回我们React类的实例,包含我们自定义定义的React类的方法

Jest + Enzyme React 组件测试实践 ≈ 最近把组件测试接入到日常开发,提高了项目代码健壮性,可维护性。本人也从0到1收获了组件测试的经验。 本文总结一下最近两周 组件测试 相关的研究,包括: Jest + Enzyme 的基本介绍 Jest + Enzyme 的实践 Jest 原理浅析 Jest 生态 & 未来 文章目录为什么选择Jest & Enzyme?1. Jest2. EnzymeJest + Enzym... 阅读详情

相关推荐

react中使用Jest+Enzyme的单元测试(详细)

在react中还是在编写vue的项目的时候,不管是大型项目亦或是中小型项目,我觉得编写单元测试是一个很好的习惯,我在看了好多博客之后,发现,大多数博客都是在写相关配置等问题,而并没有详细传授用户如何使用单元测试,因此,我写这篇文章的目的也是让react用户学会使用单元测试。我就从头教下如何使用。 在使用create-react-app的命令下载了react脚手架后,用户可以将src目录下的App...

qq_36529459的博客 2498

react16的单元测试1--基础环境安装

学react最痛苦的是什么?知识更新太快。最近在学写单元测试,网上找的react单元测试资料,按教程的git地址安装,示例没有问题。但如果要放到自己项目中,代码就运行不了。说到底还是版本比较久远,安装环境配置又有了新的不同(摔~~)。这次接触单元测试,踩了不少坑,纪录一下踩坑历程。非常重要的提示:本文提到的单元测试是针对react16的,默认你已经安装了react16的相关配置。 1、安装依赖包 ...

jean850218的博客 958

精通 React 测试:Jest、Enzyme 和 React 测试库综合指南

请记住考虑不同类型的测试,例如单元测试、集成测试和快照测试,以涵盖代码库的各个方面。定期运行测试、维护代码覆盖率并将测试集成到您的 CI 管道中,以尽早发现问题并确保 React 应用程序的质量。通过利用 Jest 和 Enzyme 等测试框架,您可以编写全面的测试来验证组件的行为并确保您的应用程序按预期工作。Enzyme 是一个用于 React 的 JavaScript 测试实用程序,它提供了一组辅助函数来测试 React 组件的行为和状态。您可以编写不同类型的测试,包括单元测试、集成测试和快照测试。

我的博客,不一样的自我表达 212

解决Enzyme测试框架难题:3大常见问题与实用解决方案

Enzyme是React应用开发中不可或缺的JavaScript测试工具库,它提供了简洁的API来测试React组件的输出和行为。然而,许多开发者在使用过程中会遇到各种棘手问题,影响测试效率和准确性。本文将系统梳理Enzyme测试中最常见的三大问题,并提供经过验证的解决方案,帮助你轻松应对测试挑战。 ## 一、查询选择器(Query Selector)失效问题 ### 问题表现 使用Enzym

gitblog_00361的博客 347

使用Jest和Enzyme深入测试React组件

本文还有配套的精品资源,点击获取 简介:为了确保React组件的功能性和行为正确性, giftgiver 项目采用Jest和Enzyme工具进行单元测试。Jest是一个全面且易用的JavaScript测试框架,支持多种测试功能,而Enzyme则提供了丰富的API来对React组件进行不同方式的渲染和测试。此外,还涉及到了Redux和Redux-Thunk在状态...

weixin_30951515的博客 1295

告别Vivado自带编辑器!手把手教你用Sublime Text 4 + Icarus Verilog搭建FPGA开发环境(Windows 10/11)

本文详细介绍如何在Windows 10/11系统下,使用Sublime Text 4和Icarus Verilog搭建高效的FPGA开发环境,替代Vivado自带编辑器。通过配置语法检查、代码高亮和智能补全等功能,提升Verilog开发效率,实现专业级工作流。

weixin_30684743的博客 427

React 测试利器之 Enzyme

一. 简述

绿足 博客 1567

嵌入式调光控制库:轻量级软启/渐变/记忆逻辑实现

调光控制是智能照明系统的核心基础功能,涉及亮度调节、人机交互与电气安全多重需求。其底层原理依赖于对相位角或PWM占空比的精确时序控制,并需融合软启动、渐变过渡、状态记忆等工程化逻辑。这类轻量级调光行为逻辑层,不直接操作硬件寄存器,而是以确定性、无动态内存、可配置的方式封装用户意图到目标亮度值(0–100%)的映射过程,显著提升产品鲁棒性与跨平台复用能力。广泛应用于TRIAC交流调光、LED直流PWM驱动及DALI/Matter等智能照明协议网关中,尤其适合资源受限的Cortex-M系列MCU和FreeRTO

weixin_28949937的博客 579

react+jest+enzyme配置及编写前端单元测试UT

原文合集地址如下,有需要的朋友可以关注。

xxx 2119

「转载」vaptcha 等手势验证码图像识别与轨迹提取(思路)

作者:文安哲 从博客重开以后就说要更文章,鸽了蛮久了,赶紧补上一篇嫖嫖各位老公的流量。 最近看群里面大家讨论研究手势验证码比较多,然后我也顺带研究做了一下,给各位老公们分享一下做的过程。 首先,一起来康康手势验证码长啥样! 大概就是长这个样子,需要按照图像中的那条轨迹再图片上滑动,不得不说这类验证码确实体验感拉满,让人很想立马关掉这个网站。 那么言归正传,这类验证码该怎么做识...

AI悦创·编程私教1v1 3599

【180609】剑侠情缘_整套源码+地图编辑器(单机学习例子)

剑侠情缘_整套源码+地图编辑编(单机学习例子)完整源码下载地址:点击下载备用下载地址:点击下载

资源小站 6278

ReactJS 101测试策略:使用Jest和Enzyme进行React组件测试的5个最佳实践

在React应用开发中,**React组件测试**是确保代码质量和应用稳定性的关键环节。ReactJS 101项目为开发者提供了全面的React学习资源,其中包含了丰富的**Jest测试**和**Enzyme测试**实践指南。本文将分享5个实用的React测试最佳实践,帮助您构建更可靠的React应用。😊 ## 🚀 为什么React测试如此重要? 在React生态系统中,**组件测试**不

gitblog_00694的博客 537

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1584

react jest测试_如何设置Jest和Enzyme来测试React Native应用

react jest测试by Sam Ollason 通过萨姆·奥拉森(Sam Ollason) This short article shares my experiences setting up my testing environment to unit test React Native components with Jest and Enzyme. 这篇简短的文章分享了我设置测试环...

cumi6497的博客 442

SiC MOSFET 失效机制详解

TDDB 指在相对较低电场(通常接近或略高于器件工作电压)下,长时间施加电压导致介电层(如栅氧化物)逐渐退化并最终击穿的现象。与即时击穿(Immediate Breakdown,由强电场直接引起)不同,TDDB 是时间相关的渐进过程,通常发生在数小时、几天甚至数年之后。核心过程:在 MOSFET 中,栅极与衬底之间施加电压时,电子通过量子隧道效应(Tunneling)注入介电层,形成缺陷或陷阱。这些缺陷积累,最终在介电层中形成导电路径(Conductive Path),导致短路和器件失效。统计特性。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 382

可维护的 SAP UI5 Theming 策略:从 CSS 级联与特性选择器到 UI Theme Designer 的工程化落地

摘要:SAP UI5主题化是一个涉及CSS级联、选择器特异性和主题参数的系统工程,与应用逻辑解耦以实现品牌化和无障碍适配。轻量级调整优先使用附加CSS,重大改动才考虑创建新主题。样式冲突需通过特异性原则解决,避免滥用!important。动态添加样式应使用addStyleClass而非直接操作DOM。主题可通过bootstrap参数、URL或运行时API设置,企业级主题推荐使用UI Theme Designer。自定义内容应消费主题变量以实现一致性,避免直接修改控件内部结构或内联样式。工程化落地需规范分层和

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

enzyme react 组件测试

enzyme 简单实践 enzyme 主要用于 React 组件测试 文档链接:https://enzymejs.github.io/enzyme/ https://www.npmjs.com/package/enzyme Jest 断言配置:https://github.com/enzymejs/enzyme-matchers/tree/master/packages/jest-enzyme 环境依赖配置:https://github.com/enzymejs/enzyme-matchers/tree/m

MichaelAn的博客 472

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

react安装_开启Enzyme的React测试之旅

作者 | Diogo Souza 译者 | 刘雅梦 测试是 Web 应用程序开发中的一个重要步骤,特别是在诸如 React 之类的组件库之上构建的应用程序。在众多不同的测试工具和测试库中 Enzyme 因其灵活性和易于开发 React 代码的测试而脱颖而出。实际上,Enzyme 更像是一个 JavaScript 测试工具,它使断言、操作和遍历 React 组件的输出变的更容易...

weixin_39878247的博客 184

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Enzyme测试React 18悬念加载:Suspense边界测试

React 18引入的Suspense特性彻底改变了组件加载策略,但许多开发者在使用Enzyme进行测试时遇到了兼容性挑战。本文将深入分析Enzyme与React 18 Suspense的兼容性现状,提供实用的测试替代方案,并通过具体案例演示如何有效测试Suspense边界组件。 ## Enzyme与React 18的兼容性现状 Enzyme作为React生态中广泛使用的测试工具,其官方适配器...

gitblog_00752的博客 994

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

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

[React] 测试模块enzyme

React 学习笔记

个人学习笔记 894

Enzyme测试React 18并发渲染:useDeferredValue测试

React 18引入的并发渲染机制彻底改变了前端应用的性能表现,其中`useDeferredValue`钩子为处理高优先级更新与低优先级计算之间的平衡提供了优雅解决方案。然而,这一机制也为组件测试带来了新的挑战——如何准确模拟和验证异步更新的行为?本文将通过Enzyme测试工具链,构建一套完整的`useDeferredValue`测试策略,帮助开发者在并发渲染场景下确保组件行为的一致性。 ## ...

gitblog_01113的博客 632

ReactJS101测试驱动开发:Mocha与Enzyme实战指南

ReactJS101是一本从零基础开始学习React.js的中文入门教程,涵盖React生态系统的核心技术,包括测试驱动开发。本文将带你快速掌握使用Mocha和Enzyme进行React组件测试的实用技能,让你的前端开发更加健壮可靠。 ## 为什么选择Mocha与Enzyme进行React测试? 测试驱动开发(TDD)是现代前端开发的重要实践,而Mocha和Enzyme是React测试领域的黄

gitblog_01000的博客 339

Enzyme测试React Router应用完全指南

你还在为React Router组件测试头痛吗?路由跳转测试总是失败?URL参数无法正确模拟?本文将带你用Enzyme轻松搞定React Router测试难题,从基础配置到高级场景全覆盖,让你的路由测试稳定又高效。 读完本文你将学会: - 正确配置Enzyme测试环境 - 测试路由渲染与跳转 - 模拟URL参数和查询字符串 - 处理嵌套路由和重定向 - 解决常见测试陷阱 ## 环境准备 ##...

gitblog_01079的博客 1036

Enzyme与React Context API测试方案

你是否在测试React Context API时遇到过组件状态难以追踪、上下文传递复杂的问题?本文将详细介绍如何使用Enzyme测试工具解决这些痛点,让你轻松掌握Context API的测试技巧。读完本文,你将学会如何初始化上下文、验证上下文值、模拟上下文变化,以及处理高级场景如动态上下文和嵌套Context。 ## 核心测试方法 Enzyme提供了两种核心方法用于Context API测试:...

gitblog_00936的博客 812
上一篇: 2 jest vscode+ts
下一篇: 1 c++ 11 教程系列简介
dabusidede
博客等级 码龄9年 84粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值