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 的实践,第二部分是构建类型系统的实践。

京东微信购物首页性能优化实践

作者:龙朝忠

京东微信购物首页(以下简称微信首页)曾经作为微信购物一级入口(目前替换为京喜小程序)一直对性能有着极高的要求,本文将介绍微信首页的一些优化经验。

一般来说产品是按以下方式进行迭代的,我认为循环的起点应该是「收集用户反馈」,我们对页面的优化依据和目标一个重要来源就是用户的反馈,因此说网页优化我们先从网页监控开始聊起。

负责任地编写JavaScript代码:第三部分

原文地址:https://alistapart.com/article/responsible-javascript-part-3/
原文作者:Jeremy Wagner
译者:龚亮
声明:本翻译仅做学习交流使用,转载请注明来源

针对网站上存在的 JavaScript 问题,你已经尝试了所有可能解决它的​方法。比如,尽可能地依赖 Web 平台避免使用 Babel 使用较小的框架替代方案,对应用程序代码做极致化精简。然而,速度还是不够快。当网站无法像设计师和开发人员所期望的那样发挥作用时,不可避免得让我们反思:
“我们没有做到什么?” “我们写的代码能做什么?” “我们架构的哪些部分没有达到预期?”
相当一部分性能问题源于我们自己的代码,然而把责任全部归咎于我们自己会赤裸裸地忽略一个事实:相当大一部分性能问题是由外部因素导致的。

负责任地编写JavaScript代码:第二部分

你和开发团队的成员热情游说老板同意对公司的老网站进行全面的重构,你们的请求被管理层甚至是最高管理层都听到了,他们同意了。高兴之余,你和团队开始与设计、IA 等团队一起工作。没过多久,你们就写出了新代码。

重构工作一开始非常简单,就是到处安装 npm,这其实就是在快速安装生产依赖项,就像一个大学生在做桶支架,而不关心第二天早上的情况一样。

然后,你就启动了。

与大多数豪饮的后果不同,痛苦并不是第二天早上就开始的。但是……几个月后,产品所有者和中层管理人员开始感到恶心和头痛,他们想知道为什么产品推出以来,转化率和收入都下降了。然后事情会恶化到极点,CTO 周末从度假小屋回来,质问为什么网站加载速度如此之慢——如果它真的加载过。

重构时每个人都很开心,重构后没有人快乐了。欢迎来到你的第一个 “JavaScript 宿醉”。

负责任地编写JavaScript代码:第一部分

原文地址:https://alistapart.com/article/responsible-javascript-part-1/
原文作者:Jeremy Wagner
译者:刘辉
声明:本翻译仅做学习交流使用,转载请注明来源

从统计数据上看,JavaScript是性能的关键。以现在的趋势,中等大小的页面很快就会至少发送 400 KB 的 JavaScript,而这仅仅是传输时的大小,并且还是压缩后的。

不幸的是,虽然减少资源传输时间是整个性能的重要组成部分,但是压缩并不会影响浏览器处理整个脚本所需的时间。如果服务器发送了 400 KB 的压缩 JavaScript,则解压缩后浏览器需要处理的实际大小超过 1 MB。如何应对这些繁重的工作负载,取决于设备本身。 关于各种设备如何处理大批量JavaScript的文章很多,但事实是,在不同的设备之间,即使是微不足道的处理时间也会有相差很大差距。

Your browser is out-of-date!

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

×