GitHub地址
https://github.com/chenshenhai/deno_note/
例子源码集成测状态
前言
Deno自2018年6月诞生,引发JavaScript开发社区的强烈讨论,很多开发者误解甚至还纷纷传言ry大神将以Deno作为下一代Node.js,甚至还闹出了啼笑皆非的issue盖楼闹剧。 到了2018年底至2019年初,在JavaScript社区里,Deno的相关讨论声音渐渐消退,更多是谈论TypeScript是否将引领下一波前端开发潮流,甚至带动Deno起飞。
既然有新东西可以玩,先不管别人怎么议论,工具好不好得自己用了才知道。面对一个新生技术,人云亦云和断章取义不是一个技术开发者的应有的行为。
趁着2019年春节在家,好好利用这个“寒假”玩玩这个新技术。截止2019年初,Deno国内外资料实在太少。 除了出现 《deno核心指南》 以 及对应的GitHub组织 github.com/denolib 推荐的学习文档比较有建设性,除此之外,对于deno的开发资料乏善可陈。
Deno基本模块和官方标准模块 deno_std 处于开发中不稳定状态,存在一堆 // TODO
的代码。2019年春节假期中,我硬生生啃了好几个国外 Deno 试验项目仓库。开始写下这本《Deno进阶开发笔记》 ,一来是作为自己学习Deno的笔记记录,二来希望能给Deno开发社区添砖加瓦。
Deno目前状况
官方声明
A word of caution: Deno is very much under development. We encourage brave early adopters, but expect bugs large and small. The API is subject to change without notice. Bug reports do help!
翻译过来就是:
Deno 正处于开发阶段,官方鼓励勇敢的早期的使用者,并希望在使用过程中尽量少出现问题。API 可能随时更改,恕不另行通知。
官方主旨 Deno aims to be a productive and secure scripting environment for the modern programmer.
翻译过来就是:
Deno 旨在为现代程序员提供高效,安全的脚本环境。
Deno官方目标
-
支持 TypeScript 的直接使用,无需人为去编译。
-
允许像浏览器一样import URL链接的模块,例如:
import * as log from "https://deno.land/x/std/log/mod.ts";
-
远程代码的引用获取只需一次,会缓存到本地,直至执行 --reload 强制更新远程代码。
-
可以直接使用
ES Modules
,但不支持 CommonJS 的require( )
。 -
文件系统,网络权限都需要用户的授权允许后才能操作 。
-
只需要一个可执行的文件就可以运行程序 。
-
遇到未捕获的异常会直接终止程序
-
浏览器兼容性,如果Deno项目全是JavaScript实现,同时没有使用 deno 全局命名空间,就可以直接在现代浏览器运行。
-
将会支持顶级执行
await
代码。 -
其他非目标特性:
- 无
package.json
- 无
npm
- 不会兼容
Node
- 无
本书(笔记)目标
- 从实际 工程应用 层面去学习 Deno 的使用,暂时不会深究底层原理。
- 以 Deno 原生的能力实现相关代码,不依赖官方标准模块 deno_std (但是单元测试除外)。
- 以 TDD 开发模式结合集成测试保证 例子demo适应各种生产环境。
本书(笔记)目录
- 1 致读者
- 2 快速开始
- 3 前置基础知识
- 4 deno基础知识点
- 4.1 deno常用命令简介
- 4.2 deno模块体系
- 4.3 deno平台API
- 4.4 deno系统API
- 4.5 deno文件操作API
- 4.6 deno目录操作API
- 4.7 deno删除操作API
- [4.x deno其他常用API]
// TODO
- 5 基础进阶学习
- 5.1 单元测试
- 5.2 单元测试进阶
- 5.3 集成测试
- 5.4 文件/目录操作
- 5.5 Buffer进阶读操作
- [5.6 Buffer进阶写操作]
// TODO
- 5.7 原生deno实现简单HTTP服务
- 5.8 原生deno处理HTTP请求
- 5.9 原生deno处理HTTP响应
- 5.10 原生deno实现稳定HTTP服务
- 6 WEB进阶开发
- [6.1 中间件式框架简单实现]
// TODO
- [6.2 中间件-路由实现]
// TODO
- [6.3 中间件-静态资源实现]
// TODO
- [6.4 HTML模板编译实现]
// TODO
- [6.5 文件同步上传功能实现]
// TODO
- [6.6 文件异步上传功能实现]
// TODO
- [6.1 中间件式框架简单实现]
- 7 工具类开发
- [7.1 CLI功能实现]
// TODO
- [7.2 MySQL通信]
// TODO
- [7.1 CLI功能实现]
- 8 发布模块
- [8.1 GitHub发布模块版本]
// TODO
- [8.2 其他发布方式]
// TODO
- [8.1 GitHub发布模块版本]
本书(笔记)特点
- 本书笔记内容不定时更新,如果想第一时间知道本书进展,可以在GitHub watch 本项目。
- TDD开发例子,功能例子都以 TDD(Test-Driven Development) 开发模式为主,一个功能模块,配备对应的单元测试。
- 以 Deno 原生的能力实现相关代码,不依赖官方标准块 deno_std (单元测试除外)。
- Travis CI build,用于集成构建测试在Linux环境下所有单元测试。
- Azure Pipelines,用于集成构建测试在Window|Mac|Ubuntu环境下所有单元测试,保证例子在各个生产环境都能正常执行。
后记
本书目前虽然开源了,但是仍然处于长期的编辑和更新阶段,如有学习交流和共建的想法,欢迎在GitHub本项目上提交 issue 和 PR。
👍 赞,支持 这段时间其实一直都在想如何把node项目平滑迁移到deno的最佳方案,目前还真是头大的问题。
@zy445566 目前不建议deno 用于生产环境,因为API存在不稳定性, 例如
deno_std
官方模块的测试模块testing
0.2.x 版本时候就有了添加runTests
方法来触发所有 测试用例deno_std
官方模块的http
就直接把文件重命名,而且存在一堆TODO
未实现
@ChenShenhai 嗯嗯,只能未雨绸缪了