ДЕНО

Дено против узла

Как Deno по сравнению с Node.js?

Deno был написан тем же автором, что и Node.js. Райан Даль, автор Node.js, говорит, что исправляет ошибки, которые он сделал при создании Node.js.

О чем он сожалел?

Основные проблемы с Node.js

Любая программа может записывать в файловую систему и сеть

Разрешение на запись может быть проблемой безопасности, особенно при установке ненадежных пакетов из npm.

Инцидент с кроссэном - тому пример. Пакет с именем, очень похожим на популярный пакет cross-env, отправлял переменные среды из контекста установки на npm.hacktask.net. Именование пакетов было намеренным и злонамеренным - цель заключалась в сборе полезных данных от обманутых пользователей.

Если бы у crosssenv не было прав на запись, этого бы не произошло.

Модульная система и Npm

Основная проблема здесь в том, что модульная система несовместима с браузерами. Это причина хранения зависимостей в node_modules и наличия package.json.

Как Deno решает эти проблемы?

С Deno мы можем делать то же самое, что и сNode.js. Мы можем создавать веб-серверы, как это делаем с Node.js и другими служебными скриптами.

Но Дено:

  • По умолчанию поддерживает Typescript, в отличие от Node.js - это среда выполнения Javascript и Typescript.
  • Использует систему импорта модулей ES вместо собственной.
  • Обладает такими современными функциями Javascript, как Promises.
  • По умолчанию это безопасно.

Сравнение с Node.js

Сходства:

  • Оба работают на V8 Chromium Engine.
  • Оба отлично подходят для разработки на стороне сервера с помощью JavaScript.

Отличия:

  • Node написан на C ++ и JavaScript. Deno написан на Rust и TypeScript.
  • У Node есть официальный менеджер пакетов под названием npm. Deno позволяет импортировать любой модуль ES из URL-адресов. Мы можем создавать пакеты, не публикуя их в репозитории, например, npm witch делает его очень гибким.
  • Node использует синтаксис CommonJS для импорта пакетов. Deno правильно использует модули ES.
  • Deno предоставляет нам дополнительные инструменты, которые в настоящее время выполняют задачи, такие как WebPack, rollup и prettier. Deno включает в себя эти инструменты из коробки: объединение, тестирование, установка скриптов, форматирование и отладка.
  • Deno использует современные функции ECMAScript во всех своих API и стандартной библиотеке, в то время как Node.js использует стандартную библиотеку на основе обратных вызовов и не планирует ее обновлять.
  • Deno предлагает уровень безопасности песочницы через разрешения. Программа может получить доступ только к разрешениям, установленным для исполняемого файла в виде флагов пользователем. Deno требует явных разрешений для доступа к файлам, сети и среде. Программа Node.js может получить доступ ко всему, к чему имеет доступ пользователь.
  • Deno всегда умирает из-за неперехваченных ошибок.
  • Все асинхронные действия в Deno возвращают обещание. Таким образом, Deno предоставляет API, отличные от Node.
  • Огромное преимущество Node.js в его сообществе. Он здесь довольно давно. Он имеет огромную библиотеку протестированных и задокументированных пакетов.

По сравнению с ним Дено все еще младенец. Зато интересный малыш :)

Небольшая демонстрация:

В Node.js, когда мы создаем веб-сервер, мы зависим от Express.js, и веб-сервер будет выглядеть примерно так:

const express = require(‘express’);
const app = express();

В Node.js «require» импортирует модуль из каталога node_modules.

Но Deno упрощает это:

import { serve } from "https://deno.land/std/http/server.ts";
const server = serve({ port: 3000 });+

Код Deno импортирует функцию serve из пакета server.ts из Интернета.

Deno автоматически загружает и кэширует этот пакет при первом запуске.

Вы хотите знать, как Deno работает за кулисами?



Вы можете прочитать об опыте разработчиков Deno:



И безопасность Deno: