体验Deno(一)

208 阅读3分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

Deno

2009年一个叫Ryan Dahl的男人创造了Node,Node的出现颠覆了前端的很多东西。Node从出现到现在产生了很多东西,例如模块化方案( Node采用了CommonJS ),npm、node_modules。但是当这个男人在回来使用node的时候,可能觉的Node难用了,于是有重写了一个Deno。Node的底层依赖是C++,Deno却变成了Rust。大佬换个技术这么轻松嘛?为啥到我这就这么难(小声嘀咕)。

今天先来入个门,后面边学习看看在继续更新。争取最后能搞出来一个能看的项目。

Deno安装

官网的话给了我们很多安装的方式,我们直接采用脚本来进行安装:

Mac安装命令:

> brew install deno

接下来我们仅需要等待脚本安装完成后就可以了。然后当我们执行deno --version,想试试却发现报错了。

> zsh: command not found: deno

从报错命令中我们可以想到应该是没有配置环境变量。当时第一反应就是去百度如何配置环境变量,然后看了看安装命令发现,我们安装deno完成时,人家以及提醒我们要配置环境变量了,并且把要配置的内容都给我们写好了。

WechatIMG1374.jpeg

我们只需要按照上面的提示讲Deno添加到环境变量上就可以了。

> vim $HOME/.bash_profile

然后复制上箭头上指的内容保存就可以。之后执行下 source .bash_profile。deno的环境变量就配置完成了。当我们执行 deno --version是就可以看到:

WechatIMG1382.jpeg

Hello World

既然是入门,当然少不了程序员的 Hello World。So 尝试下打印 hello world

1642606338125.jpg 我们可以看到,当我们要执行某个TS文件时,deno的命令比node多了一个options(run)。 总是hello world,总会看腻的,那么我们改下写法,将index.ts的内容改为如下:

1642606865350.jpg 我们发现,Deno给我们提供了一个全局的Deno对象,我们可以从args获取到传入参数的一个数组。这样的话我们就可以想打印啥就打印啥了,再也不用 hello world了。这个功能其实在node也是有的不过打印的是 require("process").argv

请注意,在脚本名称之后传递的所有内容都将作为脚本参数传递,而不会用作 Deno 运行时选项。

不过在node中,我们传入的参数是第三个,也就是如果我们想打印出来我们传入的内容就需要打印 require("process").argv[2]。(Macc测试结果)

热加载

在node中我们常用nodemon来做加载方便在调试程序的时候,不需要重复的去使用命令行来重启服务或者重新运行代码,在Deno中,给我们提供了 --watch命令,来实现热加载的功能。 deno run --watch index.ts test-watch

image.png