🦕Deno是Node的替代品吗?额外福利:我为Deno创建了一个样板代码
首先,
Deno 目前还不具备生产环境的成熟度。截至撰写本文时,其版本为 1.0.0-rc2。这是否意味着我们应该忽略它?不,我们应该立即开始学习它,因为或许需要一到两年的时间,但如果一切顺利,它将会取代 Node,或者至少会像 Node 一样流行。
我并不是在贬低Node。我很喜欢Node,我认为它帮助了很多人,但有时它的发展速度确实比较慢。比如添加模块支持和采用ECMAScript(JavaScript)标准。
此外,NPM 有时会很混乱,但公平地说,依赖管理本身就不容易。围绕 Node 搭建工具也很难,比如 pipwebpack或 pip eslint/prettier。我总是用一些现成的模板代码,但由于频繁的更新,这些代码现在已经失效了。好了,关于 Node/NPM 就说到这里吧。
Deno是什么?
根据Deno网站的信息:
一个安全的 JavaScript 和 TypeScript 运行时环境。
好的,所以我们知道我们可以在裸机上运行 Javascript 和 Typescript。
深入研究文档,我们可以找到以下信息。
其中之一是 Deno 默认是安全的。但这究竟意味着什么呢?
默认情况下,Deno 运行在一个沙箱环境中,无法访问系统。实际上,你需要指定 Deno 项目可以访问哪些资源等等。这一点本身就非常出色。因此,如果某个依赖项想要访问你的文件系统(它不应该访问),它根本无法做到。
Node.js是用C++编写的,在它开发之初,C++是最佳选择。但后来出现了像Rust这样更简单、更安全的语言。这就是Deno选择用Rust编写的原因。Rust是一种非常优秀的语言,它还支持Web汇编,并且默认就很安全。
Deno 的其他一些优点包括:它开箱即用地支持 TypeScript,可以打包成单个文件,并内置了测试和代码格式化解决方案。它还内置了包管理器。所以,想要快速上手或者只是想尝试一些东西,你只需要 Deno 就够了!
如果您想了解更多区别,可以点击此处阅读。
创建我们的样板
安装 Deno 很简单:
#Unix
curl -fsSL https://deno.land/x/install/install.sh | sh
现在你应该已经掌握了该deno命令。一般来说,我建议你使用类 Unix 操作系统。如果你使用的是 Windows,那么可以使用 WSL。
此外,你应该已经git安装了 和make。
你可以像这样克隆样板代码:
git clone https://github.com/lampewebdev/deno-boilerplate
本教程将使用 VS Code,您需要下载Deno VS Code 扩展。
让我们来了解一下最重要的文件。
该.vscode文件夹包含一个settings.json我们需要启用 Deno 的文件。
{
"deno.enable": true
}
接下来我们要查看的文件是makefile。
您可以在 中看到以下命令makefile:
make run:执行index.tsmake test运行测试make format格式化所有文件make debug:从以下位置开始运行调试器index.tsmake bundle:将您的项目打包成单个文件build/index
所有这些命令都不需要任何额外的工具或依赖项,它们都内置在 Deno 中。我觉得这很棒,它大大简化了开发人员的工作。我希望 Deno 默认能添加一个--watch标志,以便在文件更改后自动重新运行代码。
另一个有趣的文件是该deps.ts文件。这只是一个普通的 TypeScript 文件,但按照惯例,这个文件用于组织你使用的外部模块/包。
import * as Log from "https://deno.land/std/log/mod.ts";
export {
Log,
};
这就是依赖项deps.ts。你可以把它想象成你的 package.json 文件。
它是一个集中存储依赖项的地方。值得关注的一点是,开发依赖项应该放在哪里。我见过有人这样做dev-deps.ts。我更倾向于这样做deps.<ENV>.ts。例如deps.prod.ts,deps.dev.ts等等。
目前configs.ts是空的。我喜欢dotenv文件,但我们还要看看Deno最终会采用什么方案。
然后我们还有它index.ts。它是我们的入口点,作为一名网页开发者,我很喜欢index它,但我也可以毫无问题地重命名它。
其余部分都比较常规。
我们有一个main.ts可以开始实施的地方,以及一个如何logger在 Deno 中实现最简单的示例。
我想添加的是测试和文档。这两项都是 Deno 内置的,不需要额外的工具。
如果您想提供帮助,请联系我,或者在GitHub 仓库中创建 issue 或 pull request。
你们想看更多关于Deno的内容吗?请告诉我!我很想创作更多关于Deno的帖子和内容!
👋打个招呼! Instagram | Twitter | LinkedIn | Medium | Twitch | YouTube
文章来源:https://dev.to/lampewebdev/deno-the-node-replacement-bonus-i-created-a-boilerplate-for-deno-2g25
