淘宝8年案例讲解各大厂商如何开发和部署前端代码

前言在加入淘宝后,经历了大大小小的开发和部署方式的更迭,同时也有幸在整个的变革潮流中参与过其中的一些能力的建设。今天从一个亲历者的角度,通过自身经历与向同事考究

前言

加入淘宝后,我经历了开发和部署方式大大小小的变化。我也有幸参与了整个变革趋势中的一些能力的建设。今天,我从一个经历过的人的角度,通过自己的经历和与同事的研究,从“13年石器时代”、“14年白银时代”、“15年白银时代”四个阶段来和大家聊聊。 – 年黄金时代”和“未来时代”大厂商如何开发和部署前端代码。

在阿里巴巴的淘宝前端团队中,开发和部署模式仍然处于随着技术的发展而不断变化的过程中。一方面,系统内外复杂的能力模块不断发展,另一方面,LSP、DAP等底层技术基础也逐渐成熟。在当看,我们正在整合研发环境IDE,对前一阶段孵化的研发生态进行再次整合和升华,重新梳理原有的环节,从当前用户的痛点中寻找突破口,对现状进行多方面的探索。研发场景能力的最佳组合,构建通用底层平台,升级改造现有模型。

作为一名前端开发人员,从2014年实习到2015年正式进入公司,淘宝前端团队(前身淘宝前端团队)经历了大大小小的开发和部署方式的变化,有幸参与了整个潮流的变革。其中一些能力的建设。今天我就以一个亲历者的角度,通过自己的经历和与同事们的研究,分阶段地回忆和描述。

答案将整个故事分为四个阶段。第一个是2013年左右的“石器时代”,代码发布、存储和部署都转变为GitLab技术体系; 2014年左右,随着NodeJS技术的成熟,前端JS语言被用来构建工程工具。算法等多元化技术的“白银时代”,创造了未来研发模式的“未来时代”。

石器时代

十三年前,前端研发模式与后端研发模式没有太大区别。大多数都是基于SVN进行SCM代码管理。完成日常的代码开发工作后,通过命令行或者小乌龟等工具将代码上传到SVN服务器,完成一天的开发流程。部署阶段,通过手动拷贝或FTP上传的方式将测试代码上传到测试服务器。测试完成后,手动检查代码版本和内容,然后进一步上传到生产环境,完成整个研发部署过程。

那个时期,除了SVN之外,还出现了基于GIT协议的代码管理工具Gitlab。面对SHA-1算法带来的版本检测的便捷性和本地分布式代码版本控制的灵活性等优势,我们逐步将部门内的SVN研发工作流程迁移到Gitlab上。同时,这一变化也可以被视为淘宝前端研发改革的起源。

在体验切换代码版本管理工具带来的便利的同时,我们思考当时相对繁琐且需要人工保证的部署流程在新系统上是否可以得到进一步的改进。在新的发布系统背景下,在新的Gitlab系统提供的各种能力中,我们发现webhook机制可以封装在某个上层,借助常规操作,可以触发与发布系统并自动完成发布。在线流程。我们根据发布/版本信息等固定规则的Git标签触发webhook事件通知,并触发发布系统的调用上线流程,从而完成了前端研发的第一个实用的全自动化发布流程。

这个阶段像“石器时代”一样原始,但完成研发基础设施的改造后,为后续发展提供了坚实的基础。同时,随着前端技术的发展,我们基于这个底层系统也进入了一个新的阶段。

白银时代

2014年左右,诞生五年多的NodeJS技术逐渐成熟。当时团队基于NodeJS研发了一套名为DEF的本地CLI终端工具。该工具的核心是一套Node模块的安装和调用管理机制。工具开发人员将研发功能模块封装成DEF系统下的插件形式,通过不同插件模块的调用组合来实现前端项目的编译、调试和在线运行。

在当时的KISSY 框架研发体系下,我们依靠NodeJS 通过正则匹配编译脚本、UglifyJS 解析AST 等能力,开始通过JS 技术构建前端领域的工程化工具,逐渐取代使用Ant平台实现的Java系统工具。

当时除了使用yeoman等工具来完成初始化过程外,我们还随着业务编译和构建逻辑的继续,不断抽象和产生构建器等基本概念。

当时传统的项目组织中,构建和编译的配置逻辑和项目的代码文件放在同一个代码目录下。从团队角度来看,这种构建和编译逻辑是分散且自由的,没有统一的更新管理逻辑。如果团队内部某类研发场景的构建、编译工具有更新和变化,团队内部工具的更新覆盖将会消耗非常大的成本;同时,从用户的角度来看,在同一类型的不同项目中还存在大量重复安装的构建依赖项。每个项目在构建之前还需要安装构建依赖项,这浪费了一定比例的空间和时间。

通过builder的概念对编译和构建依赖进行汇聚和抽象,项目的编译依赖都维护在一个npm包中。这样编译逻辑就从多对多变成了一对多。在大大减少构建逻辑占用空间的同时,还可以更好地复用已安装的构建依赖,简化构建流程,提高构建效率。这进一步为后续的线上建设系统奠定了基础。

现阶段,NodeJS技术已经逐渐成为我们除了日常页面开发之外的另一项基本技能。随着NodeJS工具的诞生和大规模应用,前端开发和部署已经从“石器时代”进入了“白银时代”。随着大家对NodeJS系统的基础使用越来越成熟,我们进一步开始在基础系统的使用基础上进行更加深入的思考和抽象设计,开始构建更加成熟的前端工程体系。

黄金时代

团队完成基于NodeJS技术的工程工具、Web服务框架等基础设施建设后,在接下来的几年里,开发出了越来越成熟的线上线下工程系统。当时设计和构建的服务和工具已经逐渐形成了今天淘宝前端研发和部署过程中的基础设施。

研发套件

随着本地DEF工具的发展,越来越多的工具插件如雨后春笋般涌现。一方面,用户的工具选择非常多,本地开发过程中的功能基本上都可以在插件生态中找到;但另一方面,从实际用户的角度来看,在开发某个项目时,用户需要了解该项目,对所使用的插件及其用法有一定程度的熟悉,并知道最佳的使用方式它们组合起来。随着项目逐渐增多,记忆工具组合的成本就变高,同时还需要注意不同项目之间切换插件组合。

百花齐放之后,面对扩展的问题,我们在原有本地DEF工具的基础上提出了R&D Kit的概念。通过对本地研发流程的总结和聚合,抽象出本地五个工具的功能节点:init初始化、dev编译预览、build构建、test测试、publish发布。将原有的插件能力按照项目研发类型进行分类后,总结并沉淀出各类型研发类型的标准本地工具——研发套件。

借助套件理念的封装,用户在不同项目之间进行开发时,可以通过统一的命令直接启动和使用项目开发对应的工具服务。同时,新的本地包系统还可以为每个用户提供更细化、更灵活的版本指定方式。配备了较为完善的日志监控系统,使用工具的用户在遇到问题时可以实时发现并解决问题,保证了一线学员本地研发工具的最大使用体验。

研发部署平台

借助Gitlab的webhook能力发布前端资源的流程成熟后,一方面研发用户期望在发布过程中有更优化的发布体验,另一方面团队也有前端研发流程更加系统化、结构化的流程治理。数据统计也有更高的要求。

在此背景下,我们开放了原有链路上的发布能力,以更加友好的方式连接了发布链路中的各个环节,打造了前端系统下的研发部署平台。在体验上,用户可以通过简单的命令行命令直接启动发布任务,简化了发布时git发布标签的操作流程。在整个发布过程中,通过长连接返回并展示各环节的运行信息和日志,为新的操作提供发布链接。用户第一次对发布过程有了更全面的控制。从开始的代码提交、检测到最终资源CDN上线,都有完整的信息公开,极大提升了发布体验。

基于内部NodeJS实现的研发部署平台,在完成基础环节的打通后,逐渐开始从更系统的角度作为工程研发线上流程的基础,重塑了原有的线上发布环节。将原来流程中的环节抽象出来,逐步分解为构建、检测、发布三个主要步骤。在业务研发类型从PC转向无线的过程中,基于三个基本步骤,前端领域“发布型”的概念在上层执行层面逐渐孵化。比如当时有Web应用类型、前端资源类型、Weex应用等类型。在整体发布流程的细节中,底层系统对每个细分的发布类型采取了不同的发布和部署方案。本地研发与套件工具相结合。形成线上线下链接的统一研发组合方式,更精细化地为每种研发模式提供最佳的研发部署体验。

从现在开始,用户不再需要通过Gitlab的webhook来触发发布过程。 “一键上线”代表了前端工程体系的新阶段。

云构建

前一阶段,我们通过集中封装编译逻辑,使用npm,形成了研发、编译、构建流程的标准化描述。但在部署和上线阶段,构建器并没有串联到线上部署过程,本地系统环境不同也会导致构建结果不稳定。

随着当时docker技术的发展,我们想到利用docker快速启停统一环境的能力来实现builder运行环境,通过docker启动的container容器来模拟本地编译构建过程。同时,使用统一的容器环境,结合上述迁移后Gitlab提供的commit等版本标识信息,可以最大程度保证构建内容的稳定性和统一性。

经过一段时间的探索,我们经历了系统中技术环节的验证和探索,比如建立前端docker容器集群、串联容器与应用之间的网络通道、构建任务调度策略逻辑、使用redis打通docker容器操作日志。我们构建了基于容器技术的前端持续集成领域的云构建体系。

在通过淘溪的NodeJS应用框架midwayjs完成在线构建能力的建立的同时,在业务侧,我们也在逐步建立更加友好、完整的在线构建业务逻辑。通过在线发布流程时调用云构建服务,在整个构建任务的执行过程中连接构建者、仓库、用户之间的业务关系。在这个关系网络下,我们建立了完整的任务执行的调度管理,可以完整记录构建器任务的具体执行情况。

从构建器的角度,可以看到构建器对于不同仓库的执行情况,有完整的运行日志、构建时间、构建错误记录,方便用户排查错误,优化构建器的性能。对于构建器的迭代更新,构建器开发者可以根据用户设置灰度范围划分,在版本变更时通过完整的灰度流程保证在线版本的稳定覆盖。如果构建器发布过程中出现问题,立即取消灰度并处理。通过这种模型,发布版本的风险被最小化。在横向覆盖范围大的场景下,完整的灰度发布机制起着决定性的作用。

在研发过程中,用户需要将本地构建代码推送到仓库。此链接从此成为历史。源码开发完成后,可以直接提交源码到仓库。在执行发布任务时,云构建系统会自动构建稳定、统一的构建输出结果。

门神

完成项目的编译压缩过程后,看似已经到了部署阶段的前端资源,面对日益复杂的业务场景,仍然存在很多隐藏的问题。过去手动部署检查的方式已经逐渐无法保证线上资源的可靠性。在此背景下,还需要一种精简、标准化的方法来进行系统干预和检测,成为释放资源的最后一道防线。

与云建设类似,在线资源巡查运行环境也是基于NodeJS构建的。通过进一步抽象检查逻辑,也以npm的形式承载,抽象出检查器的概念。用户资源全部预处理完成后,门神系统进入并行巡检任务的执行。完成资源地址、敏感词、代码注释等检查后,通过不同级别的检查结果反馈给用户相应的处理。方式。作为资源上线前的最后一道坎。系统名称“门神”,寓意保证每一个发布资源的基本质量和安全。

通过门神的自动化方式,用户上线前不再需要眼尖地检查各种通过常规编译工具无法发现的问题,轻松上线。

能力开放

一方面,随着系统内前端工程领域的不断发展,更多的研发解决方案随着业务场景的不断发展不断涌现。另一方面,随着研发部署平台、云建设、系统内门神的逐步发展,已经成为集团前端研发场景的实施规范和基础设施。在此背景下,底层能力得到了进一步抽象和开放的机会。上层业务系统可以利用成熟的底层工程中台能力,根据自身业务情况,构建属于自己业务系统的前端研发流程。

例如,从阿里巴巴体系来看,不同的交付客户端、不同的资源组织形式,借助底层工程能力的通用抽象,最终让各个业务场景的开发者在项目业务场景中拥有最好的研发体验。

贝搭建平台

阿里巴巴经济体使用的建设服务如何设计—天马

除了常规的项目研发之外,电商体系下,尤其是营销场景下,还有快速制作页面的需求。在这样的业务场景背景下,通过模块生成页面的平台就诞生了。通过将页面重新划分为页面骨架和页面模块,前端同学开发这些页面元素,开发完成后进行组合。同时打通业务数据流,实现快速构建页面的能力。

前端研发同学完成本地模块开发后,将模块资源发布到网上。系统构建完成后,进行页面组装和上下文注入预览,然后完成页面级发布。在底层,NodeJS实现的源站系统还用于托管CDN内容的分发回源,为亿万用户提供访问预览。经过几代的发展和变革,该系统已经成为当前前端研发的核心场景之一。

2015年以来的几年里,随着技术的发展,淘宝的前端研发体系从最初的本地工具和研发部署平台为先锋,逐渐发展到线上线下的系统化专业解决方案。在保证前端角色基础研发经验不断突破升级的同时,企业级前端工程化建设将不断将日常分散的研发形式推向更加系统、高效、可扩展的研发模式,也为后续更高层次研发部署模式的突破和升级打下坚实的基础。

未来时代

基于逐渐成熟的工程体系,这几年我们也一直在思考对于提升研发效率的问题是否有更多突破性的、面向未来的解决方案。随着很多内部产品不断转型迭代,能够燎原的方向和模式不断涌现。

D2C

imgcook项目最初源于视觉构建,外部看到的研发模式也经历了不断的改进和变化。整个研发模式的变革,从外部来看大致经历了几个阶段:

第一阶段,当时有:个用户采用拖放页面元素的方式构建页面,然后发布源代码,然后上线。第二阶段,建立了图像扫描引擎进行像素扫描排版,并接入Sketch等可视化设计工具,自动转换设计稿。这个阶段,前端用户的研发方式开始转变为上传视觉稿到平台处理代码转换;第三阶段:目前的第三阶段,平台正在通过深度学习等人工智能技术提升图像编码转换能力,同时完善平台侧基础研发环节的开放。内部研发模式逐步切换为设计和代码工作台操作,实现一站式研发和在线操作体验。目前,D2C能力正在逐步在组件、表单、模块、页面智能还原的研发场景中得到验证,并取得了一定的成果。

IDE

在过去的一年里,我们也逐步投入新的IDE方向的建设,希望利用IDE的平台能力来孵化新的、更高效的研发模式。

外部趋势

从外部视角来看,可以看到有两个趋势浮出水面。一个是 IDE 领域相关的创业公司逐渐浮现出来,出现了许多相关的创业明星公司,例如有 Eclipse 体系下的 theia ,通过兼容 VSCode 接口实现的 coder,以及研发编辑领域的行业新秀 codesandbox;另一个是云厂商的加入,AWS 收购 Cloud9、腾讯收购 Coding、Azure 提供 Codespace 服务。

随着编辑器、Docker等技术的不断发展和成熟,各IDE相关服务厂商希望借助集成研发环境的能力,寻找提高研发效率和体验的机会,从而抢占用户’痛点。拓展产品市场。

内部体系

前端研发模式随着不断的分化、发展,涌现出越来越多的工具、服务。当下工具、服务的形式也不单单只是前文提到的命令行终端工具,或者说终端工具也逐渐成为了富交互的工具、服务的启动入口。同时一种业务研发模式往往也需要串联到不同体系、不同团队提供的研发工具、服务。举一个例子,例如当下支付宝小程序的研发,除了基础的编译服务、预览服务之外,需要用到模拟器、调试器、真机调试等等服务。

支付宝小程序其实是很多内部场景的一个缩影。目前支付宝小程序的解决方案是利用Electron平台打造本地IDE开发工具。在此背景下,系统也在去年开始构建IDE底层系统。期望可以通过一套IDE底层来实现在线和离线的基本IDE解决方案。

借助IDE底层的插件机制,淘溪也孵化出了自己的IDE集成研发工具。比如上面提到的D2C、支付宝小程序、Serverless等场景,都在进行着密集的内部扩展和使用提升。通过IDE以及IDE的插件系统,一方面我们利用VSCode生态来提升基础研发体验,另一方面利用超出VSCode能力的插件UI能力来提升基础研发体验。将涉及的所有方面连接到单个项目链接中。工具、服务。

与以往流程不同的是,除了线上发布和部署流程的串行整合之外,研发同学目前所有的研发流程操作,包括研发编码、调试预览、部署流程,都有机地在一个统一的平台上进行。研发IDE。连接起来,直接通过研发面板完成所有操作。这是我们为未来埋下的一颗种子,正在慢慢发芽。

整个回答实际上是从系统内部员工的角度向大家介绍了淘西前端研发和部署相关的一些流程。目前的研发模式我们也在夜以继日地探索和突破。最后我们来介绍一下团队是做什么的。

One More Thing

我们是桃溪前端团队-工程中端团队。作为淘西前端和阿里巴巴集团前端的前端研发基础设施,我们目前正在构建前端工程相关的系统。主要有几件事。

1、下一代前端研发模型:构建阿里IDE开天核心底层,借助底层两端一致性、可视化插件系统等基础能力,深度整合现有研发服务资产建立当前和未来的研发模型。新的领域正在等待着您。构建

2、前端工程基础服务:基于NodeJS、Docker等能力构建前端研发持续集成流程。数以百万计的任务等待你优化和挑战。

3、大型CDN源站:基于NodeJS实现集团核心CDN会员核心服务,大规模基础设施推广,数十亿流量等你“开飞机换引擎”

推荐JavaScript经典实例学习资料文章

《「图文」V8 垃圾回收原来这么简单?》

《Webpack 5模块联邦引发微前端的革命?》

《基于 Web 端的人脸识别身份验证「实践」》

《「前端进阶」高性能渲染十万条数据(时间分片)》

《「前端进阶」高性能渲染十万条数据(虚拟列表)》

《图解 Promise 实现原理(一):基础实现》

《图解 Promise 实现原理(二):Promise 链式调用》

《图解 Promise 实现原理(三):Promise 原型方法实现》

《图解 Promise 实现原理(四):Promise 静态方法实现》

《实践教你从零构建前端 Lint 工作流「干货」》

《高性能多级多选级联组件开发「JS篇」》

《深入浅出讲解Node.js CLI 工具最佳实战》

《延迟加载图像以提高Web网站性能的五种方法「实践」》

《比较 JavaScript 对象的四种方式「实践」》

《使用Service Worker让你的 Web 应用如虎添翼(上)「干货」》

《使用Service Worker让你的 Web 应用如虎添翼(中)「干货」》

《使用Service Worker让你的 Web 应用如虎添翼(下)「干货」》

《前端如何一次性处理10万条数据「进阶篇」》

《推荐三款正则可视化工具「JS篇」》

《如何让用户选择是否离开当前页面?「JS篇」》

《JavaScript开发人员更喜欢Deno的五大原因》

《仅用18行JavaScript实现一个倒数计时器》

《图文细说JavaScript 的运行机制》

《一个轻量级 JavaScript 全文搜索库,轻松实现站内离线搜索》

《推荐Web程序员常用的15个源代码编辑器》

《10个实用的JS技巧「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(一)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(二)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(三)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(四)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(五)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(六)「值得收藏」》

《深入JavaScript教你内存泄漏如何防范》

《手把手教你7个有趣的JavaScript 项目-上「附源码」》

《手把手教你7个有趣的JavaScript 项目-下「附源码」》

《JavaScript 使用 mediaDevices API 访问摄像头自拍》

《手把手教你前端代码如何做错误上报「JS篇」》

《一文让你彻底搞懂移动前端和Web 前端区别在哪里》

《提高你的 JavaScript 技能10 个问答题》

《JavaScript图表库的5个首选》

《一文彻底搞懂JavaScript 中Object.freeze与Object.seal的用法》

《可视化的 JS:动态图演示 – 事件循环 Event Loop的过程》

《教你如何用动态规划和贪心算法实现前端瀑布流布局「实践」》

《可视化的 js:动态图演示 Promises Async/Await 的过程》

《原生JS封装拖动验证滑块你会吗?「实践」》

《如何实现高性能的在线 PDF 预览》

《细说使用字体库加密数据-仿58同城》

《Node.js要完了吗?》

《Pug 3.0.0正式发布,不再支持 Node.js 6/8》

《纯JS手写轮播图(代码逻辑清晰,通俗易懂)》

《JavaScript 20 年 中文版之创立标准》

淘宝8年案例讲解各大厂商如何开发和部署前端代码

《值得收藏的前端常用60余种工具方法「JS篇」》

《箭头函数和常规函数之间的 5 个区别》

《通过发布/订阅的设计模式搞懂 Node.js 核心模块 Events》

《「前端篇」不再为正则烦恼》

《「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能》

《深入细品浏览器原理「流程图」》

《JavaScript 已进入第三个时代,未来将何去何从?》

《前端上传前预览文件 image、text、json、video、audio「实践」》

《深入细品 EventLoop 和浏览器渲染、帧动画、空闲回调的关系》

《推荐13个有用的JavaScript数组技巧「值得收藏」》

《前端必备基础知识:window.location 详解》

《不要再依赖CommonJS了》

《36个工作中常用的JavaScript函数片段「值得收藏」》

《Node + H5 实现大文件分片上传、断点续传》

《一文了解文件上传全过程(1.8w字深度解析)「前端进阶必备」》

《【实践总结】关于小程序挣脱枷锁实现批量上传》

《手把手教你前端的各种文件上传攻略和大文件断点续传》

《字节跳动面试官:请你实现一个大文件上传和断点续传》

《谈谈前端关于文件上传下载那些事【实践】》

《手把手教你如何编写一个前端图片压缩、方向纠正、预览、上传插件》

《最全的 JavaScript 模块化方案和工具》

《「前端进阶」JS中的内存管理》

《JavaScript正则深入以及10个非常有意思的正则实战》

《前端面试者经常忽视的一道JavaScript 面试题》

《一行JS代码实现一个简单的模板字符串替换「实践」》

《JS代码是如何被压缩的「前端高级进阶」》

《前端开发规范:命名规范、html规范、css规范、js规范》

《【规范篇】前端团队代码规范最佳实践》

《100个原生JavaScript代码片段知识点详细汇总【实践】》

《关于前端174道 JavaScript知识点汇总(一)》

《关于前端174道 JavaScript知识点汇总(二)》

《关于前端174道 JavaScript知识点汇总(三)》

《几个非常有意思的javascript知识点总结【实践】》

《都2020年了,你还不会JavaScript 装饰器?》

《JavaScript实现图片合成下载》

《70个JavaScript知识点详细总结(上)【实践】》

《70个JavaScript知识点详细总结(下)【实践】》

《开源了一个 JavaScript 版敏感词过滤库》

《送你 43 道 JavaScript 面试题》

《3个很棒的小众JavaScript库,你值得拥有》

《手把手教你深入巩固JavaScript知识体系【思维导图】》

《推荐7个很棒的JavaScript产品步骤引导库》

《Echa哥教你彻底弄懂 JavaScript 执行机制》

《一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧》

《深入解析高频项目中运用到的知识点汇总【JS篇】》

《JavaScript 工具函数大全【新】》

《从JavaScript中看设计模式(总结)》

《身份证号码的正则表达式及验证详解(JavaScript,Regex)》

《浏览器中实现JavaScript计时器的4种创新方式》

《Three.js 动效方案》

《手把手教你常用的59个JS类方法》

《127个常用的JS代码片段,每段代码花30秒就能看懂-【上】》

《深入浅出讲解 js 深拷贝 vs 浅拷贝》

《手把手教你JS开发H5游戏【消灭星星】》

《深入浅出讲解JS中this/apply/call/bind巧妙用法【实践】》

《手把手教你全方位解读JS中this真正含义【实践】》

《书到用时方恨少,一大波JS开发工具函数来了》

《干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)》

《手把手教你JS 异步编程六种方案【实践】》

《让你减少加班的15条高效JS技巧知识点汇总【实践】》

《手把手教你JS开发H5游戏【黄金矿工】》

《手把手教你JS实现监控浏览器上下左右滚动》

《JS 经典实例知识点整理汇总【实践】》

《简单几步让你的 JS 写得更漂亮》

《恭喜你获得治疗JS this的详细药方》

《谈谈前端关于文件上传下载那些事【实践】》

《面试中教你绕过关于 JavaScript 作用域的 5 个坑》

《Jquery插件(常用的插件库)》

《【JS】如何防止重复发送ajax请求》

用户评论

淘宝8年案例讲解各大厂商如何开发和部署前端代码
陌潇潇

看了这篇淘宝8年案例讲解,学到了不少前端开发的门道。感觉各大厂商在部署代码时,细节处理真的很关键。

    有12位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
心已麻木i

8年的经验分享,真难得啊!前端代码开发和部署,原来还可以这样操作,感觉之前的方法都白学了。

    有17位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
暮光薄凉

这篇淘宝案例讲解太实用了,我刚好在做一个类似的项目,学到了很多新思路。

    有20位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
灼痛

感觉这个案例讲解把前端代码开发和部署的难点都讲透了,以前遇到的问题现在想想也能找到解决办法了。

    有11位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
浮殇年华

淘宝这个案例让我对前端开发有了更深的理解,以后在团队协作中也能更好地指导工作了。

    有14位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
容纳我ii

这个案例讲解让我对前端代码的开发流程有了全新的认识,感觉自己之前太粗心了。

    有9位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
何必锁我心

8年经验真不是盖的,淘宝这个案例讲解,让我对前端开发的细节有了更深刻的理解。

    有13位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
巷口酒肆

文章里提到的各大厂商的代码部署方法,感觉和我们的项目需求很契合,谢谢分享!

    有14位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
万象皆为过客

这篇案例讲解让我对前端代码的开发有了新的认识,感觉自己之前一直走错了路。

    有6位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
醉枫染墨

感觉这个案例讲解对初学者来说有点难,如果能加上一些基础知识就更好了。

    有13位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
珠穆郎马疯@

淘宝这个案例让我对前端代码的开发有了全新的认识,感觉之前的方法太落后了。

    有8位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
西瓜贩子

案例讲解中的工具和技巧都很实用,打算用这些方法优化一下我们公司的项目。

    有11位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
陌離

8年经验的分享,让我对前端代码的开发有了更全面的了解,谢谢作者的用心。

    有16位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
艺菲

这篇案例讲解让我对前端代码的开发有了新的启发,感觉自己之前的方法太简单了。

    有13位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
有你,很幸福

文章中的代码部署技巧,让我对团队协作有了新的认识,感觉能提升团队效率。

    有11位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
肆忌

淘宝这个案例讲解,让我对前端代码的开发有了全新的认识,感觉之前的经验都白费了。

    有5位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
身影

8年经验的分享,让我对前端代码的开发有了更深刻的理解,以后开展工作更有信心了。

    有12位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
江山策

感觉这篇案例讲解对前端开发人员来说很有帮助,希望能有更多类似的经验分享。

    有7位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
┲﹊怅惘。

这个案例讲解让我对前端代码的开发流程有了全新的认识,感觉自己之前的方法太落后了。

    有11位网友表示赞同!

淘宝8年案例讲解各大厂商如何开发和部署前端代码
绳情

感谢作者的分享,这篇淘宝8年案例讲解让我对前端代码的开发有了更全面的了解。

    有9位网友表示赞同!

综合资源

淘宝美术设计快速基础代码教程,适合电商初学者

2024-9-28 6:32:52

综合资源

董进宇-高分高能方略

2024-9-28 6:37:27

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索