当前位置: 首页 > news >正文

x-cmd pkg | deno - Node.js 创始人的创新之作,安全且现代的 Node.js 替代方案

目录

    • 简介
    • 快速上手
      • 安装
      • 使用
    • 功能特点
    • 相关作品和竞品
    • 进一步阅读

简介

deno 是用 Rust 开发的 JavaScript、TypeScript 和 WebAssembly 运行时,是 Node.js 的替代方案,能兼容 Node.js 和 npm 生态。

  • 相比于 Node.js,Deno 所做的改进主要体现在以下三方面:
    1. 安全性:在没有用户授权的情况下,代码默认在一个安全的沙盒环境中运行,对文件系统、网络和系统环境的访问都将受到限制,这能防止 npm 模块引入的意外漏洞(供应链攻击)。
    2. 模块管理:支持使用 URL 直接引入模块,不再依赖 npm 或其他包管理工具,不再需要 node_modules 目录,避免了包依赖地狱。
    3. 工具链:Deno 是一个单一的二进制可执行文件,内置了开发和运维需要的主要功能(如脚本运行、测试、编译、打包),工具链更加简洁。

在这里插入图片描述

快速上手

安装

eval "$(curl https://get.x-cmd.com)"        # 安装 x-cmd
x env use deno                              # 使用 x-cmd 安装 deno

使用

  1. 运行 JavaScript 或 TypeScript 脚本:

    deno hello-world.ts
    deno https://docs.deno.com/examples/hello-world.ts
    cat hello-world.ts | deno run -
    
  2. 控制程序运行时的访问权限,如只允许访问网络,但禁止文件系统等其他资源:

    deno run --allow-net script.ts
    
  3. 检查和格式化代码:

    deno check main.ts
    deno fmt src/*.ts
    deno lint src/
    

功能特点

  1. 原生支持 TypeScript:开发者可以直接编写 TypeScript,并通过 Deno 无缝运行,而不需要像 Node.js 一样通过额外的编译步骤或配置。
  2. 安全性为首:在没有用户授权的情况下,会限制对文件系统、网络和系统环境的访问,避免了代码在未经授权的情况下访问敏感资源。
  3. 使用 URL 导入模块:支持使用 URL 直接引入模块,版本控制由 URL 管理,可以不再依赖包管理工具(如 npm)。
  4. 工具链更简洁:内置了开发和运维需要的主要功能(如脚本运行、测试、编译、打包),不需要额外安装。
  5. 更符合现代 Web 标准:deno 的 API 经过重新设计,且提供了一个官方的标准库,更加符合现代 JavaScript 的标准。

相关作品和竞品

  1. node.js:用 C++、JavaScript 和 C 开发的 JavaScript 运行时,是主流的 JavaScript 运行时环境,原作者也是 Ryan Dahl。
  2. bun:用 Zig 开发的 JavaScript 和 TypeScript 一体化工具包,也是目前流行的 JavaScript 运行时之一。由 Jarred Sumner 所设计,能作为 Node.js 的替代方案。

进一步阅读

  • deno 源代码 - deno 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 deno 和参与社区贡献。
  • deno 官方网 - 其中包含了 deno 的官方文档。

更多内容请查阅 : pkg/deno

转载请标明原文链接 :https://www.x-cmd.com/pkg/deno


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法


http://www.mrgr.cn/news/51870.html

相关文章:

  • C++ 学习笔记八 数组
  • TCP/IP 协议【四次挥手】简要说明
  • 十三、事务基础知识
  • NASA:全球鹰无人机系统(UAS)上收集的在位云层测量
  • 【C++贪心】2086. 喂食仓鼠的最小食物桶数|1622
  • Java - Spring 表达式语言 (SpEL) 简单入门
  • 科研绘图系列:R语言柱状图(histogram)
  • 操作系统实验二:shell的实现
  • 制造企业数字化转型顶层规划案例(55页满分PPT)
  • 92、Python之异常:异常的概念及异常处理机制
  • MyBatis的占位符(day36)
  • 中科星图GVE案例——利用最短距离方法实现土地分类(合肥)
  • 【JavaEE】——三次握手()详细、易理解
  • Spring 声明式事务
  • 基于 MyBatis Plus 分页封装分页方法
  • 第九课:Python学习之函数基础
  • 2024年的5款AI写作工具,你用过几个?
  • 【含文档】基于Springboot+Vue的仓库管理系统设计与实现(含源码+数据库+lw)
  • 高级IO——五种IO模型
  • 5分钟精通Windows环境变量