V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
h404bi
V2EX  ›  JavaScript

Deno 1.0

  •  3
     
  •   h404bi · 2020-05-14 08:13:09 +08:00 · 10930 次点击
    这是一个创建于 1414 天前的主题,其中的信息可能已经有所发展或是发生改变。
    84 条回复    2020-06-04 16:16:36 +08:00
    tlerbao
        1
    tlerbao  
       2020-05-14 08:17:52 +08:00
    插图和头像啥的都是自己画的吗?
    ares586
        2
    ares586  
       2020-05-14 08:33:58 +08:00
    不知道能不能火起来,毕竟不支持兼容 node
    FourAndHalf
        3
    FourAndHalf  
       2020-05-14 08:35:58 +08:00
    啥,又出框架了?
    Mithril
        4
    Mithril  
       2020-05-14 08:39:18 +08:00   ❤️ 3
    学不动了已经,昨天的 Flutter 还挂在墙上没学呢。
    gimp
        5
    gimp  
       2020-05-14 08:41:04 +08:00
    感觉将“包管理”集成在 deno 中不太好,主流都是分离的,如 Rust + cargo / Node.js + npm / Python + pip

    还需要观望一下,看在哪个领域能发光发热,生态再养一养,再学不晚。
    quarria
        6
    quarria  
       2020-05-14 08:41:40 +08:00
    这个是什么?
    jakehu
        7
    jakehu  
       2020-05-14 08:51:38 +08:00
    @quarria nodejs 之父开发的新的框架
    liuxey
        8
    liuxey  
       2020-05-14 08:56:42 +08:00
    node - deno - destroy node
    - dinosaur 恐龙
    JJstyle
        9
    JJstyle  
       2020-05-14 08:59:16 +08:00 via iPhone
    这个千万别火起来
    wszgrcy
        10
    wszgrcy  
       2020-05-14 09:00:35 +08:00 via Android
    如果没有啥提高效率的举措,感觉不太可能火。。。顶多不温不火吧
    namelosw
        11
    namelosw  
       2020-05-14 09:00:53 +08:00
    期待,不知道这个 Workflow 是不是比 Node + TypeScript 开发起来更快一些
    cmdOptionKana
        12
    cmdOptionKana  
       2020-05-14 09:03:09 +08:00
    @namelosw 天生支持 TypeScript
    cmdOptionKana
        13
    cmdOptionKana  
       2020-05-14 09:08:26 +08:00
    @JJstyle 如果你害怕学习新东西,反而应该期待这个火起来,因为这个还算与 javascript, node 比较接近。

    如果这个不火,必然有其他与 javascript, node 距离更远的东西会火,回来取代 node 。(看看 PHP 的下场)

    这个世界总有新东西取代旧东西,这点是防不住的。
    Hanggi
        14
    Hanggi  
       2020-05-14 09:21:16 +08:00
    @cmdOptionKana node.js 上已经有很多成熟的 typescript 解决方案,为什么要用你 deno 呢?
    xingjue
        15
    xingjue  
       2020-05-14 09:24:45 +08:00
    @cmdOptionKana php 下场咋了,php 有 swoole 生态,吊打 Node 后端
    LokiSharp
        16
    LokiSharp  
       2020-05-14 09:26:53 +08:00
    @cmdOptionKana #13 好像 node 后端市场也没多大吧。。。
    DixCouleur
        17
    DixCouleur  
       2020-05-14 09:27:45 +08:00
    这个头……有点像 AirPods
    cmdOptionKana
        18
    cmdOptionKana  
       2020-05-14 09:28:06 +08:00
    @xingjue 看趋势,看发展,PHP 明显已经被围攻,正在走下坡路了。
    xingjue
        19
    xingjue  
       2020-05-14 09:30:42 +08:00
    @cmdOptionKana 这个是事实 但是 node 做后端是扶不起的阿斗,后端没人搞 Node 。就是一些前端在玩
    cmdOptionKana
        20
    cmdOptionKana  
       2020-05-14 09:30:48 +08:00
    @Hanggi 因为讨厌 npm 。你看 yarn 一出来就非常受欢迎,而 yarn 只是解决了 npm 的一部分问题,而 deno 可以解决 npm 的大部分问题。
    xingjue
        21
    xingjue  
       2020-05-14 09:31:48 +08:00
    写三行代码,依赖动则几百 M 乃至几个 G,这种东西也配做后端?别侮辱了后端行吗,还是你们前端慢慢意淫 node 吧( PS 我是做 java 的)
    cmdOptionKana
        22
    cmdOptionKana  
       2020-05-14 09:32:42 +08:00
    @xingjue
    @LokiSharp 我说的重点不是后端。而是不管什么领域的技术,自己不革自己的命,就会被别的新东西侵蚀市场。
    5G
        23
    5G  
       2020-05-14 09:33:21 +08:00
    deno 主要想做下面的改进:
    1.single_executable,是把模块打包成一个文件
    2.以 typescript 为主编程语言
    3.从 url 导入代码,打包时候用一下,各个 node 应用可以共享缓存
    4.更多新标准 API ( fetch )
    5.内置更多工具
    6.与 Chrome V8 更好的合作
    7.支持 WASM
    Biwood
        24
    Biwood  
       2020-05-14 09:34:27 +08:00 via Android
    如果能解决 npm 的诸多痛点那不是挺好的吗,我只希望一点,每次安装依赖的时候不要再让我的 MacBook Pro 散热器疯狂工作了。
    no1xsyzy
        25
    no1xsyzy  
       2020-05-14 09:36:29 +08:00
    @cmdOptionKana #22 当初会用 Perl 写的东西现在都转 Python 了…… 这种感觉?
    revalue
        26
    revalue  
       2020-05-14 09:37:22 +08:00
    历史的车轮从我身上压过
    dinjufen
        27
    dinjufen  
       2020-05-14 09:39:53 +08:00
    node_modules 无底黑洞能解决吗
    Niphor
        28
    Niphor  
       2020-05-14 09:48:27 +08:00
    放心 过 3 年合并回 node
    yuchenyang1994
        29
    yuchenyang1994  
       2020-05-14 09:59:24 +08:00
    挺适合做 GUI 的
    taxiaohaohhh
        30
    taxiaohaohhh  
       2020-05-14 10:00:01 +08:00
    @xingjue 写个 java 优越感这么高的???我第一的 php 都还没说话
    dayFvckingByte
        31
    dayFvckingByte  
       2020-05-14 10:09:07 +08:00
    @taxiaohaohhh php 第一?? python 默秒全(楼下继续)
    cai314494687
        32
    cai314494687  
       2020-05-14 10:11:06 +08:00
    @cmdOptionKana #18 PHP 年底就出 8 了,怎么就走下坡路了?
    LokiSharp
        33
    LokiSharp  
       2020-05-14 10:11:22 +08:00
    @dayFvckingByte #31 Python 就算了吧。。。web 后端市场占有率和 Node 半斤八两。。。
    whypool
        34
    whypool  
       2020-05-14 10:20:32 +08:00
    解决几个痛点就能火,甚至能去挑战 java
    依赖包管理,没有 npm 那种套娃,可以使用类似 jar 包,或者.ts 的包
    集成 web 开发包,类似于 springboot,直接是官方维护,没有第三方那么多幺蛾子,就是如果用 deno 开发 web,只有唯一选择
    分布式,多线程
    FreshOldMan
        35
    FreshOldMan  
       2020-05-14 10:23:47 +08:00
    @dinjufen 无底黑洞是啥,搜了没搜到没有没有什么关键词
    dodo2012
        36
    dodo2012  
       2020-05-14 10:23:55 +08:00
    @xingjue rust 表示不服,rust 安装依赖一样大几百 m 上 g,我都服了。
    darksword21
        37
    darksword21  
       2020-05-14 10:24:00 +08:00
    看好,喜欢新东西。。
    szzhiyang
        38
    szzhiyang  
       2020-05-14 10:25:12 +08:00
    标准库抄 Go 的?
    szzhiyang
        39
    szzhiyang  
       2020-05-14 10:28:27 +08:00
    到处都是 Go 的影子。
    tiedan
        40
    tiedan  
       2020-05-14 10:33:46 +08:00
    @szzhiyang 最早是 go 写的,中期觉得不好换成了 rust
    coolmenu
        41
    coolmenu  
       2020-05-14 10:34:03 +08:00   ❤️ 1
    dotnet core 蔑视你们!!
    Trim21
        42
    Trim21  
       2020-05-14 10:38:14 +08:00
    能不能直接当不需要 tsc 的 nodejs...
    kidlj
        43
    kidlj  
       2020-05-14 10:39:36 +08:00
    Vegetable
        44
    Vegetable  
       2020-05-14 10:41:32 +08:00
    @gimp 你发这两个,Node 和 python,都被从不同的角度吐槽,Cargo 感觉受到了侮辱
    Vegetable
        45
    Vegetable  
       2020-05-14 10:43:54 +08:00
    @dinjufen 看到有文章提到了,解决这个问题用了两个改进,一个是 deno 会有官方库,避免 node 生态这种基础功能大量不同的实现造成的混乱,另一个是包不再存放在每个项目目录里,而是隐藏的一个目录,项目之间也许能共享一份依赖。
    linglongll
        46
    linglongll  
       2020-05-14 10:48:33 +08:00
    这个衣服好贵啊 100 刀
    Immortal
        47
    Immortal  
       2020-05-14 10:56:43 +08:00
    @Vegetable #45
    听起来很像 golang 的方案
    Vegetable
        48
    Vegetable  
       2020-05-14 10:57:57 +08:00
    @Immortal 你的直觉很敏锐。
    deno_std is a loose port of Go's standard library. When in doubt, simply port Go's source code, documentation, and tests. There are many times when the nature of JavaScript, TypeScript, or Deno itself justifies diverging from Go, but if possible we want to leverage the energy that went into building Go. We generally welcome direct ports of Go's code.

    Please ensure the copyright headers cite the code's origin.
    coolmenu
        49
    coolmenu  
       2020-05-14 10:58:35 +08:00
    @Vegetable 共享依赖,也有版本的问题吧?还是有明确的库版本号的定义了
    Immortal
        50
    Immortal  
       2020-05-14 11:04:01 +08:00
    @Vegetable #48
    这个大概初版 deno 用 go 写也有联系
    作者应该也是个 golang 深度用户了 后来发现 gc 冲突后才转到 rust 吧
    aloxaf
        51
    aloxaf  
       2020-05-14 11:08:28 +08:00
    @dodo2012 那是编译中间产物,你用 release 的话就不会有那么多
    我采用的方法是设定一个统一的 target 目录,然后 systemd 设置一个定时清理任务将这个目录维持在一定大小(我设定的是 25 G,你可以根据自己项目大小调整)。而且能够复用其他项目的中间产物加快编译速度。
    yuankui
        52
    yuankui  
       2020-05-14 11:16:35 +08:00
    看到了大神的名字 @justjavac
    Vegetable
        53
    Vegetable  
       2020-05-14 11:19:17 +08:00
    @coolmenu

    import { serve } from "https://deno.land/[email protected]/http/server.ts";

    这条引用自动下载的缓存,看了一下缓存目录,和差不多 Go 一样是差不多形式的

    C:\Users\{username}\AppData\Local\deno\deps\https\deno.land

    但是内部是很多 hash 文件名加一个 metadata.json,这个 https 的含义不太确定。版本号在 metadata 里边有,应该是不同版本在缓存中共存。
    dreamerblue
        54
    dreamerblue  
       2020-05-14 12:07:09 +08:00
    @xingjue 有趣,原来还可以用依赖大小作为评价维度啊,学习了
    Nugine0
        55
    Nugine0  
       2020-05-14 12:18:04 +08:00 via Android   ❤️ 1
    从某种角度上讲,deno 就是 node 修正各种失误后的样子。py2 到 py3 也是一个大撕裂,后来 py2 死了,时间会给出答案。
    pockry
        56
    pockry  
       2020-05-14 13:08:48 +08:00
    Serverless 时代,冷启动才是核心竞争力,node 很拉胯,Python 也一般,golang 好很多,如果 deno 能达到 golang 的冷启动以及方便部署,那我觉得它的前途是光明的。
    love
        57
    love  
       2020-05-14 13:14:13 +08:00 via Android
    看了介绍,感觉着一股王 8 之气,必火无疑
    Jirajine
        58
    Jirajine  
       2020-05-14 13:18:36 +08:00
    @FreshOldMan #35 应该是指的这个梗
    damingxing
        59
    damingxing  
       2020-05-14 13:19:05 +08:00
    我说英文怎么写得这么专业😂
    hantsy
        60
    hantsy  
       2020-05-14 13:20:50 +08:00
    Node 已经合并过一次了,说不定以后又会合并。
    whileFalse
        61
    whileFalse  
       2020-05-14 13:22:57 +08:00
    @pockry 这就扯淡了,解释型语言凭什么和编译型语言比冷启动速度
    而且这个玩意儿还要先把 ts 编译成 js,还不地 node 冷启动快
    当然,如果这玩意儿能在部署前构建成 wasm 那还能快一点
    hafuhafu
        62
    hafuhafu  
       2020-05-14 13:44:10 +08:00
    第一感觉居然是...logo 很萌
    gimp
        63
    gimp  
       2020-05-14 13:46:19 +08:00
    @Vegetable 不用太敏感,我举例说明下包管理分离是常见做法。

    Cargo 设计的不错也很强大,但没必要贬损 npm 与 pip 。
    gimp
        64
    gimp  
       2020-05-14 13:46:53 +08:00
    @hafuhafu 喜欢 Logo +1 2333
    yafoo
        65
    yafoo  
       2020-05-14 13:58:39 +08:00 via Android
    @xingjue 自己坐了高铁,然后抱怨高铁车太长,车上人多。自己坐了飞机,然后嫌弃飞的太高。既然只有三行代码,你完全可以步行啊。。。
    zoharSoul
        66
    zoharSoul  
       2020-05-14 14:09:16 +08:00
    @xingjue 可是事实是 php 在下滑,node 在上升
    youxiachai
        67
    youxiachai  
       2020-05-14 14:09:34 +08:00
    justjavac 早年风评 md 程序员...
    但是老实说....实力还是比大部分人强....
    hronro
        68
    hronro  
       2020-05-14 14:24:29 +08:00
    @pockry @whileFalse
    Deno 在部署的时候可以可以直接加 V8 cache,冷启动还是很快的。
    关于 TypeScript 需要转译的问题,Deno 的官网上已经说了,“TSC must be ported to Rust”,现在虽然很慢,但未来换到 Rust 实现之后,速度会快很多的。
    cairnechen
        69
    cairnechen  
       2020-05-14 14:48:36 +08:00
    @youxiachai md 程序员是啥,搜了下没搜到,总不会是 markdown 吧
    youxiachai
        70
    youxiachai  
       2020-05-14 15:11:29 +08:00
    @cairnechen 就是 markdown .....这个属于当年的风评了...
    aaaaaaaaa
        71
    aaaaaaaaa  
       2020-05-14 16:00:29 +08:00
    @youxiachai

    "justjavac 早年风评 md 程序员"

    今年应该还是吧
    luozic
        72
    luozic  
       2020-05-14 16:21:12 +08:00
    实际上用 v8 做后端,最后是准备用 rust 做一个 typescript 的前端?
    Nugine0
        73
    Nugine0  
       2020-05-14 16:42:17 +08:00 via Android
    进一步了解可以看 Deno 中文手册,官方的由于 github 部分被墙而看不了。
    https://www.v2ex.com/t/671658
    fancy2020
        74
    fancy2020  
       2020-05-14 18:52:44 +08:00
    比较关心直接使用 URL 作为引用包的地址,打起字来会不会手疼,以及包的版本如何统一管理
    xg4
        75
    xg4  
       2020-05-14 19:06:30 +08:00
    @fanchangyong
    第三方库放在 deps.ts 中,然后从 deps.ts 中引入到代码中,管理 deps.ts 就行
    url 过长可以使用 import_maps,https://deno.land/manual/linking_to_external_code/import_maps
    liuguang
        76
    liuguang  
       2020-05-14 20:20:19 +08:00
    node 这个坑够大了,又开个新坑。与其用这玩意儿写后端,还不如直接用 rust 性能好, 后端性能这一块基本 pass 了。
    写前端的话,node 还是够用的,所以为啥用 deno 呢,deno 类库生态都没有。这玩意儿早点凉凉是最好的了。
    autoxbc
        77
    autoxbc  
       2020-05-14 20:57:27 +08:00
    @liuguang #76 Deno 在设计上是为了替代 bash 和 python 在系统管理中的应用,和 Rust 场景不重合

    注意 Deno 的作者同时精通 JavaScript Golang 和 Rust,但是他仍然认为需要这么一个属于程序员的"瑞士军刀"

    至于生态,Node.js 里的模块抛掉技术债,经过现代化改造后都是 Deno 的生态
    ayase252
        78
    ayase252  
       2020-05-14 21:09:46 +08:00
    用 URL 来引入依赖很激进啊....最后感觉可能要 reinvent 包管理器
    cy476571989
        79
    cy476571989  
       2020-05-14 21:57:42 +08:00
    我自己做了一个翻译工具,叫 Breword, 专门用来翻译开源项目文档, 已经用它翻译了 redux, koa, node-mysql 等项目文档。

    最近我已经把 Deno 的文档抓取了下来,欢迎一起来翻译:

    https://www_breword_com/projects/5ebcb0f5ddcf37001b4c33eb

    一段好的翻译,必须建立在对原文充分理解的基础上,所以,在翻译文档时,也是一个非常好的学习机会。

    Breword 这个翻译工具支持自动监测文档更新,一旦源项目更新后,会在 Breword editor diff 出译文的差异,方便维护译文文档。所以,我们会持续将 deno 的中文文档维护下去。

    期待你的参与。
    charlie21
        80
    charlie21  
       2020-05-15 00:10:20 +08:00
    为了卖衣服写了一个代码库,难道这就是有钱人的生活?
    DOLLOR
        81
    DOLLOR  
       2020-05-15 00:16:20 +08:00   ❤️ 2
    我总感觉 deno 可能未干掉 node,反倒干掉了 node 的竞争对手,尤其是 php 。
    chengxiao
        82
    chengxiao  
       2020-05-15 07:05:42 +08:00
    @fanchangyong
    “比较关心直接使用 URL 作为引用包的地址”
    golang 最初就是这么做的,但是后面发现版本控制是个大问题,才不得不引入 go mod 来管理包
    MichealXie
        83
    MichealXie  
       2020-05-15 17:34:08 +08:00 via Android
    @liuguang node, deno 能三天上手,rust 起步 1 个月吧?而且大部分程序员都不会用 rust
    a132811
        84
    a132811  
       2020-06-04 16:16:36 +08:00
    很好,deno 没有 node_module 这个无底洞。
    node 坑大了才有了 deno,angular1 到 angular2 , python2 到 python3 都是这样。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1231 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:04 · PVG 02:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.