eslint server is running 怎么关闭_统一前端技术栈在网易严选的强势落地是怎么做到的...

本文探讨了前端工程化的挑战和目标,包括规范保障、提效和减少人力。文章介绍了从Angular到React技术栈转变后,团队如何制定和实施一套完善的工程化方案。该方案包括规范约束、自动化工具、资源复用和项目升级,通过插件化和schematics实现扩展性和易用性。此外,文章还讨论了如何通过统一命令层和数据统计与分析来优化项目生命周期。
摘要由CSDN通过智能技术生成
作者 | 扑扑香 策划 | 田晓旭

前端日益发展,从最初的 HTML、CSS、JavaScript 三大基础,到后来的 jQuery、Backbone、AngularJS,再到现在的 Angular、React、Vue 三大框架流行,技术的演进既带来了更多的可能,也带来了一些问题。例如:团队如何高效合作、项目如何统一维护、代码如何规范等等。前端工程化的出现,就是为了解决这些日益突出的问题。它旨在制订规范化的前端工作流,并规范统一项目的模块化开发和前端资源,让代码的维护和互相协作更加容易更加方便。

今年我们团队由 Angular 技术栈转变成 React 技术栈,在这个大背景下,我们急需一套完善的工程化方案来帮助技术栈落地。在通过确定目标、定义规范、技术调研、开发实现等一系列步骤之后,制定了一套完善的工程化方案。它帮助解决开发流程中的问题,让开发更加专注业务本身,提高整个系统生产效率。

目标定义作为一个工程化方案,最终的目标是尽可能解决项目生命周期里遇到的问题,例如:

  • 规范保障

每个团队都会根据实践经验,总结出一套自己的规范(项目规范和流程规范)。让这一套规范在落地到实际的开发中时,除了人为的约束,更多的应该是通过工具约束。工程化就是把团队的经验沉淀到脚手架和开发套件中,让新项目或新成员可以复用这些经验。

  • 提效

一个好的工程化方案,是可以提升开发效率的,这个提效包括初始化项目,完备项目的 dev 环境,数据 mock,build 打包等一系列流程,既要让项目“搭建 - 开发 - 部署”更快捷高效,也要方便项目的后期维护和迭代。

  • 减少人力

在开发过程中可能会遇到一些重复人力的工作。例如 A、B 两个系统有一个相似的列表页,这个列表页不能作为组件抽离,但是又在多处能用到,这部分资源(代码模板)复用急需一个中间媒介来完成。假如资源 / 项目需要升级了,大多情况是资源开发者出一个升级文档,然后升级的人按照文档一步步修改。这是很重复的一份工作,因为假如你手上有十个项目,你就需要把相同的事情做十遍,这一步重复的工作我们希望可以通过工具来完成。

同时,我们的工程化方案应该符合以下四个特点:

  • 渐进式(技术演化能力)易于迭代
  • 扩展性(可伸缩、可插拔)易于部门共建
  • 易用性(贴合实际)易落地
  • 数据统计与分析
 方案设计  

基于以上的目标,下面来看一下整个工程化的方案设计。

首先,介绍整个方案的架构图:

305fbbb9ad24e2d783020672eb64b317.png 架构图

可以看到整个架构图分为四层:

 底层依赖

最底层依赖了规范、webpack、schematics、node、eslint,它是上次架构的基石。

  • 规范这里包括了项目规范和流程规范,是整套方案需要遵守的约定;因为这套规范是根据大量的实际业务总结出来的,所以它是贴合业务场景,便于整体方案落地的。
  • schematics 引入主要是为了解决上面说到的资源相关的问题,后面会详细讲到。
 插件封装层

这一层主要是对上层需要实现的功能做一个划分,然后通过插件的形式实现。例如:

  • 将一系列模板抽离作为一个集合,然后将项目初始化时需要做的模板选择和模板处理放到 init 插件中完成,不同团队可以根据规范自定义插件;
  • 开发编译阶段需要的 webpack 和 server、build 脚本放在 @sharkr/scripts 插件中完成,不同团队可以根据规范自定义插件;
  • 前面说到的资源复用和资源升级问题,统称为文件处理相关,@sharkr/schematics-cli 插件提供这个能力;
  • @sharkr/eslint-config-re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值