Node.js项目TypeScript改造指南(二)

作者:刘辉

最近笔者把一个中等规模的 Koa2 项目迁移到 TypeScript,和大家分享一下 TypeScript 实践中的经验和技巧。

原项目基于 Koa2,MySQL,sequelize,request,接口加页面总计 100 左右。迁移后项目基于 Midway,MySQL,sequelize-typescript,axios。

本项目使用 TypeScript3.7,TypeScript 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"incremental": true,
"inlineSourceMap": true,
"module": "commonjs",
"newLine": "lf",
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"outDir": "dist",
"pretty": true,
"skipLibCheck": true,
"strict": true,
"strictPropertyInitialization": false,
"stripInternal": true,
"target": "ES2017"
}

本文分为两部分,第一部分是处理 any 的实践,第二部分是构建类型系统的实践。

Node.js项目TypeScript改造指南

作者:陈晓强
声明:原创文章,转载请注明来源

前言

如果你有一个 Node.js 项目,并想使用 TypeScript 进行改造,那本文对你或许会有帮助。TypeScript 越来越火,本文不讲为什么要使用 TypeScript,也不讲基本概念。本文讲的是如何将一个旧的 Node.js 项目使用 TypeScript 进行改造,包括目录结构调整、TypeScript-ESLint 配置、tsconfig 配置、调试、常见错误处理等。由于篇幅有限,Node.js 项目能集成的技术也是五花八门,未覆盖到的场景还请见谅。

Electron 实践笔记

作者:周全

社交魔方平台是京东的 SNS 活动搭建平台,其内置了很多模板,每一个模板都有一个模板 JSON 用于生成表单,运营同学、商家配置了这个表单后就可以生成活动页面了。
模板 JSON 是标准的结构化数据,包含名称、类型、控件类型、校验器、默认值等等字段。以往都是采用手写 JSON 的方式,这是非常低效的,而且容易出错。针对其结构化数据的特点可以用 GUI 的方式去编辑,我们基于 Electron 参考 Github Desktop 客户端 的架构编写了一个 编辑器,通过填写表单的方式生成 JSON。所以在这里记录下这个 Electron 编辑器开发过程中可以记录的点和从 Github Desktop 客户端代码中值得学习的点。

记一次Node.js直出服务的性能优化

作者:肖睦群、李刚松

一.问题背景

MPM(Market Page Maker)是京东社交电商部的组件化的页面可视化搭建平台,于2016年9月份上线,平均每周150+个页面,目前已经成为社交电商部的一个核心系统。系统使用Vue.js作为组件化的基础框架,并于2017年5月份上线了Node.js直出服务。MPM的页面会被运营同学拿到各种渠道投放,整体流量很不稳定,对于流量的暴涨情况要能够及时处理,这对于开发同学来说是一个比较烦的工作。

前几天突然收到告警信息,由于运营同学将某个MPM活动页面投放了外部广告,直出服务流量大涨,服务器CPU使用率达到了80%以上,于是立马申请扩容,问题虽解决,但是留给了我们一个问题:直出服务能否优化,这次量级的流量进来之后,是否可以稳定支撑而不需要扩容?

Javascript抽象语法树下篇(实践篇)

作者:陈晓强

上篇已经对AST基础做了介绍,本篇介绍AST的运用

AST应用的三个要点

  1. 需要一个解析器,将代码转换为AST
  2. 需要一个遍历器,能够遍历AST,并能够方便的对AST节点进行增删改查等操作
  3. 需要一个代码生成器,能够将AST转换为代码

Javascript抽象语法树上篇(基础篇)

作者:陈晓强

一、基础

为什么要了解抽象语法树

日常工作中,我们会碰到js代码解析的场景,比如分析代码中require了哪些包,有些什么关键API调用,大部分情况使用正则表达式来处理,可一旦场景复杂,或者依赖于代码上下文时,正则就很难处理了,这时候就要用到抽象语法树。常见的uglify、eslint、babel、webpack等等都是基于抽象语法树来处理的,如此强大,有必要好好了解一下。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×