目录
Deno支持一个配置文件,允许您自定义内置TypeScript编译器、格式化程序和linter。
配置文件支持. json和.jsonc扩展名。从v1.18开始,Deno将自动检测当前工作目录或父目录中的deno.json或deno.jsonc配置文件。--config标志可用于指定不同的配置文件。
- 在Deno v1.23之前,您需要提供一个显式的
--config
标志。- 从Deno v1.34开始,全局支持
include
和exclude
, 您可以使用*
匹配任意数量的字符,?
匹配单个字符,**
匹配任意数量的目录。
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任务启动将运行该命令。
配置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"
- }
- }
最有可能的是,如果您正在构建更复杂的应用程序,您将通过Web框架与Deno交互。Deno支持两种Web框架:
Fresh 是Deno最流行的网络框架。它使用一个模型,默认不向客户端发送JavaScript。大部分渲染是在服务器上完成的,客户端只负责重新渲染交互性的小的孤岛架构。这意味着开发人员明确选择对特定组件进行客户端渲染。
主要特点有:
Aleph.js 是Deno第二受欢迎的Web框架。它为您提供了与Create-React-App相同的快速启动React。与Next.js一样,Aleph提供SSR和SSG开箱即用,以允许开发人员创建对SEO友好的应用程序。此外,Aleph还提供了一些其他内置功能,这些功能在Next.js中没有开箱即用,例如:
Ultra 是Deno的现代流式React框架,是Aleph的另一种替代方案。这是一种使用React构建动态媒体丰富网站的方法,类似于Next. js。
Deno本身支持开箱即用的JSX和TypeScript(因此Ultra也支持),但它们在浏览器中不起作用。Ultra接管了将JSX和TypeScript转换为常规JavaScript的任务。
Ultra的其他亮点包括:
Lume 是Deno的静态站点生成器,它的灵感来自其他静态站点生成器,例如Jekyll或Thlenty。它易于使用和配置,同时非常灵活。亮点包括:
Oak 是Deno的Web应用程序框架,类似于Node. js中的Express。
作为中间件框架,Oak是前端应用程序和潜在数据库或其他数据源(例如REST API、GraphQL API)之间的粘合剂。为了给您一个想法,以下是构建客户端-服务器架构的常见技术堆栈列表:
Oak通过原生Deno HTTP服务器提供附加功能,包括基本路由器、JSON解析器、中间件、插件等。
Deno提供了一组标准模块,这些模块由核心团队审核,并保证与Deno一起工作。
标准库可在以下网址获得:https://deno.land/std
标准库还不稳定,因此它的版本与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";