前言
Deno自2018年6月诞生,引发JavaScript开发社区的强烈讨论,很多开发者误解甚至还纷纷传言ry大神将以Deno作为下一代Node.js,甚至还闹出了啼笑皆非的“issue盖楼”闹剧。 直至2019年初,在JavaScript社区里,Deno的相关讨论声音渐渐消退,更多是谈论TypeScript是否将引领下一波前端开发潮流,甚至带动Deno起飞。
在我的看法里,既然有新东西可以玩,先不管别人怎么议论,技术工具好不好,得自己用了才知道。面对一个新生技术,人云亦云和断章取义不是一个技术开发者的应有的行为。
趁着2019年春节在家,好好利用这个“寒假”玩玩这个新技术。截止2019年初,Deno国内外资料实在太少。 除了出现 《deno核心指南》 以 及对应的GitHub组织 github.com/denolib 推荐的学习文档和第三方模块比较有建设性,除此之外,对于Deno的开发资料乏善可陈。
Deno基本模块和官方标准模块 处于开发中不稳定状态,存在一堆 // TODO
的代码。2019年春节假期中,在GitHub上硬生生啃了好几个 Deno 项目仓库,开始动笔写下这本《Deno进阶开发笔记》 。写这笔记的出发点很简单,一来是作为自己学习Deno的笔记记录,二来希望能给Deno开发社区添砖加瓦。
Deno目前状况
Disclaimer
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 正处于开发阶段,我们鼓励勇敢的早期使用者,并希望在使用过程中尽量少出现问题。与此同时,Deno的API 可能随时更改,恕不另行通知。
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 原生的能力实现相关代码,不依赖官方标准模块 deno_std (单元测试除外)。
- 以 TDD 开发模式写学习例子,并结合集成构建测试保证笔记例子demo适应各种生产环境。
- 结合 Travis CI build,用于集成构建测试在Linux环境下所有单元测试。
- 结合 Azure Pipelines,用于集成构建测试在Window、Mac和Ubuntu环境下所有单元测试,保证例子在各个生产环境都能正常执行。
《Deno进阶开发笔记》目录(临时)
- 1 致读者
- 2 快速开始
- 3 前置基础知识
- 4 Deno基础知识点
- 5 基础进阶学习
- 6 WEB进阶开发
- 6.1 中间件式框架简单实现
- 6.2 中间件-路由实现
- 6.3 中间件-静态资源实现
- [6.4 HTML模板编译实现]
// TODO
- [6.5 文件同步上传功能实现]
// TODO
- [6.6 文件异步上传功能实现]
// TODO
- 7 工具类开发
- 7.1 Linux系统下CLI功能实现
- [7.2 MySQL通信]
// TODO
- 8 发布模块
- [8.1 GitHub发布模块版本]
// TODO
- [8.2 其他发布方式]
// TODO
- [8.1 GitHub发布模块版本]
后记
目前,《Deno进阶开发笔记》内容属于学习笔记资料,不建议用于生产环境。因为Deno
官方功能处于开发阶段,所以笔记正处于和将长期处于更新阶段,里面代码内容不建议用于生产环境,但我也希望有开发者能用于生产环境经验,并分享相关的实战经验。与此同时,个人文笔和技术理解能力有限,笔记里估计会出现语法表达或者技术理解的错误,请小伙伴们见谅,也欢迎及时指出问题,互相学习。
如果想更方便地第一时间知道《Deno进阶开发笔记》更新进展,或者更加方便进行技术交流,可以关注我公众号 “大海码”。