Deno.js: следующий шаг для JavaScript
Создатель Node js обнаружил в Node много недостатков, которые можно увидеть в этом видео: https://www.youtube.com/watch?v=M3BM9TB-8yA.
Два года назад он начал проект, который был открытым исходным кодом и находился на стадии альфа-тестирования. Недавно, 13 мая 2020 года, был выпущен номер 1.0 (готовый к производству).
Javascript прошел долгий путь от беспорядочного языка браузера до надежного серверного языка, который используется для разработки приложений с полным стеком. Но в JS было много недостатков, которые попали в Node, которые были обновлены в ближайшие годы, но не были обновлены в Node. Создатель Node решил построить что-то вроде Node, но без всех этих недостатков. Итак, теперь у нас есть новая серверная технология.
Особенности Deno:
- Современные функции javascript, такие как обещания и т. Д.
- Полная поддержка машинописного текста, скомпилированная в исходном коде. Следовательно, вы можете воспользоваться такими функциями, как IntelliSense.
- Обширная стандартная библиотека.
- Имеет совместимость со стандартными модулями ES.
- Нет диспетчера пакетов, модули импортируются через URL.
- Первоклассная ждем поддержки.
- Встроенный функционал тестирования.
- Совместимость с браузером, тогда как Node был только для серверной части. (доступны классы, такие как окно)
Заменит ли он Node js?
Нет, сейчас Node - это хорошо зарекомендовавшая себя технология, которая широко используется во всем мире. Но люди начнут двигаться в сторону обозначения, поскольку это, по сути, Node, но лучше.
Сходства между Node и означать
- Оба разработаны на базе хромированного двигателя V8.
- Оба отлично подходят для серверного JavaScript.
Различия
- Node написан на c ++ и js, а обозначается на ржавчине и машинописном тексте.
- В Node есть менеджер пакетов под названием npm, в то время как в нем вы импортируете модули ES из URL-адресов.
- Node использует синтаксис CommonJS, в то время как обозначает официальный синтаксис модулей ES.
- Deno использует функции Ecmascript в API и библиотеках, в то время как Node использует обратные вызовы.
- Deno имеет отличные функции безопасности, а Node позволяет получить доступ ко всему.
- Deno пытается скомпилировать в двоичном формате. (но это не готовая функция)
Обещания
Node был реализован до того, как в JS появились обещания или async / await. Аналогом Promises для Node был EventEmitter, на котором основаны API в Node.
В то время как все обратные вызовы в Deno возникают из обещаний.
Песочница Deno
Deno создает среду песочницы, которая разрешает только системные вызовы, явно разрешенные его CLI.
Ничто не мешает Node получить доступ к вашим личным файлам на диске и отправить их на сервер, в то время как Deno пытается воспроизвести ту же модель разрешений, которую реализует браузер.
Если программе требуется доступ к сети, мы должны предоставить ей разрешение в явном виде:
обозначается запуск --allow-net app.ts
Поддержка машинописного текста First Class
Deno поддерживает TypeScript без дополнительных инструментов. Среда выполнения разработана с учетом TypeScript. Команда replace types предоставляет объявления типов для всего, что предоставляется Deno. Все стандартные модули Deno написаны на TypeScript.
Совместимость
Deno несовместим с существующими инструментами JS и пакетами Node. Но прилагаются усилия, чтобы сделать инструменты более совместимыми.
Формирование кода
Вы можете легко отформатировать код на основе стандартов для облегчения чтения с помощью
Deno fmt app.ts
Стоит ли изучать Дено?
Вы должны начать с JavaScript, а затем изучить Node и только потом начинать использовать node, поскольку компании, использующие Node, не будут легко заменять его на node, потому что это требует огромных ресурсов.
Node будет широко использоваться в отрасли. Таким образом, первым шагом всегда должно быть изучение Node, а затем обозначение для новых клиентов, пытающихся его реализовать.
Стандартная библиотека
- Архив: утилиты tar-архива.
- Async: асинхронные утилиты.
- Байты: помощники для управления срезами байтов.
- Журнал: логирование утилит.
- Mime: поддержка составных данных.
- Datetime: анализ даты / времени.
- Кодирование: кодирование / декодирование для различных форматов.
- Флаги: анализировать флаги командной строки.
- Fmt: форматирование и печать.
- Узел: уровень совместимости с Node.js.
- Путь: манипулирование путем.
- Ws: WebSockets.
- Fs: API файловой системы.
- Хеш: крипто-библиотека.
- Http: HTTP-сервер.
- Io: библиотека ввода-вывода.
Давайте запачкаем руки с помощью означает:
Монтаж
Используя Shell (macOS, Linux): $ curl -fsSL https://deno.land/x/install/install.sh | ш Используя PowerShell (Windows): $ iwr https://deno.land/x/install/install.ps1 -useb | iex Используя Homebrew (macOS): $ brew install означает Использование Chocolatey (Windows): $ choco install означает Используя Scoop (Windows): $ scoop install означает
Начиная
Попробуйте запустить простую программу:
$ означает запустить https://deno.land/std/examples/welcome.ts
Или более сложный:
javascript
import { serve } from const s = serve({ port: 8000 }); for await (const req of s) { req.respond({ body: "Hello World
" }); } |
Вы можете использовать эту команду, чтобы получить руководство для интерфейса командной строки.
$ означающее –help:
означает 0,42,0 Безопасная среда выполнения JavaScript и TypeScript Документы: https://deno.land/std/manual.md Модули: https://deno.land/std/ https://deno.land/x/ Ошибки: https://github.com/denoland/deno/issues Чтобы запустить REPL, не указывайте аргументов: обозначать Чтобы выполнить сценарий: обозначаем запуск https://deno.land/std/examples/welcome.ts обозначает https://deno.land/std/examples/welcome.ts Чтобы оценить код в оболочке: обозначает eval "console.log (30933 + 404)" Запустите 'обозначает запуск справки' для флагов, специфичных для 'выполнения'. ПРИМЕНЕНИЕ: обозначает [ОПЦИИ] [ПОДКОМАНДА] ПАРАМЕТРЫ: -h, --help Печатает справочную информацию -L, --log-level <уровень-журнала> Установить уровень журнала [возможные значения: отладка, информация] -q, --quiet Подавить диагностический вывод По умолчанию подкоманды печатаются в удобном для чтения виде диагностические сообщения в stderr. Если флаг установлен, ограничьте эти сообщения ошибками. -V, --version Печатает информацию о версии ПОДКОМАНДЫ: объединить модуль Bundle и зависимости в один файл cache Кэшировать зависимости Завершение Генерация завершений оболочки doc Показать документацию для модуля eval Eval скрипт fmt Format исходные файлы help Распечатывает это сообщение или справку данной подкоманды (ей) info Показать информацию о кеше или информации связанный с исходным файлом установить скрипт установки как исполняемый файл repl Читать цикл печати Eval запустить Запустить программу с именем файла или URL-адрес модуля test Выполнить тесты типы Распечатать объявления TypeScript среды выполнения обновление Обновление означает исполняемый файл до последней версии ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ: DENO_DIR Установить базовый каталог обозначает (по умолчанию $ HOME / .deno) DENO_INSTALL_ROOT Установить означает выходной каталог установки (по умолчанию $ HOME / .deno / bin) NO_COLOR Установите для отключения цвета HTTP_PROXY Прокси-адрес для HTTP-запросов (загрузка модуля, получение) HTTPS_PROXY То же, но для HTTPS