工程化:Rollup 介绍

Rollup & 的作用、使用教程、支持 Vue、以及与 Webpack / Babel 的区别 Rollup工具可以将代码转成不同模块,实现一套代码多端(浏览器/Node)引入。浏览器(代码通过 Script 标签引入)AMD(兼容 requirejs.js 框架)CommonJS(Node.js 代码通过 CJS 方式引入)UMD (浏览器、AMD、CJS 均支持,是目前最常见的模块选择方式)后面会提到每个命令的作用,这里了解即可。 阅读详情

Rollup 是一款 ES Modules 打包器。它也可以将项目中散落的细小模块打包为整块代码,从而使得这些划分的模块可以更好地运行在浏览器环境或者 Node.js 环境。

Rollup优势:

  • 输出结果更加扁平,执行效率更高;
  • 自动移除未引用代码;
  • 打包结果依然完全可读。

缺点

  • 加载非 ESM 的第三方模块比较复杂;
  • 因为模块最终都被打包到全局中,所以无法实现 HMR;
  • 浏览器环境中,代码拆分功能必须使用 Require.js 这样的 AMD 库
  • 我们发现如果我们开发的是一个应用程序,需要大量引用第三方模块,同时还需要 HMR 提升开发体验,而且应用过大就必须要分包。那这些需求 Rollup 都无法满足。
  • 如果我们是开发一个 JavaScript 框架或者库,那这些优点就特别有必要,而缺点呢几乎也都可以忽略,所以在很多像 React 或者 Vue 之类的框架中都是使用的 Rollup 作为模块打包器,而并非 Webpack

总结一下:Webpack 大而全,Rollup 小而美。

在对它们的选择上,我的基本原则是:应用开发使用 Webpack,类库或者框架开发使用 Rollup。

不过这并不是绝对的标准,只是经验法则。因为 Rollup 也可用于构建绝大多数应用程序,而 Webpack 同样也可以构建类库或者框架。

前端工程化实战 - Rollup、Parcel 打包 阅读详情

相关推荐

微内核+插件化架构:构建轻量级前端框架的设计与实践

在现代前端开发中,模块化与架构设计是提升工程效率和维护性的核心。其原理在于通过解耦和组合,将复杂系统分解为独立、可复用的单元。这种模式的技术价值在于显著降低了代码耦合度,提升了团队协作效率,并使得应用能够灵活应对需求变化。在应用场景上,它尤其适合中后台管理系统、工具型应用等需要长期迭代和维护的项目。本文以Prism框架为例,深入剖析了其采用的“微内核+插件化”架构,详细阐述了如何通过清晰的生命周期管理、依赖注入的通信机制以及基于Rollup的构建策略,实现一个真正轻量、可控且高性能的前端解决方案。

weixin_33749131的博客 699

nodejs学习之Rollup

nodejs学习之Rollup

qq_36437991的博客 1529

Rollup 打包通用项目工程库[非TS],工程化之路

Rollup 打包通用项目工程库[非TS],工程化之路 很长一短时间没有写博客啦!最近刚好有空写了一下,本文侧重于实践,文案描述不太多,总体实现效果如图 效果图1 效果图2 Rollup 的基础概念就不说的,不知道请点击这里看官网 在这里就不废话多说啦,直接上代码,下面就是通用的一些基础配置,我们所有的工具类,组件库等都是通过这一块实现的,形成通用的一些配置,形成工程化的模板!下面我以组件库图表为例子,项目工程结构如下: 项目目录 ├─ packages

禅思院 1342

Rollup 构建原理及简易实现万字详解

本文深入解析了Rollup模块打包工具的核心原理与实现。首先介绍了Rollup的基本概念,突出其基于ES6模块、高效Tree-shaking的特性,并与Webpack进行对比分析。随后详细阐述了Rollup构建流程的关键技术,包括AST解析、magic-string操作、acorn解析器应用以及作用域分析等底层机制。文章通过简易实现演示了Rollup的核心功能模块,包括Bundle、Module类的设计以及作用域链的实现。最后总结了Rollup的优劣势和适用场景,指出其在库/框架开发领域的优势,同时展望了未

油墨香^-^的博客 1549

pikachu靶场: 暴力破解第四关(token防爆破)

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个 Token 同时将此 Token 返回给客户端。此外,Token 是有时效的,一段时间之后或下一次请求时用户需要重新验证。

X_shiguang的博客 1720

k最近邻算法——电影分类及案例详解

如图3-7所示,若将国际象棋棋盘放在二维直角坐标系中,格子的边长定义为1,坐标的x轴及y轴和棋盘方格平行,原点恰落在某一格的中心点,则王从一个位置走到其他位置需要的步数恰为二个位置的切比雪夫距离,因此切比雪夫距离也称为棋盘距离。关于这里的距离度量,这个电影分类的例子有2个特征,也就是2维的,可以使用我们高中学过的两点距离公式(两点距离公式其实就是欧氏距离在二维空间上的公式,也就是欧氏距离n的值为2的情况,欧氏距离也称为欧几里德距离)来计算距离,如图3-3所示。对数据进行归一化,避免量纲对计算距离的影响。

ZhShy 4554

rollup node.js 打包工具

最近在做一个提供给浏览器和node同时使用的js的url模板工具类,在用什么打包工具上纠结了一段时间,正好有一天在知乎上看到了关于rollup的介绍,在自己试了试之后,就决定用rollup.js来打包自己的工具类了。 这篇文章主要是为了让对rollup.js也有兴趣的同学能够快速入门rollup的使用方式而写的,文章除了开始对rollup.js的基本介绍之外,主要用多个demo来介绍rollup...

weixin_30820077的博客 1263

SAP FI 会计科目表(COA)可直接套用配置模板

摘要:本文提供了SAP S/4HANA环境下可直接套用的会计科目表(COA)配置模板,包含科目编码规则、号段规划、科目组设置等核心内容。模板采用10位数字编码,按资产(1000)、负债(2000)、权益(3000)、成本(4000)、收入(5000)、费用(6000)六大类划分号段,并预设科目组控制字段状态。适用于集团/单一公司、国内/跨国企业场景,支持多表架构映射,配置完成后可通过事务码SAKO验证科目清单。模板遵循"前4位固定一级科目"原则,企业可根据行业特性调整明细科目。

金牌架构师 266

node环境打包js,webpack和rollup两个打包工具打包,能支持vue

引言项目中经常用到共用的js,这里就需要用到共用js打包,这篇文章讲解两种打包方式,webpack打包和rollup打包两种方式。

u013994400的博客 2448

目标跟踪与视频时序分析基础

两帧均有目标,却因快速移动导致检测框无重叠,仅靠交并比(IoU)无法维持身份关联。本文通过手算与纯Python实现最小跟踪流程,揭示IoU仅为位置线索,不能应对快速位移或遮挡。实验表明,即使目标真实存在,低重叠也会触发新编号。强调跟踪需结合运动预测、外观特征与阈值验证,避免误判。

Mr数据杨 2335

【STK】手把手教你利用STK进行弹道导弹和运载火箭发射仿真的相关方法全过程解析

写这个系列主要是这几年做了一些弹道导弹和运载火箭发射的相关仿真项目,stk软件由于其专业性在国内比较小众,相关的教程和书籍、经验贴都不是很多,因此新手在进行开发中容易遇到较多困难,把自己的一些经验体会写下来,一方面供自己总结回顾,另一方面也希望对大家有所帮助。这个系列计划分几篇文章写完,每章的内容结构相似,都分为①如何确定发射场位置和发射轨迹、②导入导弹和运载火箭模型、③设计模型分段动作、④飞行参数分析和相关应用这四个部分,每篇文章争取完整描述1-2个实际项目的操作过程。

weixin_44184852的博客 5985

告别CSS前缀烦恼:Autoprefixer与Rollup构建库项目的完美协作

Autoprefixer 是一款强大的 CSS 处理工具,它能根据浏览器流行度和属性支持情况,自动为 CSS 属性添加厂商前缀,让开发者告别手动编写前缀的繁琐工作,专注于 CSS 本身的逻辑实现。 ## 📦 什么是 Autoprefixer Autoprefixer 会使用基于当前浏览器 popularity 和属性支持的数据来为 CSS 属性自动添加前缀。它不是一个 CSS 预处理器,而是

gitblog_00665的博客 954

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1166

前端工程化配置完整指南

模块化是前端工程化的基础,通过ES Modules或CommonJS规范,可以将代码拆分为独立的模块,便于维护和复用。统一的代码规范是团队协作的基石。在当今快节奏的前端开发中,工程化配置已成为提升团队协作效率和项目质量的关键。无论是构建工具、代码规范,还是自动化部署,合理的前端工程化配置能够显著减少重复劳动,确保代码的一致性和可维护性。本文将从前端工程化的核心配置入手,为你提供一份完整的指南,帮助你在项目中快速落地最佳实践。通过以上几个方面的配置,前端工程化能够显著提升开发效率和项目可维护性。

hicydy_355的博客 194

【OD统一考试(B卷)】比赛的冠亚季军,Python 解答

比赛的规则是 0 号和 1 号比赛,2 号和 3 号比赛,以此类推,每一轮,相邻的运动员进行比赛,获胜的进入下一轮,实力值大的获胜,实力值相等的情况,id 小的情况下获胜,轮空的直接进入下一轮。第一轮比赛,id 为 0 实力值为 2 的运动员和 id 为 1 实力值为 3 的运动员比赛, 1 号胜出进入下一轮争夺冠亚军,id 为 2 的运动员和 id 为 3 的运动员比赛,3 号胜出进入下一轮争夺冠亚军;2 号与 0 号,比赛进行季军的争夺,2 号实力值为 4,0 号实力值 2,故 2 号胜出,得季军。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

用 CL_ABAP_PARALLEL 把批量处理跑进并行对话进程:资源配额、超时治理与可复制的落地模板

文章摘要: CL_ABAP_PARALLEL是SAP推荐的并行处理工具,适用于时间窗口受限的批量任务处理。它基于aRFC/pRFC机制,通过对话进程实现并行,能将小时级任务压缩到分钟级。使用时需注意版本兼容性(可能需要Note 2791374)、资源限制(会话数、进程数)和任务切片策略。提供两种实现方式:继承式(重定义do方法)和接口式(实现IF_ABAP_PARALLEL)。关键参数包括并发控制(p_percentage)、超时设置(p_timeout)和调试开关(p_debug)。最佳实践建议按业务维度

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

前端工程化--Rollup的使用

集成 Babel,将 ES6+ 代码转换为向后兼容的 JavaScript 代码。将 CommonJS 模块转换为 ES6 模块,以便 Rollup 可以处理。打包完成后,会在dist目录下生成bundle.js文件。用于解析node_modules中的第三方模块。用于压缩和混淆打包后的代码。

wl_qianduan的博客 2262

visio安装包

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

如何把 Files 设为 Windows 默认文件管理器:一个开关接管 Win+E 和双击打开

按 Win+E 的瞬间,你期待的是熟悉的 Files 界面,结果又弹出那个没有标签页、没有预览窗格的资源管理器旧窗口。这大概是换文件管理器的人最出戏的一刻——装了新工具,入口却还是旧的。 Files 是一款支持多标签页、双面板布局的现代文件管理器。把 Files 设为默认文件管理器,意思就是让系统里所有"打开文件夹"的入口(Win+E、双击文件夹、任务栏"新建"按钮)全部指向 Files,而不是

gitblog_00966的博客 852

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

从前端工程化角度解析 Vite 打包策略:为何选择 Rollup 而非 esbuild。

摘要:本文分析了Vite在打包阶段选择Rollup而非esbuild的技术考量。esbuild在开发阶段具有极速构建优势,但在Tree Shaking、代码分割、插件生态和生产级功能方面存在不足;而Rollup在生产构建时能提供更精准的代码优化、丰富的插件支持和稳定的输出质量。Vite采用两者结合的方案,在开发阶段用esbuild保证速度,生产构建用Rollup确保质量,实现了开发效率与产物性能的平衡。这种设计体现了前端工程化中对工具链优化和开发/生产需求差异的深刻理解,为项目构建提供了高效可靠的解决方案。

专研技术的大学生:会点Java和前端 1319

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

包括使用自动化工具进行代码检查、构建、测试和部署等,以提供更高效和可维护的前端开发环境

DOCTYPE 并不属于 Html 的标签它是 SGML 的一个实体,它优先于 Html 标签,说明 Html 的版本,文档类型定义信息,它一般用于 Html 的最开始处,在网页中也可以不包含 DOCTYPE 信息.我们仅仅描述它的使用,并不过多的说明其它信息.),索引关键字,语言等信 息.标签是可选的,在 Html 中可以不包含该标签,浏览器也可以根据实际情况识 别文档的头信息.Html 文档只允许有一个标题,标题被显示在浏览器的最上方,在。我们在文档的部分,应该包含文档的标题(---文档的作者信息。

博客域名:borter.blog.youkuaiyun.com 226

Rollup 在前端工程化中的核心应用解析-重新认识下Rollup

/ 简易版Vue SFC处理器return {if (!

2401_87546826的博客 511

【前端工程化进阶必备】:掌握这5个Rollup配置技巧,让TypeScript项目效率翻倍

掌握TypeScript Rollup配置技巧,提升前端构建效率。涵盖多环境配置、代码分割、类型声明生成等核心方法,适用于库与应用开发,显著优化打包速度与产物质量。值得收藏的工程化实践指南。

simcode的专栏 925

KubeVela shared-resource 策略详解:跨应用安全共享 Kubernetes 资源

在 KubeVela 的多应用协作场景中,不同 Application 有时需要共同使用同一个底层资源(例如共享同一个 Namespace、同一个 ConfigMap 或 Service)。若直接让多个应用各自声明同一资源,第二个应用会因该资源已被其他应用管理而报错。本文基于 [docs/examples/app-with-policy/shared-resource-policy/shared-

gitblog_00712的博客 856

前端,通过面试去学习,工程化(webpack、rollup、parcel、tree-shaking、babel)

前端,通过面试去学习,工程化(webpack、rollup、parcel、tree-shaking、babel)

IronKee的博客 950

前端工程化实践——javaScript 手写rollup

在 rollup 中,一个文件就是一个模块。每一个模块都会根据文件的代码生成一个 AST 语法抽象树,rollup 需要对每一个 AST 节点进行分析。分析 AST 节点,就是看看这个节点有没有调用函数或方法。如果有,就查看所调用的函数或方法是否在当前作用域,如果不在就往上找,直到找到模块顶级作用域为止。如果本模块都没找到,说明这个函数、方法依赖于其他模块,需要从其他模块引入。rollup只处理函数和顶层的import/expor

涵盖了计算机专业基础知识、数学建模相关实践、复杂网络论文研究、LeetCode算法刷题经验、C语言开发经验、前端Vue、React框架开发实战相关知识 1088
上一篇: HTTP 的前世今生
下一篇: 工程化:Babel 原理
小码哥・Martin
博客等级 码龄18年 10粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小码哥・Martin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值