ДЕНО
Дено против узла
Как 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: