首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端代码质量—怎样实现一个支持多语言、高扩展性 Linter

比如末尾分号,有些规范禁止末尾分号,有些规范要求末尾分号,有些规范无所谓末尾分号,这时候就需要配置告诉规则,该如何针对输入代码进行诊断。有些规则可能没有配置。...Linter 假设我们 Linter 名字是 MyLinter。 MyLinter 是一个自顶向下架构。 对任何语言来说,该语言 Linter 就是一个输入代码文本,输出诊断函数。...,返回该文本诊断结果 给定代码文本、文件名及其他必要信息,返回该文本自动修复结果 实际上,Linter 一般会有更多方法,比如: 搜索指定文件夹内该文件类型文件 中断检查 MyLinter...引擎需要准备 Linter 实例,并负责: 按照顺序调度 Linter 检查指定文件夹 将单个文件诊断请求分配到合适 Linter 执行并返回诊断结果 将单个文件自动修复请求分配到合适 Linter...执行并返回应用自动修复结果 需要时候中断检查请求 命令行中输出诊断结果并如期退出(没错误以 0 退出,有错误以 -1 退出) Engine 诊断指定目录 命令行工具最大一个用处就是诊断当前目录下所有文件

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

前端代码质量—怎样实现一个支持多语言、高扩展性 Linter

比如末尾分号,有些规范禁止末尾分号,有些规范要求末尾分号,有些规范无所谓末尾分号,这时候就需要配置告诉规则,该如何针对输入代码进行诊断。有些规则可能没有配置。...Linter 假设我们 Linter 名字是 MyLinter。 MyLinter 是一个自顶向下架构。 对任何语言来说,该语言 Linter 就是一个输入代码文本,输出诊断函数。...,返回该文本诊断结果 给定代码文本、文件名及其他必要信息,返回该文本自动修复结果 实际上,Linter 一般会有更多方法,比如: 搜索指定文件夹内该文件类型文件 中断检查 MyLinter...引擎需要准备 Linter 实例,并负责: 按照顺序调度 Linter 检查指定文件夹 将单个文件诊断请求分配到合适 Linter 执行并返回诊断结果 将单个文件自动修复请求分配到合适 Linter...执行并返回应用自动修复结果 需要时候中断检查请求 命令行中输出诊断结果并如期退出(没错误以 0 退出,有错误以 -1 退出) Engine 诊断指定目录 命令行工具最大一个用处就是诊断当前目录下所有文件

1.4K20

前端代码乱糟糟?是时候引入代码质量检查工具了

警告即可 'react/no-string-refs': 'warn', // 必须使用 Class 形式创建组件 // @warn 警告即可...里面使用 setState // @warn 警告即可 'react/no-did-update-set-state': 'warn', // 组件内方法必须按照一定规则排序...Sublime中配置 sublime安装对应linter工具,以SublimeLinter工具为基础进行配置 Ctrl+Shift+P 调出安装插件层,输入关键字 sublimelinter 进行搜索安装...HTMLHint不提供自动修复功能  4. WebStorm中配置 打开设置 ? 启用内置ESLint检查 ? 启用内置StyleLint检查 ?...webpack中配置 参考我webpack项目配置DEMO, webpack.config.js 中传入相应参数 ? 正式使用时autoFix会按需设置,建议修复

2.6K10

如何React中写出更好代码

---- propTypes and defaultProps 在前面的章节中,我谈到了当我试图传递一个未经验证props时,我linter如何表现: static propTypes = {...当这些props没有得到它们所期望数据时,你错误日志会让你知道,你要么传入东西不正确,要么期望东西不存在,这使得错误查找变得更加容易,特别是当你正在编写大量可重复使用组件时。...这样做好处是,你将你组件定义为一个返回一些数据恒定函数。 简单地说,无状态功能组件只是返回JSX函数。 纯组件 通常情况下,当一个组件得到一个新props时,React会重新渲染这个组件。...那么,你如何知道React何时会触发不必要重新渲染?你可以看看这个神奇React包,叫做Why Did You Update。这个包会在潜在不必要重新渲染发生时控制台中通知你。...如果你遇到一些你可能没有完全理解问题,或者你了解React如何工作,那么React Internals将帮助你理解React中何时和如何正确做事。

2.5K10

React 设计模式 0x0:典型反例和最佳实践

学习如何轻松构建可伸缩 React 应用程序:典型反例和最佳实践。 # 反例 # 内联样式 或 CSS 内联样式使用起来非常简单,只需要在元素上添加一个 style 属性即可。...然而,我们有时会编写过于冗长和难以阅读组件,包括从逻辑到显示呈现所有内容。这会导致调试和修复困难。 # Props 穿透 当我们需要在组件树中传递数据时,我们可以使用 props。...但是,当我们需要在组件树中传递函数时,我们就会遇到问题。这是因为,当我们组件树中传递函数时,我们需要将函数传递给每个组件,这会导致组件树变得非常深。...当我们编写组件时,第一个渲染中插入 div 元素想法就会浮现,无论是组件 render 方法中还是函数组件返回语句中。虽然这种做法有效,但它并没有为浏览器提供足够信息。...应用程序中使用 Linter 和其规则可以让您工作更轻松。

1K10

从echarts-for-react源码中学习如何写单元测试

前言 如果你熟悉React和Echarts的话,应该有用到过 echarts-for-react(虽然它现在没有维护了),本文就通过它写测试用例来学习下如何写单元测试 如何测试function 有如下函数...函数后,希望它返回值符合我期望 expect(pick({ a: 1 }, [])).toEqual({}); expect(pick({ a: 1 }, ['b'])).toEqual...,但它们值是一样,也是可以 小结 对于有返回值function,就是通过判断「返回值」,是否与「期望值」相等即可 这样好处: ① 当有新需求要扩展该函数时,可以保证该函数返回值仍保持不变,进而不会影响到使用到该函数旧需求...② 当测试函数比较复杂时,非常方便,不用了解内部详细代码,只需返回值符合期望即可 如何测试ReactComponent 当我写完一个React组件时,我该如何测试它呢?...mount()/shallow()/render()区别 ⑤ toEqual()和toBe()区别 ⑥ 如何测试DOM节点上属性 ⑦ 如何测试React组件实例上属性 ⑧ 如何测试组件props

6.1K50

Hooks概览(译)

函数组件中调用useState来向它添加一些本地state。React将在重新渲染之间保留此状态。useState返回一对值:当前 state 值和一个用于更新这个值函数。...Hooks是一个“钩住”React state和生命周期特性函数组件。Hooks类中不起作用——它们让你在没有类情况下使用React。...Effects函数组件内被声明,因此可以访问其props和state。默认情况下,React每次渲染后都运行effects函数——包括第一次渲染。...(我们将在使用Effect Hook章节中更多地讨论这与类中生命周期比较。) Effects还可以通过返回函数指定如何“清理”它们。...如果函数名称以“use”开头并且它可以调用其他Hook,则称之为自定义Hook。useSomething命名约定是为了让linter插件使用Hooks代码中查找错误。

1.8K90

为什么我会选择 React 而不是 Vue?

React 使用者中,有一个非常常见且真实口头禅,那就是“这只是 Javascript”(“it’s just Javascript”),Vue 似乎有很多不必要功能,这就会让组件更难理解,下面给出一些例子...: 模板 一个 React 组件可以简单地被认为是返回元素函数(或者至少有一个具有这样功能类)。...如果我将一些静态数据导入到我 React 组件中,我可以渲染函数中使用它,因为所有标准 JavaScript 作用域规则都应用于此。 它只是一个 函数,与其他任何 函数 完全一样。...另外,由于模板和 Javascript 不同范围内运行,所以对于 linter (此处 Linter 参考维基百科) 来说,模板中缺少/拼错变量是不可能(至少目前是这样)。...同样,React 是一个 reducer 渲染函数,它将 props 传入一个元素当中,React 状态变化也是简单函数将旧状态和一个动作变成一个新状态。

1.3K20

WebStorm for Mac(JavaScript开发工具)中文版

这些检查在TypeScript和模板文件中都有效,并检查绑定,指令,组件和许多其他内容使用。...Angular项目中导航更容易Angular应用程序中,您现在可以使用相关符号...弹出窗口(Ctrl-Cmd-Up / Ctrl + Alt + Home)不同组件文件(如TypeScript...React钩子提取方法该提取方法重构现在与当地功能和使用解构返回值,使得它非常适合提取自定义作出反应挂钩。...改进了道具完成WebStorm现在为使用扩展运算符合并React props提供了更好代码完成。...改进了对短绒支持WebStorm现在可以 一个项目中为ESLint和TSLint运行多个进程,以确保它们单个项目和具有多个linter配置项目中正常工作 。

4.9K50

如何不编译使用 TypeScript

以下示例将为我们示范如何对一个两个参数并有返回值函数进行类型描述: // @ts-check /** * @param {number} a * @param {number} b * @return...类型分析能过跨文件按照期望方式工作,这是因为 TypeScript 能够识别 ES6 import 语句以及 Node require 载入声明。 除了注释函数之外,还可以描述任意对象结构。...异步立即执行函数内部,我们将 GitHub API 返回结果复制给了 issues 变量,声明上方有一个类型注释表示 issues是 Issue类型对象数组。...它感觉像使用 TypeScript 作为一个非常聪明 linter 而不是一种编程语言。...---- 往期精选文章 使用虚拟dom和JavaScript构建完全响应式UI框架 扩展 Vue 组件 使用Three.js制作酷炫无比无穷隧道特效 一个治愈JavaScript疲劳学习计划 全栈工程师技能大全

1.9K40

五个特性,让你升级React

Error boundaries 组件会捕获渲染期间,在生命周期方法以及其整个树构造函数中发生错误。...overflow: hidden 或 z-index 样式时,但你需要子组件能够视觉上“跳出”其容器。...Hooks本质就是一类特殊js函数,可以让本来无状态函数组件变成有状态函数组件内部hook组件state和lifecycle。 Hooks特性是可选用,并且向后兼容。...(或者自定义 Hook 中)被调用,不能在if中、循环语句、子函数中使用; 可以使用一个linter插件eslint-plugin-react-hooks,这个插件会让你遵守这些规则。...在下一篇React系列总结中,会详细介绍如何把一个旧项目从React v15升级到当前最新React v16.8。

2.2K111

React 17 RC 版发布:无新特性,却有新期待!

- 举个例子,如果你代码 React 事件处理器之外调用 e.stopPropagation() 时出了 bug, 它可能会修复代码中错误。... React 16 及更早版本中,你必须调用 e.persist() 才能正确使用该事件,或者你也可以提前读取你需要属性。 React 17 中,此代码会如你期望地运行。... React 17 中, effect 清理函数也是异步运行 - 例如,如果要卸载组件,清理函数将在屏幕更新后运行。 这反映了 effect 本身是如何更紧密运行。.... // React 会把它标记为 error 而非忽略它 ; } 过去,React 仅对类和函数组件执行此操作,但不检查 forwardRef 和 memo 组件返回值... React 17 中,forwardRef 和 memo 组件行为与普通函数和类组件一致。它们返回 undefined 会被视为错误。

2.4K20

快速上手 React Hook

Hook 是一个特殊函数,它可以让你“钩入” React 特性。例如,useState 是允许你 React 函数组件中添加 state Hook。稍后我们将学习其他 Hook。... React class 组件中,render 函数是不应该有任何副作用。一般来说,在这里执行操作太早了,我们基本上都希望 React 更新 DOM 之后才执行我们操作。...我们提供了一个 linter 插件来强制执行这些规则: 「只最顶层使用 Hook」 「不要在循环,条件或嵌套函数中调用 Hook,」 确保总是在你 React 函数最顶层以及任何 return 之前调用他们...你可以: ✅ React 函数组件中调用 Hook ✅ 自定义 Hook 中调用其他 Hook 遵循此规则,确保组件状态逻辑代码中清晰可见。...目前为止, React 中有两种流行方式来共享组件之间状态逻辑: render props 和高阶组件,现在让我们来看看 Hook 是如何在让你不增加组件情况下解决相同问题

4.9K20

React】377- 实现 React状态自动保存

,会回到列表页顶部,因为列表页组件被路由卸载后重建了,状态被丢失 如何实现 React状态保存 Vue 中,我们可以非常便捷地通过 [1] 标签实现状态保存,该标签会缓存不活动组件实例...周期进行数据恢复 需要保存状态较少时,这种方式可以比较快地实现我们所需功能,但在数据量大或者情况多变时,手动保存状态就会变成一件麻烦事了 作为程序员,当然是尽可能懒啦,为了不需要每次都关心如何对数据进行保存恢复...,我们需要研究如何自动保存状态 通过路由实现自动状态保存(通常使用 react-router) 既然 React 中状态丢失是由于路由切换时卸载了组件引起,那可以尝试从路由机制上去入手,改变路由对组件渲染行为.../blob/master/packages/react-router/modules/Route.js#L41-L72 // 节选自 Route 组件 render 函数 if (typeof children...React.lazy 失效 React 合成事件冒泡失效 其他未发现功能 但上述问题,大多数是可以通过桥接机制修复 相同、更早实现还有 react-keep-alive[10] 结语 状态缓存是应用中十分常见需求

2.8K30

4 个 useState Hook 示例

React 16.8 目前为止,如果编写函数组件,然后遇到需要添加状态情况,咱们就必须将组件转换为类组件。...编写 class Thing extends React.Component,将函数体复制到render()方法中,修复缩进,最后添加需要状态。...通过函数组件中调用useState,就会创建一个单独状态。 组件中,state 总是一个对象,可以该对象上添加保存属性。...如果每次渲染都调用它(确实如此),它又是如何保留状态。 Hooks 实现技巧 这里“神奇”之处是,React每个组件幕后维护一个对象,并且在这个持久对象中,有一个“状态单元”数组。...这也不是很神奇事情,主要它依赖于你可能没有想过事实:咱们写组件是由React调用 ,所以它可以调用组件之前事先做好一些工作。 而且,渲染组件行为不仅仅是函数调用。

95020

React 中无用但可以装逼知识

React如何区分类组件函数组件 我们可以考虑从几种方式: 统一使用new方法来生成实例 问题: 对于函数组件而言,这样会让它们生成一个多余this作为对象实例。 对于箭头函数而言,会报错。...我们都知道,使用new操作符后,只有当函数返回非null 和非undefined对象时候,返回值才会生效。否则new操作符返回值都会是对象。...之后,React 0.14就修复了这个问题,修复方式就是通过引入$$typeof属性,并且用Symbol来作为它值。...总结 React会给React.Component.prototype增加一个isReactElement标志。这样,React就可以渲染时候判断当前渲染组件是类组件还是函数组件。...React Element是一个用于描述要渲染页面结构一个不可变对象。React函数组件和类组件执行到最后,其实都是生成一个React Elements树。

82640

TDesign 更新周报(2022年9月第1周)

@ZTao-z (#1456)修复 onColumnControllerVisibleChange  trigger 参数返回错误问题 @sechi747 (#1456)修复设置 type =...multiple 时,设置 className 不起作用问题 @RainyLiao (#1441)修复表格部分元素无法随 Table 变化而改变问题,如:空数据等,tdesign-react#1319...(vue-next #1570)修复输入时 entry 键会默认全选第一个选项全部内容 (vue-next #1529)修复通过 SelectInputProps 透传方法属性导致传入 SelectInput...: 修复 classname 透传问题,closebtn/icon 无法支持 bool 设置 @carolin913 (#1417)Table:修复 editableCellState 返回值期望相反问题...: 新增更多图标 @anlyyao (#838) Bug FixesTab: 修复滑块定位错误问题 @CodingOnStar (#781)NoticeBar: 解决函数同名导致控制台报错 @anlyyao

2.6K20
领券