Deno初体验及实战入门

Deno初体验及实战入门

前言

最近学了一波Deno, 由于新东西 社区不完善,学的过程中都是翻英文文档和源码慢慢摸索,所以这里总结一些核心要点,帮助读者快速上手入门Deno,详细学习见官方手册

本文的代码例子见 https://github.com/HenryYey/deno-demo

Deno是什么?

deno是一个默认安全运行环境的JS/Ts/WebAssembly runtime,是Node.js之父 Ryan Dahl开发的新项目,号称是node的替代品,于2020年5月13日正式发布。他的名字由node的字母重新拼接,意为 destory-node。

在node主宰前端的时代,作者为什么还要研发deno呢?因为,作者认为,node目前的发展已经违背了他的初衷,有许多无法解决的痛点,所以,他决定重新打造一个"升级版node"

Node痛点

node最难以忍受的几个痛点如下

  • 不安全、臃肿且难以管理的node_modules
  • CommonJs与ES模块不兼容
  • 本身功能不完整,需要外部工具来兼容typescript、babel、webpack…

Deno新特性

其实对于我们开发者来说,Deno的大部分特性还是和Node一样。但是,也有一些新特性,下面是最核心的几个点:

  • 底层语言不同,node使用C++, 而deno使用Rust
  • 原生支持typescript,全局window,webAPI,fetch,异步返回promise等
  • deno使用ESmodule,即不再使用npm安装包,并且没有package.json集中管理,而是直接通过URL加载
  • 默认安全,需要授权才能读写文件、访问网络。

Start

安装及环境配置

deno的安装十分简单(连windows都是一键)

macOS 和 Linux 系统上使用 shell:

curl -fsSL https://deno.land/x/install/install.sh | sh

Win系统上使用 PowerShell:

iwr https://deno.land/x/install/install.ps1 -useb | iex

环境变量是安装后默认配好的。可以输入 deno --version来验证一下

接下来,我们在ide上装一下扩展插件就好了。
对于VS Code,安装vscode_deno

hello world

命令行输入时,支持多参数、本地/网络url。具体见 deno --help

首先我们建一个 hello.ts文件,然后写入

console.log("hello,world");

在命令行输入 deno run ./hello.ts,可以看到控制台输出 hello,world 。即我们成功用deno运行了一个ts文件

包管理

包管理是deno的最大特点,我们可以直接通过本地/网络url来导入包,并且会在本地进行一个缓存。

例如:

import {
    Application } from "https://deno.land/x/oak/mod.ts";
import {
    serve } from "https://deno.land/std@v0.30.0/http/server.ts"; // 指定版本

其实本质上还是一个upload资源->使用的过程,但是它没有node_modules+package.json,而是直接引入。这种方式个人认为有好有坏,虽然集中包管理会使各种包冗余,体积庞大,但是对于开发者来讲,能方便的阅读、编码和进行版本管理,并且不用担心网络依赖被墙、被黑等。。但是既然做了,肯定是作者认为这种方式更好,所以我们就期待真香把!

建议,创建一个文件来集中管理deps

// deps.ts
export * from "https://deno.land/std@v0.57.0/testing/asserts.ts";
export * from "https://deno.land/x/oak/mod.ts";

// hello.ts 使用
import 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值