Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

备稿: deno v1.0 (5月13日) #11

Open
iugo opened this issue Apr 6, 2020 · 9 comments
Open

备稿: deno v1.0 (5月13日) #11

iugo opened this issue Apr 6, 2020 · 9 comments
Assignees

Comments

@iugo
Copy link
Member

iugo commented Apr 6, 2020

Deno v1.0

什么是 Deno

安全的 JavaScript 和 TypeScript 运行时.

使用 V8 作为底层的 JavaScript 运行时引擎, 使用 Rust 作为底层系统接口.

如何拼读

一般写作 Deno, 如果在描述具体功能时可以使用首字母小写.

因为 Logo, 我一般会读 dinosaur 的音, dainə. 我也不知道官方希望我怎么读.

为什么要有 deno 这个项目

主要相对 Node.js, 我认为有以下优势:

  • [官方介绍] 默认无(文件, 网络, 环境变量)权限.
  • [官方介绍] 有开箱即用的 TypeScript.
  • [官方介绍] 单一的可执行文件.
  • [官方介绍] 简洁可靠的标准库.
  • Promise 风格的异步 API.
  • 尽量与浏览器兼容.
    比如有 fetch.
  • 尽量使用新特性.
    比如跟随 V8 支持 top-level await.

其他我不认为是优点, 但也列出以下:

  • [官方介绍] 内建实用工具.

性能如何

Deno 本身有基于最新 master 分支的基准测试 benchmarks, 主要对比 Rust 上限及
Node.js.

从官网给出的测试来看, 目前网络性能与 Node.js 基本相似.

我比较早开始使用 deno, 0.12 之前吧. 当时 deno 的性能不够好, 基本被 Node.js 吊打.
但随着不断优化, 会越来越好的. 尤其是上限给出的 Rust, 在不断贴近.

但毕竟, JavaScript 不是性能见长的语言, 也没必要太刻意追求性能. 不拖后腿就好.

如何使用

因为只有单文件, 使用应该不难.

基本上, 如何使用 Node.js 就如何使用 Deno.

需要注意, 因为模块化问题, 与 Node.js 的依赖是不通用的.

但如果引用的是源代码, 并且内部是纯 JavaScript 而没有引用 Node.js, 那么其实是
可以通用的. 不过仅限我自己写的一些东西, 其他没测过.

权限列表

这点文档做得真不好, 我没有找到. 不过可以通过源代码看到, 有如下权限:

--allow-read
--allow-write
--allow-net
--allow-env
--allow-run
--allow-plugin
--allow-hrtime

当然, 目前还有权限功能不完善的问题, 比如这则 issue 中提到, 现在 workers
还是不能细分权限, 只能继承全部权限.

相关问题

Q: 那么多方法全部放在 Deno 这个对象内, 好傻.
A: 首先, 这样也没有造成什么变量污染, 其次, 这里仅仅存放必要的方法,
大多数需要的其他方法, 在标准库中找就好了, 不会导致体积太大. 浏览器的 window
对象不也这样嘛, 无可厚非.

Q: 有 await Deno.writeFile 了为什么还要 Deno.writeFileSync?
A: 於我心有戚戚焉. 但具体看代码可以知道, 二者并不相等. 理论上来说,
同步的会快一些.

Q: 前端天天搞新东西, 没意义.
A: 不一定会解决所有人的问题, 但一定会解决一些人的问题. 有需要就用, 不需要就不用.

@iugo
Copy link
Member Author

iugo commented Apr 22, 2020

现在 Node.js v14 出了, https://github.com/nodejs/node/releases/tag/v14.0.0, 要不要做个对比?

@iugo
Copy link
Member Author

iugo commented Apr 22, 2020

denoland/deno#2473

还有就是 deno v1.0 下个月就要正式发布了. 到时候好好整理一下?

@iugo
Copy link
Member Author

iugo commented Apr 22, 2020

马上就要迎来第一个大版本号了, 可是 BREAKING Changes 还是不断, 我觉得真好啊.

@iugo
Copy link
Member Author

iugo commented Apr 22, 2020

最近 deno 的 BREAKING Changes 主要是整理代码, 将可以从标准库中择出来的都择出来. 强大简洁的标准库是目标.

@iugo iugo self-assigned this Apr 22, 2020
@iugo iugo changed the title 备稿计划: deno v0.39 备稿计划: deno v1.0 (5月13日) Apr 22, 2020
@kaneruan
Copy link

我也关注,哈哈哈

@kaneruan
Copy link

简单易用的 API 很重要,可以很好的将 web 前端用户导流过来。特别是 browser Compatible 是 deno 目标之一。

@chenxyzl
Copy link

关注中,期待ing

@Lzw2016
Copy link

Lzw2016 commented May 11, 2020

期待ing 1.0 !!! 3天

@iugo
Copy link
Member Author

iugo commented May 16, 2020

因为家里有事, 所以拖了几天.

最近大家也都在热议. 我觉得看新闻, 评论什么的都是在嘴炮吧. 纸上得来终觉浅, 绝知此事要躬行.

感兴趣的人可以真的试试, 先拿来替换一下以前用 Node.js 写的小工具.

线上的业务代码我还是不建议大家现在就换, 虽然说出了正式版本, 但是稳定性, 尤其是 API 上还是存在一些问题.

在非正式版时, 我就一直开始使用 deno 了, 真的觉得小工具的话, 完全没问题. 大多数需要第三方的, 其实自己也可以写写. 只是一旦涉及复杂应用, 比如我想用 AWS SDK, 这时候才产生一些问题, 我总不能把 SDK 再写一遍吧, 我也不是 Amazon 的员工.

生态还是很重要的, 但不影响大家感兴趣, 不影响大家尝鲜.

@iugo iugo changed the title 备稿计划: deno v1.0 (5月13日) 备稿: deno v1.0 (5月13日) May 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants