轻识Logo
目录

    ESLint 在中大型团队的应用实践

    来源 | https://www.fly63.com/


    使用背景

    代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到,并或多或少会思考过这一问题。随着前端应用的大型化和复杂化,越来越多的前端工程师和团队开始重视 JavaScript 代码规范。

    主要解决的问题:

    对于独立开发者,或者执行力较强、技术场景较为单一的小型团队而言,直接使用 ESLint 及其生态提供的一些标准方案,可以用较低成本来实现 JavaScript 代码规范的落地。如果再搭配一些辅助工具(例如 husky 和 lint-staged),整个流程会更加顺畅。

    ESLint对工程代码进行静态检查,发现和修复不符合规范的代码。如果想降低配置成本,也可以直接使用开源配置方案,例如 eslint-config-airbnb 或 eslint-config-standard。

    一、理解代码检查

    代码检查,顾名思义就是检查代码,发生于开发阶段,可有效帮助开发者减少 JavaScript 粗心代码,如语法错误、变量未定义、变量未使用等等问题。除此之外,代码检查还可以约束统一开发人员的代码风格,利于团队协作。

    我们再从三个方面来展开分析,加深对代码检查的实践理解。

    这三个方面分别为以下三点:

    1)、代码检查的功能

    2)、代码检查的类型

    3)、代码检查的工具

    1、代码检查的功能

    代码检查这个切面大概可以帮助我们做以下三件事情:

    • 语言语法检查:比如检查出字符串引号或者函数调用括号没有匹配等问题。
    • 编码错误检查:比如检查出开发者在使用一个不存在的变量或者变量定义了却没有使用等问题。
    • 代码风格检查:比如检查出开发者没有使用分号(与所选风格有关)等问题。

    2、代码检查的方式

    以代码检查发生的不同时间和场景来划分,我把代码检查的方式分类成以下四种:

    • 编码时检查:编写代码时检查,通常表现为由 IDE 自动实时检查并进行代码提示。
    • 编码后检查:编写代码后检查,通常表现为手动调用检查脚本 / 工具进行代码的检查或者代码保存后由 IDE 自动检查当前文件。
    • 构建前检查:构建执行前检查,通常表现为将代码检查作为构建任务的一个前置切面,构建时自动触发代码检查。
    • 提交前检查:git commit 前检查,通常表现为将代码检查作为 git commit 的一个 hooks 任务,代码提交前自动触发代码检查。

    理解代码检查的方式很重要,这直接反映对代码检查这个概念本身的掌握程度。

    3、代码检查工具

    代码检查的实现通常不会仅仅是字符串分析处理,这其中会大量涉及到语法分析。既然涉及到语法,那么就需要对不同的代码使用不同的代码检查工具,通常来说,我们会使用 Eslint 工具来实现对 JavaScript 和 Typescript 代码的检查,使用 stylelint 工具对样式代码进行代码检查。

    二、ESLint 特性简介

    目前较为通用的方案——ESLint,它是一款插件化的 JavaScript 代码静态检查工具,其核心是通过对代码解析得到的 AST(Abstract Syntax Tree,抽象语法树)进行模式匹配,定位不符合约定规范的代码。

    1、插件化

    下图简单地描述了 ESLint 的工作过程:


    ESLint 的能力更像一个引擎,通过提供的基础检测能力和模式约束,推动代码检测流程的运转。
    原始代码经过解析器的解析,在管道中逐一经过所有规则的检查,最终检测出所有不符合规范的代码,并输出为报告。
    借助插件化的设计,不但可以对所有的规则进行独立的控制,还可以定制和引入新的规则。
    ESLint 本身并未和解析器强绑定,我们可以使用不同的解析器进行原始代码解析,例如可以使用 babel-eslint 支持更新版本、不同阶段的 ES 语法,支持 JSX 等特殊语法,甚至可以借助 @typescript-eslint/parser 支持 TypeScript 语言的检查。

    2、配置能力全面、可层叠、可共享

    ESLint 提供了全面、灵活的配置能力,可以对解析器、规则、环境、全局变量等进行配置;可以快速引入另一份配置,和当前配置层叠组合为新的配置;还可以将配置好的规则集发布为 npm 包,在工程内快速应用。

    3、社区生态较为成熟

    开源社区中基于 ESLint 的项目非常多,既有针对各种场景、框架的插件,也有各种 ESLint 规则配置方案,基本可以涵盖前端开发的所有场景。

    4、规范配置方案设计

    基于 ESLint 的插件化、可层叠配置特性,以及面向各种场景、框架的开源方案,如下图所示的 ESLint 配置架构:


    「美团技术团队」

    该配置架构采用了分层、分类的结构,其中:

    • 基础层:制定统一的基础语法和格式规范,提供通用的代码风格和语法规则配置,例如缩进、尾逗号等等。

    • 框架支撑层(可选):提供对通用的一些技术场景、框架的支持,包括 Node.js、reactvue、React Native 等;这一层借助开源社区的各种插件进行配置,并对各种框架的规则都进行了一定的调整。

    • TypeScript 层(可选):这一层借助typescript-eslint,提供对 TypeScript 的支持。

    • 适配层(可选):提供对特殊场景的定制化支持,例如 MRN(美团内部的 React Native 定制化方案)、配合 prettier 使用、或者某些团队的特殊规则诉求。

    *具体各个规则如何配置可以查看:https://eslint.org/docs/rules


    学习更多技能

    请点击下方公众号

    浏览 19
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    举报
    元数据管理在数据仓库的实践应用
    浪尖聊大数据
    0
    元数据管理在数据仓库的实践应用
    数据分析挖掘与算法
    0
    中小型前端团队代码规范工程化最佳实践 - ESLint
    SegmentFault
    0
    Flink 在 58 同城的应用与实践
    浪尖聊大数据
    0
    机器视觉在商用车生产线的应用实践
    新机器视觉
    0
    超分辨率在移动实时音视频的应用实践
    在 RTC 2019实时互联网大会上,声网Agora AI 算法工程师周世付,分享了超分辨率应用于移动端实时音视频场景下,遇到的难点、通用解决方法,以及解决思路。 近年来,超分辨率(简称超分)在图像增强、去噪、细节恢复、图像放大方面展现出广阔的应用前景,成为计算机视觉领域的研究热点,受到学术界和工业界的关注和重视,业界也纷纷举办超分竞赛,比如优酷的视频超分竞赛、声网的图像超分竞赛和深圳市政府举办的AI+4K HDR竞赛,旨在吸引更多的人参与超分算法的研究和促进超分算法的落地。因为超分算法的大规模应用落地还存在一些亟需解决的问题。 移动端实时超分的难点 目前,移动端实时音视频应用目前存在的一个痛点问题是传输的视频分辨偏低,而终
    声网Agora
    0
    Hudi on Flink在顺丰的实践应用.ppt
    肉眼品世界
    0
    Flink 在广告业务的实践
    浪尖聊大数据
    0
    基于 Kafka 的实时数仓在搜索的实践应用
    浪尖聊大数据
    0
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    举报

    深圳SEO优化公司信阳企业网站设计推荐吉安品牌网站设计哪家好柳州网站推广系统多少钱淄博SEO按天计费价格乌海如何制作网站延安seo排名推荐通辽网页制作价格鞍山外贸网站设计公司莆田营销网站价格朝阳百度网站优化哪家好飞来峡SEO按天扣费多少钱固原百搜标王公司怀化百度seo哪家好孝感SEO按效果付费推荐漯河网站优化按天扣费哪家好濮阳网站关键词优化凉山网络营销价格海口百度关键词包年推广报价韶关百度关键词包年推广推荐银川如何制作网站公司同乐建网站哪家好宿迁SEO按天扣费价格那曲网站推广工具推荐濮阳网站开发哪家好晋中企业网站改版价格盐田建网站价格黄石企业网站建设哪家好长沙网站搜索优化昌吉网站推广系统价格南宁网站关键词优化推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化