🐍 新技术尝个鲜 - deno
Node.js 是一个了不起的应用,将 JavaScript 这个偏居一隅的脚本,变成了领域边界非常广阔的应用语言,就这一点来说怎么夸赞都不为过。
前些年 Node.js 在仅有的 ES 标准下发展壮大,不过近些年随着 ES 标准的演进,TypeScript 的广泛应用,Node.js 曾经引以为傲的生态,逐渐的变得拖后腿了。
与我而言影响比较大,让我不太习惯、不太喜欢的有:
- TypeScript 的集成不太行
- Promise、await 等语法生态的缺失
- CommonJS 和 ES Module 的没法兼容
功能的支持都可以,但是考虑到太灵活、历史兼容、第三方库等原因,还是写起来顾忌太多,这虽然不是 Node.js 的错,但是用起来不舒服这个没办法。
node = no + de => deno = de(story) no(de)
所以 deno 被开发出来,目标就是用来替代 node.js。
- 内置 TypeScript 引擎,直接支持 ts 语言的解释运行
- Rust 的应用,这个也算是非常火热的语言,很感兴趣
- 严格的权限管控,如果 node.js 读取本地文件上传到某个服务器我是没办法事先控制的
- 更兼容 Web 规范的接口设计,window、fetch、addEventListener 的能力
- Promise > callback
- ES Module 模块规范,更面向标准
- 内置 dev 开发命令
mac 下运行:
curl -fsSL https://deno.land/x/install/install.sh | sh
现在安装成功,那么试试简单运行一个小程序,用最经典的远端文件形式:
import { serve } from "https://deno.land/std@0.62.0/http/server.ts";const s = serve({ port: 8000 });console.log("http://localhost:8000/");for await (const req of s) {req.respond({ body: "Hello World\n" });}
现在从 Node.js 切换到 Deno 还太早,生态、稳定性、周边支持等还不完善,公司的业务用 Node.js 是更合适的选择,云服务商的 Serverless 之类的服务目前也只提供 Node.js 的环境,其中的很多特性,比如 URL 的模块加载形式等,在分发、部署、大规模管理上合不合适等,很多开发者其实都在观望。
不过和 Flutter 一样,我还是很看好 Deno 的,毕竟看着就有希望的样子很难不喜欢起来,也愿意花时间尝试并集成在自己的小项目中。
感谢您的阅读,本文由 Ubug 版权所有。如若转载,请注明出处:Ubug(https://ubug.io/blog/deno-introduce)