Итак, сегодня я узнал о Дено. Так что Deno — это как альтернатива NodeJS. Это среда выполнения JavaScript. Я уверен, что они лучше продают его, чем я.

Что заставило меня попробовать его в течение дня, так это то, что он поддерживает TypeScript из коробки — так что это похоже на TypeScript на стороне сервера без какой-либо настройки. Идеально подходит, так как я хочу попробовать создать что-то с помощью Snowpack на стороне клиента. Deno также убирает большую папку node_modules и имеет собственный способ импорта зависимостей (Deno не поддерживает NPM напрямую — но об этом ниже).

Итак, этот пост в блоге представляет собой набор вещей, которые я узнал, играя с Deno.

Первый из. Установить Deno очень просто. Это просто исполняемый файл, который вы загружаете, копируя и вставляя команду в свой терминал. Сразу после этого вы получили свою команду Deno в терминале.

После этого вы можете просто создать файл index.ts и запустить console.log что-нибудь — и выполнить его с помощью deno run index.ts.

Супер легко.

Но как веб-разработчик, первое, что я хочу сделать, это обслуживать что-то через HTTP. Поэтому я обращаюсь к их http-модулю:

import { serve } from "https://deno.land/[email protected]/http/server.ts"; 
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
let headers = new Headers();
headers.set("content-type", "text/html"); 
for await (const req of s) {
  req.respond({
    headers,
    body: "<h1>Hello</h1>,
  });
}

Так что приятно. Но я хочу большего. Я хочу обслуживать GraphQL.

И тут возникает проблема. Для Deno нет пакета GraphQL. (на момент написания этой статьи)

Таким образом, решение состоит в том, чтобы использовать CDN под названием cdn.pika.dev — это CDN, который преобразует пакеты NPM во что-то, что может быть съедено Deno. Поэтому мы просто пишем это:

import {
  graphql,
  GraphQLSchema,
  GraphQLObjectType,
  GraphQLString,
} from “https://cdn.pika.dev/graphql@^15.0.0";

Затем вы можете использовать это и просто следовать документации — и, прежде чем вы это узнаете — вы можете передать ответ от graphql через Deno.

Следующее, что вам нужно, это база данных. Там вы можете использовать Dexecutor:

import Dexecutor from "https://deno.land/x/dexecutor/mod.ts"
// Creating the query executor client
let dexecutor = new Dexecutor({
  client: "sqlite3",
  connection: {
    filename: "test.db"
  }
});
// Opening the connection
await dexecutor.connect();
await dexecutor.execute(`
  CREATE TABLE IF NOT EXISTS contacts  (
    contact_id INTEGER PRIMARY KEY,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE,
    phone TEXT NOT NULL UNIQUE
  );
`)

Но вам также нужна надлежащая поддержка в вашем редакторе. Поэтому я установил расширение axetroy.vscode-deno в VSCode (у меня были проблемы с другими плагинами) — обязательно прочитайте README, так как вам нужно включить его в своей рабочей области.

Вам также нужен инструмент для автоматической перезагрузки сервера Deno. Для этого я использовал denon — я использовал этот файл конфигурации:

// .denon.json
{
    "files": [
        "index.ts"
    ],
    "deno_args":[
        "--allow-net",
        "--allow-read",
        "--allow-write"
    ],
    "extensions": [
        ".ts"
    ],
    "watch": [
        "."
    ]
}

И после этого я просто запускаю свои вещи с помощью команды denon без каких-либо аргументов.

И вот оно. Я почти уверен, что у меня есть много кирпичиков, необходимых для создания сервера, который сможет обслуживать мой новый эксперимент Snowpack. (пока не знаю, что буду делать)

Дено швы легко. Это еще очень рано для этой среды выполнения (она только что достигла 1.0), но я думаю, что было весело покопаться в ней, и я надеюсь написать больше сообщений в блоге со временем.