剖析并实现一个简单版的koa框架
koa 的核心思想在于基于中间件的洋葱模型,koa 通过一个 compose 函数,把一个一个的中间件串联起来,组合成了一个大的函数,在每个中间件里,通过 next() 执行下一个中间件。
koa 的核心思想在于基于中间件的洋葱模型,koa 通过一个 compose 函数,把一个一个的中间件串联起来,组合成了一个大的函数,在每个中间件里,通过 next() 执行下一个中间件。
可写流需要考虑并发写的问题,比如并发写时,要确保写的顺序不错乱。
为了保证并发写顺序不会乱,WriteStream 创建了一个链表结构缓冲区,
用来按顺序缓存待写的内容,等待当前正在写的内容写完,再依次从缓冲区中一个一个读取出来继续写。
A simple CLI for create koa + ts project:
koats create myProject
.
A simple CLI for create koa + ts project:
koats create myProject
.
== 的判断规则
1、同类型比较,进行 === 比较
2、如果两个值类型不同,则根据如下规则进行类型转换再进行比较:
- 1)如果一个是字符换,一个是数字,则将字符串转换成数字,再进行值比较
- 2)如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
- 3)如果一个是对象,另一个是基础类型(数值或字符串),则把对象转换成基础类型的值再比较。
- 对象转换成基础类型,利用它的 toString 或者 valueOf 方法。
- 4)高级类型与高级类型,进行指针地址比较
- 5)如果一个是null,一个是undefined,那么相等
通过 mysqldump 和 crontab 实现定时备份 mysql 数据库
解决浏览器跨域问题的方法有很多种
1) 通过后端设置 http Access-Control-* 相关响应头
2) 通过 Jsonp
3) 通过 nginx 反向代理关于这三种解决跨域方法的介绍可以看我的另外一篇文章: 如何解决前端跨域问题
本文主要讲基于 nodejs koa2 实现第一种跨域方案,并设计成 koa2 中间件
在非简单请求且跨域的情况下,浏览器会发起options预检请求。
webpack 是目前 javascript 主流的工程自动构建工具,目前 Vue,React 以及 Angular 等项目脚手架都是基于 webpack 进行构建的。
本系列代码放在 github 上:
webpack4系列实践代码
开发环境和生产环境的构建目标是有很大的不同的。
在开发环境中,为了便于代码调试以及实现浏览器实时更新,我们需要开启source map
和localhost server
。
而在生成环境中,为了实现缓存优化以及改善加载时间,我们的目标转向于打包成更小的bundle
或chunk
,分离第三方包以及开启更轻量级的source map
以及更优化的资源。
因此开发环境和生产环境需要单独配置 webpack。