本篇干货推荐 新媒体导航网站 - 切页
最近一段时间开发者总是干货满满,这不就在前几天(2020-05-14) 日,deno
V 1 版本正式发布,如果你不知道这是什么,那你一定知道node
没错 no--de
字母反过来就是 de-no
有一点很重要:**可能成为Node.js ** 的代替品 ,站在技术的起点,将来你就是最靓仔。几年前的Vue
不知不觉也都 Vue3
了。一起学吧
历史
是个什么时间都要拉上历史掰扯掰扯。Deno
的正式发布被许多像我们这样的前端开发者视为头等大事 ,就像当爹一样。
发音
比较尴尬的事情,和同事说起这件事,别不知道怎么发音
- 德诺
- 迪诺
怎么发音的都有,这个也不必强求吧 就像 domain
“du men”还是 "dou man" ,不过油管上
大佬们发音也不一。58.5K 星的项目 还是应该知道 怎么发音 。
作者
就是那个写node
的家伙,大名鼎鼎——Ryan Dahl。在 2018
年的演讲deno
演讲视频 还是个小项目。笔者了解的也是。不管是 Node
还是如今的 Deno
作者在 2009 就已经开始。当时演讲的时候说是 感到遗憾的十件事(是个男人谁还没干过遗憾的事) 马爸爸还悔创阿里呢
- 用
ts
写 - 然后底层换用
Go
这老哥后来搞 人工智能
去了
定义
A secure runtime for JavaScript and TypeScript.
JavaScript和TypeScript的安全运行时。
一个用于后端的全新新的不能再新的JavaScript
运行时
- 不再使用C++ 编写 ;使用基于
ToKio
平台的Rust
语言编写 - 运行
GooGle
的 V8 引擎 - 关于
Rust
提供类似 C++ 的良好性能 但又安全- 默认为安全。除非明确启用,否则没有文件,网络或环境访问权限
- 不是语言 不是语法 而是一个运行时
- 为什么使用Rust : 因为有很多现成的模块啊 节约开发时间呗
改变
改变才是成长的第一步 那自己推翻自己
究竟何来必要呢。全新理念,带来什么突破又或者说有什么革新
- 安全集成
- 更为完整的标准库
- TypeScript
- 不再有
NPM
或者node_modules
文件夹 - 窗口对象
- 其他
安全集成
默认情况下,Node.js允许您访问所有内容,也就是说,您可以读写文件系统,发出传出请求,访问环境变量等。尽管作为具有这种访问权限的开发人员是有好处的,但是如果您在编写自己的代码时不注意,也会带来安全风险。
因此,Deno使用命令行参数来启用或禁用对不同安全功能的访问。因此,如果您需要脚本能够访问该/etc
文件夹,则可以执行以下操作:
deno --allow-read = / etc myscript.ts
完整的标准库
Node
作为运行时 与其他语言还有一段时间要走,不过势头正猛。本质上 Deno
开箱即用 诸多的模块可用
哪哪都有的TypeScript
如果你很喜欢Ts
那么 Deno
内置了 直接 内置了,直接开搞。但在背后肯定是做了甚多事情
deno run -c tsconfig.json [your-script.ts]
不再有NPM了
npm i
装包 装依赖 各种依赖关系这将成为过去时 什么概念 就是一个项目没有 package.json
那我们怎么加载第三方的模块 我们总不能 直接自己写吧 不然,我们直接
import * as log from "https://deno.land/std/log/mod.ts";
也就是说 我们不再有自己的集中式存储库。我们可以直接在引入的时候指定版本 直接修改 URL
地址就行了。使用NPM
就会导致一个巨大 **大大大 的 node_modules
文件夹,节点或者安全性存在问题 这在历史上也是发生过的 不安全事件。在开发的时候 一不小心还点到 长长的文件夹
你好啊 我日思夜想的 Es6
由于历史原因,node
对异步的支持一般是 异步callback 。我们在写接口的时候 ,比如用express
时 就各种回调。
- 一个是 es 导入
- 一个是Promise
这下好了,都可以了
窗口对象
窗口对象是浏览器中的父对象,JavaScript的一些最重要的函数都从该对象派生。例如,其中之一就是fetch。不幸的是,像Axios这样的库的本机替代品在Node.js中没有位置-您必须在其中找到使用库的解决方案-但在Deno中则没有。详细看下deno.land/typedoc/int…
其他
Deno 显著的几个特点上文已经提到了,当然了,不只是这些功能,像开箱即用的大型工具(测试运行程序) 调试器 文件监视 等等
小试牛刀
安装
终端
iwr https://deno.land/x/install/install.ps1 -useb | iex
编辑器
PS D:\gh-code\awesome-frontend-learning\deno-learn> deno run https://deno.land/std/examples/welcome.ts
Download https://deno.land/std/examples/welcome.ts
Warning Implicitly using master branch https://deno.land/std/examples/welcome.ts
Compile https://deno.land/std/examples/welcome.ts
Welcome to Deno �
官方简单案例
import { serve } from "https://deno.land/std@0.50.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" });
}
但是在这里,由于Deno的安全措施介入,我们尚未允许访问网络 这也印证了 Deno
的安全性
展望
既然大家都追寻新技术,是因为都不想落后,这也是大家都会嘴里说着学不动了
却比谁都关注新技术。真香
落后就要挨打,多么亘古不变的道理啊。
多年来,Node的发展基本可以满足我们的需求 ,不得不承认 Webpack
与 Node
使我们前端拥有更多的能力。切图仔
不过是我们的自嘲罢了。
Deno
在现在也才是 V1
版本,我们也是简单的 探秘一下 也没有在生产环境中尝试与测试。未来的社区会发展成怎么样 我们拭目以待。笔者觉得 Vue3
和 Deno
阅读文章的你 可以不感兴趣,但学了并不多,毕竟是 人家辛辛苦苦 开源的。Deno
还很新 Node
已经有点老了。但是两者都是十分有用途
心里话
笔者,很希望你的鼓励,一个小小的赞,可能就幻化为了坚持
所谓的动力无非是为了谁。
话很少,但我会打字,期待与你一起看看这个技术的新世界。觉得有帮助的话,点赞
评论
分享
所有的思路会第一时间更新在 《前端厚说》,时不时的聊一聊 干货 | 福利 | 黑科技 等等
文中代码
文章中的演示案例代码都会同步到GitHub 上。你可以在github 找到我