《Deno进阶开发笔记》开源啦,将长期不定时更新
发布于 6 年前 作者 ChenShenhai 5003 次浏览 来自 分享

GitHub地址

https://github.com/chenshenhai/deno_note/

例子源码集成测状态

Build Status Build Status

前言

Deno自2018年6月诞生,引发JavaScript开发社区的强烈讨论,很多开发者误解甚至还纷纷传言ry大神将以Deno作为下一代Node.js,甚至还闹出了啼笑皆非的issue盖楼闹剧。 到了2018年底至2019年初,在JavaScript社区里,Deno的相关讨论声音渐渐消退,更多是谈论TypeScript是否将引领下一波前端开发潮流,甚至带动Deno起飞。

deno_note mini

既然有新东西可以玩,先不管别人怎么议论,工具好不好得自己用了才知道。面对一个新生技术,人云亦云和断章取义不是一个技术开发者的应有的行为。

趁着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适应各种生产环境。

本书(笔记)目录

本书(笔记)特点

  • 本书笔记内容不定时更新,如果想第一时间知道本书进展,可以在GitHub watch 本项目。
  • TDD开发例子,功能例子都以 TDD(Test-Driven Development) 开发模式为主,一个功能模块,配备对应的单元测试。
  • 以 Deno 原生的能力实现相关代码,不依赖官方标准块 deno_std (单元测试除外)。
  • Travis CI build,用于集成构建测试在Linux环境下所有单元测试。
  • Azure Pipelines,用于集成构建测试在Window|Mac|Ubuntu环境下所有单元测试,保证例子在各个生产环境都能正常执行。

Build Status Build Status

后记

本书目前虽然开源了,但是仍然处于长期的编辑和更新阶段,如有学习交流和共建的想法,欢迎在GitHub本项目上提交 issue 和 PR。

3 回复

👍 赞,支持 这段时间其实一直都在想如何把node项目平滑迁移到deno的最佳方案,目前还真是头大的问题。

@zy445566 目前不建议deno 用于生产环境,因为API存在不稳定性, 例如

  1. deno_std 官方模块的测试模块 testing 0.2.x 版本时候就有了添加 runTests 方法来触发所有 测试用例
  2. deno_std 官方模块的http就直接把文件重命名,而且存在一堆 TODO 未实现

@ChenShenhai 嗯嗯,只能未雨绸缪了

回到顶部