2020-02-28-JS相关技术名词
今天中午有收到Egg团队公开的文件调查,提及了很多技术名词,虽然不一定用到,但我也觉得列举出来会方便大家了解和比较,后续可能更新我用过的部分
代码检查工具
- ESLint
- JSCS
- JSHint
- JSDoc
- Standard
- TSLint
- Flow
引入目的:规范代码 | |
---|---|
ESLint | 通过extend继承某一个大类,然后配置rules来进行代码规范 |
JSCS | |
JSHint | |
JSDoc | |
Standard | |
TSLint | |
Flow |
使用感受
解决了以下问题
- node是一门弱语言,进行校验(非变量类型校验,仅校验变量是否声明,是否可改等)
- node在use strict模式下,eslint可以校验
- 团队合作,防止队友挖坑
其实ESLint只是一种语法校验,更多的还有流程上的规范,就像网传阿里的开发规范一样,就好比node中你可以用类的语法糖,也可以用原型,当一件事情有多种实现方式时,需要规范来选择一个普遍公用的,易维护,易扩展的方案
除去语法校验,还有TS的类型校验,比如GIT的分支规范,如master,staging,backup,develop,other branch
转义语言
- TS
- ClojureScript
- CoffeeScript
- Dart
- Elm
- Scala.js
- Haxe
- Nim
- PureScript
- Reason
转移语言是2019年聊的比较多的,解决问题:
- 类型校验,能够很好解决JS开发中,你不知道这个object里面有什么key,或者某个对象里面有什么方法(egg.js实际开发过程中,ctx.service.v1.handlexxx()就ctrl跳转不了,也不会有提示)
WEB框架
- Express
- Koa
- Egg
- Nest.js
- Next.js
- Fastify.js
- Hapi.js
- Restify.js
- Loopback.io
- Sails.js
- Midway.js
面试常被问到框架的问题,因为很多公司不会将项目搭建在原生的node服务上
- 缺少约束,合作模式下,个人有个人的风格
- 项目配置繁琐,很多东西配置零散堆放
- 重复造轮子,框架提供较好的轮子
- 安全事宜,框架处理
- etc
一个好的框架事半功倍,
express是一个非常轻量的框架
- fast
- unopinionated(干净的)
- minimalist
Egg是一个企业级框架,约定大于配置
- Provide capability to customizd framework base on Egg(可扩展)
- Highly extensible plugin mechanism(插件牛逼)
- Built-in cluster(多进程牛逼)
- Based on Koa with high performance(企业级别性能优异)
- Stable core framework with high test coverage(稳定)
- Progressive development(业务迭代,代码可以渐进继承)
数据库
- MySQL
- PostgreSql
- Redis
- MongoDB
- SQL Server
- SQLLite
- influxdb
- HBASE
- TiDB
- Oracle
- DB2
数据库是仅此于语言本身,另外的考点了,因为没有一个服务不涉猎存储,而数据库作为系统的数据基础,不仅重要也成为了面试的重点
- mysql等关系型数据库,范式,事务,innodb,读写分离,分表
- Mongo,Redis等非关系型数据基础类型,聚合等
反向代理
Nginx
Tomcat
Apache
解决负载均衡
预处理一些请求,如过滤重复请求
进程管理
- Docker
- PM2
- forever
- naught
- node-supervisor
- Supervisord(Unix)
docker集大成者,在微服务等场景应用较多
RPC方式
- HTTP
- Thrift
- gRPC
- dubbo
- MQ
开发场景
- 服务端API
- SSR应用
- Proxy层
- BFF层
- 代码片段,如Spark代码片段
- CLI & 工具