Deno 的配置文件、框架,标准库

目录

1、配置文件

imports 和scopes

tasks

lint

fmt

lock

nodeModulesDir

npmRegistry

compilerOptions

一个全的示例

2、Web框架

2.1 Deno 原生框架

Fresh

Aleph

Ultra

Lume

Oak

3、标准库

3.1 版本和稳定性


1、配置文件

Deno支持一个配置文件,允许您自定义内置TypeScript编译器、格式化程序和linter。

配置文件支持. json和.jsonc扩展名。从v1.18开始,Deno将自动检测当前工作目录或父目录中的deno.json或deno.jsonc配置文件。--config标志可用于指定不同的配置文件。

  • 在Deno v1.23之前,您需要提供一个显式的--config标志。
  • 从Deno v1.34开始,全局支持includeexclude, 您可以使用*匹配任意数量的字符,?匹配单个字符,**匹配任意数量的目录。

imports 和scopes

从版本1.30开始,deno. json配置文件导入映射,用于解析对应的修饰符。

{"imports": {"std/": "https://deno.land/std@0.204.0/"},"tasks": {"dev": "deno run --watch main.ts"}
}

然后你的脚本可以使用修饰符std: 

import { assertEquals } from "std/assert/mod.ts";assertEquals(1, 2);

顶级deno. json选项导入映射以及--import map标志可用于在指定导入映射的其他的文件。 

tasks

类似于pack. json的脚本字段。本质上是命令行调用的快捷方式。

{"tasks": {"start": "deno run -A --watch=static/,routes/,data/ dev.ts"}
}

使用deno任务启动将运行该命令。 

lint

配置deno lint。

{"lint": {"include": ["src/"],"exclude": ["src/testdata/", "data/fixtures/**/*.ts"],"rules": {"tags": ["recommended"],"include": ["ban-untagged-todo"],"exclude": ["no-unused-vars"]}}
}

fmt

配置deno fmt 

{"fmt": {"useTabs": true,"lineWidth": 80,"indentWidth": 4,"semiColons": true,"singleQuote": true,"proseWrap": "preserve","include": ["src/"],"exclude": ["src/testdata/", "data/fixtures/**/*.ts"]}
}

lock

用于为锁定文件指定不同的文件名。默认情况下,deno将使用deno. lock并将其放在配置文件旁边。 

nodeModulesDir

用于在使用npm包时启用或禁用node_modules目录。

npmRegistry

用于为npm说明符指定自定义npm注册表。

compilerOptions

Dino. json还可以充当TypeScript配置文件,并支持大多数TS编译器选项。

Deno鼓励用户使用默认的TypeScript配置来帮助共享代码。

一个全的示例

{"compilerOptions": {"allowJs": true,"lib": ["deno.window"],"strict": true},"lint": {"include": ["src/"],"exclude": ["src/testdata/", "data/fixtures/**/*.ts"],"rules": {"tags": ["recommended"],"include": ["ban-untagged-todo"],"exclude": ["no-unused-vars"]}},"fmt": {"useTabs": true,"lineWidth": 80,"indentWidth": 4,"semiColons": false,"singleQuote": true,"proseWrap": "preserve","include": ["src/"],"exclude": ["src/testdata/", "data/fixtures/**/*.ts"]},"lock": false,"nodeModulesDir": true,"npmRegistry": "https://mycompany.net/artifactory/api/npm/virtual-npm","test": {"include": ["src/"],"exclude": ["src/testdata/", "data/fixtures/**/*.ts"]},"tasks": {"start": "deno run --allow-read main.ts"},"imports": {"oak": "https://deno.land/x/oak@v12.4.0/mod.ts"}
}

2、Web框架

最有可能的是,如果您正在构建更复杂的应用程序,您将通过Web框架与Deno交互。Deno支持两种Web框架:

  • Node.js原生框架/工具/库。一些最流行的工具,例如esbuild,明确支持Node. js和Deno。这里的缺点是您可能无法获得最佳体验或性能。
  • Deno 原生框架/工具/库。我们在下面介绍其中的一部分。

2.1 Deno 原生框架

Fresh

Fresh 是Deno最流行的网络框架。它使用一个模型,默认不向客户端发送JavaScript。大部分渲染是在服务器上完成的,客户端只负责重新渲染交互性的小的孤岛架构。这意味着开发人员明确选择对特定组件进行客户端渲染。

主要特点有:

  • 没有构建步骤
  • 零配置
  • 实时编译渲染
  • 小而快(框架不需要客户端JS)
  • 可选的客户端单个组件的水合作用
  • 由于逐步增强和使用原生浏览器功能,因此具有高度弹性
  • TypeScript开箱即用
  • 文件系统路由类似 Next. js

Aleph

Aleph.js 是Deno第二受欢迎的Web框架。它为您提供了与Create-React-App相同的快速启动React。与Next.js一样,Aleph提供SSR和SSG开箱即用,以允许开发人员创建对SEO友好的应用程序。此外,Aleph还提供了一些其他内置功能,这些功能在Next.js中没有开箱即用,例如:

  • 热重载(使用React快速刷新)
  • ESM导入语法(无需webpack)
  • 支持TypeScript

Ultra

Ultra 是Deno的现代流式React框架,是Aleph的另一种替代方案。这是一种使用React构建动态媒体丰富网站的方法,类似于Next. js。

Deno本身支持开箱即用的JSX和TypeScript(因此Ultra也支持),但它们在浏览器中不起作用。Ultra接管了将JSX和TypeScript转换为常规JavaScript的任务。

Ultra的其他亮点包括:

  • 用Deno写的
  • 提供导入映射
  • 100% 支持esm
  • 在开发和生产中使用导入映射,这极大地简化了工具链-您不必处理大量捆绑和转换
  • 源码在生产环境中发布,类似于它的编写方式
  • 导入,导出,在开发中一样工作

Lume

Lume 是Deno的静态站点生成器,它的灵感来自其他静态站点生成器,例如Jekyll或Thlenty。它易于使用和配置,同时非常灵活。亮点包括:

  • 支持多种文件格式,如Markdown、YAML、JavaScript、TypeScript、JSX、Nunjuck
  • 您可以连接任何处理器来转换资产,例如CSS的sass或postcss
  • 无需在node_modules或复杂的捆绑程序中安装数千个软件包。

Oak

Oak 是Deno的Web应用程序框架,类似于Node. js中的Express。

作为中间件框架,Oak是前端应用程序和潜在数据库或其他数据源(例如REST API、GraphQL API)之间的粘合剂。为了给您一个想法,以下是构建客户端-服务器架构的常见技术堆栈列表:

  • React. js(前端)+Oak(后端)+PostgreSQL(数据库)
  • Vue. js(前端)+Oak(后端)+MongoDB(数据库)
  • Angular. js(前端)+Oak(后端)+Neo4j(数据库)

Oak通过原生Deno HTTP服务器提供附加功能,包括基本路由器、JSON解析器、中间件、插件等。

3、标准库

Deno提供了一组标准模块,这些模块由核心团队审核,并保证与Deno一起工作。

标准库可在以下网址获得:https://deno.land/std

3.1 版本和稳定性

标准库还不稳定,因此它的版本与Deno不同。有关最新版本,请咨询https://deno.land/std或https://deno.land/std/version.ts。每次发布Deno时都会发布标准库。

我们强烈建议始终使用标准库固定版本的导入,以避免意外更改。例如,而不是链接到可能随时更改的默认代码分支,从而可能导致编译错误或意外行为:

// import the latest release, this should be avoided
import { copy } from "https://deno.land/std/fs/copy.ts";

相反,使用不可变且不会更改的std库版本:

// imports from v0.204.0 of std, never changes
import { copy } from "https://deno.land/std@0.204.0/fs/copy.ts";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/169930.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MR混合现实情景实训教学系统在旅游管理专业中的应用

在旅游管理专业中,MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面: 1. 实地考察的替代:对于一些无法实地考察的景点或设施,学生可以通过MR系统进行虚拟参观,从而了解其实际情况。这不仅可以减少时间和…

【C++】STL容器——【深浅拷贝】与【写时拷贝】对比详解(拷贝构造)(10)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 目录 一.深浅拷贝浅拷贝:深拷贝: 二.写时拷贝 一.深浅拷贝 (默认拷贝构造运用 引用 防止死递归的后遗症&#…

读高性能MySQL(第4版)笔记19_云端和合规性

1. 如何构建数据库环境 1.1. 托管MySQL 1.2. VM上构建 1.3. 天下没有免费的午餐,每一个选择都伴随着一系列的权衡 2. 托管MySQL 2.1. 服务商提供了一个可访问的数据库设置程序,而不需要用户深入了解MySQL的具体细节 2.2. 使用托管MySQL将缺乏很多的…

小程序设计基本微信小程序的校园生活助手系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以校园生活助手系统的实际应用需要出发,架构系统来改善现校园生活助手系统工作流程繁琐等问题。不仅如此以操作者…

Python手搓C4.5决策树+Azure Adult数据集分析

前言 课上的实验 由于不想被抄袭,所以暂时不放完整代码 Adult数据集可以在Azure官网上找到 Azure 开放数据集中的数据集 - Azure Open Datasets | Microsoft Learn 数据集预处理 删除难以处理的权重属性fnlwgt与意义重复属性educationNum去除重复行与空行删除…

百度文心一言4.0——使用及API测试

登录百度智能云:百度智能云 文心一言4.0使用 开通付费: 创建应用: 自行创建应用名称: 对话测试: API测试 ERNIE-Bot-4 API:ERNIE-Bot-4 打开链接查看自己的API Key,Secret Key。 可参…

Ivs+keepalived:高可用集群

Ivskeepalived:高可用集群 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,keepalived这个软件就是为了实现调度器的高可用。 注意:keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用。 lvs的高可用集群&a…

CSS 两栏布局

目录 CSS两栏布局(左列定宽,右列自适应宽) 方法一:浮动margin 方法二:定位margin 方法三:浮动BFC 方法四:Flex布局 方法五:able布局 CSS两栏布局(左列不定宽&#…

模拟计算器编程教程,中文编程开发语言工具编程实例

模拟计算器编程教程,中文编程开发语言工具编程实例 中文编程系统化教程,不需英语基础。学习链接 ​​​​​​https://edu.csdn.net/course/detail/39036 课程安排:初级1 1 初级概述 2 熟悉构件取值赋值 3 折叠式菜单滑动面板编程 4 自定…

万宾科技智能井盖传感器怎么使用?

时代在进步,科技在更新,人们身边的万事万物都在随着时代的脚步不断的前进。各种各样高科技技术在城市基础设施建设的过程中得到应用,很多智能产品不仅施工方便,而且可以向政府部门提供精准的数据,提高了相关管理人员的…

Django 地址接口开发

应用 Mixin 混合类进行收货地址接口开发 python ../manage.py startapp address继承了mixins扩展类,进到里面可以稍微看下源码 该方法帮我们实现了获取验证及保存的功能 address/views from rest_framework.generics import GenericAPIView from rest_framewo…

STM32:GPIO功能描述和工作方式

一、STM32控制原理概要 IO端口位的基本结构 在STM32有特定功能的内存单元,即"寄存器"。寄存器是程序与硬件电路通信的桥梁。寄存器按照每32位二进制0/1数据为一组。存储着芯片特定电路的相关信息。我们就是通过程序对寄存器中的数据进行修改,…

pycharm转移缓存目录

原来的缓存目录为C:\Users\86176\AppData\Local\JetBrains,各种配置文件、缓存文件随着pycharm的使用堆积在这里,导致C盘逐渐爆满。 因此需要将缓存目录转移至D盘。首先需要了解缓存目录的知识。 PyCharm 和其他 JetBrains 的 IDE 通常会有两个关键的目…

QSPI介绍

0 Preface/Foreword 1 QSPI介绍 硬件连接框图如下: QSPI接口的Display data format(显示数据格式) 包含以下几种: 16.7M colors RGB 8,8,8-bits input262K colors, RGB 6,6,6-bits input65K colors, RGB 5,6,5-bits input256 c…

Mac运行Docker报错

Mac运行Docker报错 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点…

LabVIEW应用开发——控件的使用(四)

接上文,这篇介绍时间控件。 LabVIEW应用开发——控件的使用(三) 1、时间控件Time Stamp control 在日常软件开发场景中,时间也是一种常用的控件,用于表达当前时间的显示、对下设置时间、时间同步等等场景。LabVIEW专门…

Python实战小项目分享

Python实战小项目包括网络爬虫、数据分析和可视化、文本处理、图像处理、聊天机器人、任务管理工具、游戏开发和网络服务器等。这些项目提供了实际应用场景和问题解决思路,可以选择感兴趣的项目进行实践,加深对Python编程的理解和掌握。在实践过程中&…

数据与视图的完美契合:Vue响应式的交织魅力

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

水电站与数据可视化:洞察未来能源趋势的窗口

在信息时代的浪潮中,数据可视化正成为推动能源领域发展的重要工具。今天,我们将带您一起探索水电站与数据可视化的结合,如何成为洞察未来能源趋势的窗口。水电站作为传统能源领域的重要组成部分,它的运行与管理涉及大量的数据。然…

在行首,行尾添加文本,替换文本中的空格、制表符等

本文使用:notepad进行演示,其他编辑器有类似的功能也可使用。 替换文本中的空格、制表符 当我们在查看环境变量的时候,往往用肉眼去看这种格式的是相当痛苦的。 -DDATABASE_DRIVER_CLASS_NAMExxx -DDATABASE_URLxxx -DDATABASE_USERNAMExxx …