- 主题:Node之父ry发布新项目deno:下一代Node
近日,Node 之父 Ryan Dahl 发布新的开源项目 deno,从官方介绍来看,可以认为它是下一代 Node,使用 Go 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终提供一个安全的 TypeScript 运行时。
它的特性包括:
支持 TypeScript 2.8 开箱即用;
无 package.json,无 npm,不追求兼容 Node;
通过 URL 方式引入依赖而非通过本地模块,并在第一次运行的时候进行加载和缓存,并仅在代码使用--reload运行,依赖才会更新,引入方式如:
import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts"import { log } from "./util.ts"
可以控制文件系统和网络访问权限以运行沙盒代码,默认访问只读文件系统可访问,无网络权限。V8 和 Golang 之间的访问只能通过 protobuf 中定义的序列化消息完成;
发生未捕捉错误时自动终止运行;
支持 top-level 的 await;
最终创建单一可执行文件;
目标是兼容浏览器;
可以作为库引入,用于建立自己的 JavaScript runtime。
这几个特性,有好几个都是针对目前 Node 的痛点而来的,包括无 package.json、依赖的引入和更新方式,针对的就是被广泛吐槽的过大的node_modules。
同时,不追求兼容 node,可以视为 ry 想彻底抛弃 node 包袱,打造一个更好的 JS 运行时。
作者在 GitHub Issue 回复开发者的几个问题:
ry 开玩笑称,目前两者最大的区别是 Node 大行其道,而 Deno 尚未投入使用。
从更高层面上来说,Deno 尽可能简化 V8 与系统 API 的耦合,并打造更加简单、稳定的模块系统,以及一个安全的沙箱运行环境。
再者,使用 Golang 而不是 C++ 作为底层语言,这样,添加高级功能时会比在 Node 中更加容易,比如在 Go 中添加 http2.0支持,只需添加一些路由 API 和一些配置到 protobuf 中。
Deno 诞生的目的,是为了创建更简单和安全的非浏览器 runtime,它在这个时候出现,是因为现在的开发工具比 2009 年更好。
我们还可以认为 Deno 将是目前 Node 生态一些难解问题的终极答案,比如依赖管理、安全性、稳定性、横向扩展等等。
Deno 的诞生,将启发更多人投入到下一代 Node 的探索当中,这比之前 Node 的一些分叉更具备创新和革命性。
目前 Deno 正在紧张开发当中,我们也将持续关注它的进展。
deno 和 Node 的区别是什么?
Deno Github 地址:
https://github.com/ry/deno
--
FROM 223.104.3.*
真是奇怪,搜了一下只在 hacker news 上面看到了一个不长的讨论,怎么感觉国内一下子就高潮了?
人家的 repo 写着 A secure TypeScript runtime on V8,这中文文章的标题也是醉了。
看了一下感觉就是把 go 和 ts 揉了一下,相当于 go 写底层 ts 做逻辑,目前看不出来有多大价值啊。给我的感觉是,go 没有泛型去增强 go 不就好了?
【 在 dhcn (小石) 的大作中提到: 】
: 近日,Node 之父 Ryan Dahl 发布新的开源项目 deno,从官方介绍来看,可以认为它是下一代 Node,使用 Go 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终提供一个安全的 TypeScript 运行时。
: 它的特性包括:
: 支持 TypeScript 2.8 开箱即用;
: ...................
--
FROM 101.98.83.*
原来如此,看到tj大神收藏了,我也看了下,不知道啥意思。
--
FROM 14.145.137.*
hacker news 上就那么几个人讨论,也都觉得没啥意思,表示因为作者会留意一下,所以天朝外不存在你所谓的“JS圈”?
这东西根本就不是引擎,只是架上 go 上面的沙盒而已,能想到的最直接应用是 faas。然而国内有 aws lambda、firebase cloud functions 之类的产品么?而且话说回来,国内用 node 做服务端的能有多少?
【 在 dhcn (小石) 的大作中提到: 】
: 你没有get到用户的点:JS圈的人才对这个感兴趣:go只是这个引擎的底层实现语言之一,大家大多数并不care,大家care的是有一个更好的TS引擎可用。
--
FROM 101.98.83.*
你觉得我哪说的不对可以指出来,你发这么长的帖子各种喷,是你要吵架还是我要吵架?
本站几个这几个编程版常见的人里,我不觉得有谁比我更爱推广 js 开发。虽然都离不开 node 的基础,然而前端、后端、react-native、electron 之间,不论在开发方式上,还是使用的工具链的都是有很明显的差别的。反正我是认真看过那个 repo 上面的介绍了,不觉得和我上面提到的任何一个开发方式多大交集,我想问你到底看过了没有?
一个技术的出现一定是以解决某些个问题为目标出现的。从那个 readme 来看,这个技术的核心一共就3个:
1.解决 node_modules hell 的问题
2.用 go 做底层实现沙盒
3.使用 ts 开发
既然解决问题1使用 go 包管理的方式,然后又有2,那么3为什么不干脆直接用 go 就是一个很自然而然的问题。
你要是玩儿过任何一个 faas 的框架,就知道每个函数的发布都要写 dependency,然后在一个 docker 或者其它机制的沙盒里由 npm 安装包依赖。由于 docker 自身的特性,再加上 faas 会回收一段时间没有使用的资源,会导致函数常常陷入高延迟的冷启动的困境。非 docker 机制的 faas 框架,常常也是用 go 做底层,所以1和2是很实现的能解决这个痛点的技术。
所以我这两个贴子的观点提出的都是很现实的问题,看不懂是你的问题,但是别看不懂就喷好不?
【 在 dhcn (小石) 的大作中提到: 】
: 从某外文网站的评论量来对自己都没搞明白是什么的新生事物做结论,轻点说,这是逻辑不严谨的行为,一会儿揉合,一会儿FaaS,你好歹你先搞明白deno是什么东西行不行,大家讨论稍微有顶概念共识以后再说下面的问题行不行?你所举出来的语言竞品Go也罢,竞品FaaS平台也罢,
: 同学,你在Web开发版说JS圈不存在。我不说你尊不尊重这个版上的人,我好奇问一下你能找出现在还能生产环境上Run的第二种前端语言吗?
: 一个程序员把自己设定为单语言主义者,这本身就是没出息的表现,这个时代,语言已经是架构选型的一部分。首先把自己囿于单语言的圈子,这本生就是路越走越窄的行为。这儿只是个讨论技术的地方,没有必要把自己打包成卫某种语的士。
: ...................
--
FROM 122.60.92.*
这都能吵。。
【 在 dhcn (小石) 的大作中提到: 】
: 这么简单的问题你都不能理解,他是Ry,他不是Rob Pike。
: 他没有必须去改善Go语言生态的义务。
: 而服务JS生态圈是他的自由选择,这是他的基本人权。
: ...................
--
FROM 123.59.170.*
一句干货都没有还扯这么多也真是难为你了
【 在 dhcn (小石) 的大作中提到: 】
: 这么简单的问题你都不能理解,他是Ry,他不是Rob Pike。
: 他没有必须去改善Go语言生态的责任和义务。
: 而服务JS生态圈是他的自由选择,这是他的基本人权。
: ...................
--
FROM 122.60.92.*
Status
Segfaulty.
最近就能很有用。呵呵。最喜欢看小白吹nb了
【 在 dhcn (小石) 的大作中提到: 】
: 你的干货说那么多无非是这个开源项目为啥不解决你的生产实际问题,我替作者告诉你:人家又不是你的乙方,又不拿你的钱,凭什么专门解决你的生产实际问题。这话够干了吧?
: 顺便再说一句更干的:这东西也许会对我最近的工作很有用。而且不用去官网看文档来确认这一点。
--
FROM 122.60.92.*
不去好好想想怎么让js这类弱类型语言更好用,易用,搞一堆古灵精怪的玩意,无能者吹捧的不行
--
FROM 219.133.46.*
看来还是html和css比较稳定,做一个只精通html css的人,免得天天看着开发环境升级闹心。
【 在 dhcn (小石) 的大作中提到: 】
: 近日,Node 之父 Ryan Dahl 发布新的开源项目 deno,从官方介绍来看,可以认为它是下一代 Node,使用 Go 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终提供一个安全的 TypeScript 运行时。
: 它的特性包括:
: 支持 TypeScript 2.8 开箱即用;
: ...................
--
FROM 134.159.152.*