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 & 工具

tips