[JavaScript, Node.JS, Программирование, Разработка веб-сайтов] Руководство по Deno: примеры работы со средой выполнения TypeScript (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Доброго времени суток, друзья!
Представляю Вашему вниманию перевод статьи «The Deno Handbook: A TypeScript Runtime Tutorial with Code Examples» автора Flavio Copes.
В этой статье мы научимся работать с Deno. Мы сравним его с Node.js и создадим с его помощью простой REST API.
Что такое Deno?
Если вы знакомы с Node.js, популярной экосистемой серверного JavaScript, Deno — это почти тоже самое. Почти, но не совсем.
Давайте начнем со списка возможностей Deno, которые мне больше всего нравятся:
- Он основан на современном JavaScript
- Он имеет расширяемую стандартную библиотеку
- Он имеет первоклассную (в значении стандартной) поддержку TypeScript (это означает, что вам не нужно вручную компилировать TypeScript, Deno делает это автоматически)
- Он поддерживает ES модули
- Он не имеет пакетного менеджера
- Он имеет первоклассный (в значении глобальный) await
- Он имеет встроенное средство тестирования
- Его цель — максимальная совместимость с браузером. Для этого он предоставляет встроенный fetch и глобальный объект window
В данном руководстве мы изучим все эти возможности.
После знакомства с Deno и его возможностями, Node.js покажется вам немного устаревшим.
Особенно по причине того, что Node.js основан на функциях обратного вызова (он был написан до появления промисов и async/await). Едва ли они когда-нибудь там появятся, поскольку это означает необходимость внесения фундаментальных изменений.
Node.js прекрасен и останется фактическим стандартом в мире JavaScript. Однако, я полагаю, что популярность Deno будет быстро расти благодаря его поддержке TypeScript и современной стандартной библиотеке.
Deno может позволить себе современный код, поскольку не нуждается в обеспечении обратной совместимости. Разумеется, гарантии, что этот код будет оставаться современным в ближайшее десятилетие нет, но на сегодня это именно так.
Почему Deno? Почему сейчас?
Deno был анонсирован почти 2 года назад создателем Node.js Ryan Dahl на JSConf EU. Смотрите видео на YouTube, оно очень интересное, и является обязательным к просмотру, если вы работаете с Node.js и JavaScript.
Каждый менеджер (создатель) проекта вынужден принимать решения. Райан жалеет о некоторых ранних решениях в Node. Кроме того, технологии развиваются, и сегодня JavaScript — это совершенно другой язык, чем он был в 2009, когда появился Node. Вспомните о возможностях ES6/2016/2017 и т.д.
Поэтому он решил начать новый проект, своего рода вторую волну приложений на серверном JavaScript.
Причина, по которой я пишу эту статью только сейчас, заключается в том, что требуется довольно много времени для созревания технологии. Наконец, мы получили Deno 1.0 (он был представлен 13 мая 2020 года), первый стабильный релиз.
Это может показаться обычным числом, однако 1.0 означает, что радикальных изменений не будет вплоть до Deno 2.0. При изучении новой технологии вы не хотите, чтобы она слишком быстро менялась.
Следует ли изучать Deno?
Хороший вопрос.
Изучение чего-то нового, такого как Deno, требует больших усилий. Мой совет: если вы только начинаете изучать серверный JS и пока не знаете Node.js, и никогда раньше не писали код на TypeScript, начните с Node.
За выбор Node еще никого не увольняли (перефразирование известной цитаты).
Но если вам нравится TypeScript, не зависящий от тонны npm-пакетов, и вы хотите везде использовать await, Deno может быть тем, что вы ищите.
Заменит ли он Node.js?
Нет. Node.js — это гигант, большой авторитет, невероятно хорошо поддерживаемая технология, которая в ближайшее десятилетие никуда не денется.
Первоклассная поддержка TypeScript
Deno написан на Rust и TypeScript, очень популярных на сегодня языках.
Это означает, что мы получаем много выгод от TypeScript, даже если пишем код на JavaScript.
Запуск TypeScript-кода с помощью Deno не требует предварительной компиляции — Deno делает это автоматически.
Вы не обязаны писать код на TypeScript, однако тот факт, что ядро Deno написано на TypeScript, имеет огромное значение.
Во-первых, большой процент JavaScript-разработчиков любит TypeScript.
Во-вторых, используемые вами инструменты могут получать много информации о ПО, написанном на TypeScript, таком как Deno.
Это означает, что когда мы пишем код в VS Code, например (который имеет тесную интеграцию с TypeScript с момента появления), мы получаем такие преимущества, как проверка типов при написании кода или продвинутые возможности IntelliSense. Другими словами, помощь редактора кода становится гораздо эффективнее.
Отличия от Node.js
Поскольку Deno — это, по сути, замена Node.js, имеет смысл их сравнить.
Общее:
- Оба основаны на движке V8
- Оба отлично подходят для разработки серверного JavaScript
Отличия:
- Node написан на C++ и JavaScript. Deno написан на Rust и TypeScript.
- Node имеет официальный пакетный менеджер npm. У Deno такого менеджера нет, вместо этого он позволяет импортировать любой модуль с помощью URL.
- Node использует синтаксис CommonJS для импорта пакетов. Deno использует официальный способ — ES модули.
- Deno использует современные возможности ECMAScript во всех прикладных интерфейсах и стандартной библиотеке, в то время как Node.js использует основанную на колбеках стандартную библиотеку и не планирует ее обновлять.
- Deno предлагает уровень (слой) безопасности песочницы через предоставление разрешений. Программа получает разрешение на выполнение определенных действий через пользовательские флаги. Node.js имеет доступ ко всему, к чему имеет доступ пользователь.
- Deno долгое время искал возможность компиляции программ в выполняемые, т.е. такие, которые можно запускать без внешних зависимостей, как в Go, однако достичь этого пока не удалось. Это изменит правила игры.
Отсутствие пакетного менеджера
Отсутствие пакетного менеджера и использование URL для получения и импорта пакетов имеет свои преимущества и недостатки. Одним из основных преимуществ является большая гибкость, проявляющаяся в возможности создания пакетов без необходимости их опубликования в таком репозитории, как npm.
Думаю, что некая альтернатива пакетному менеджеру в Deno рано или поздно появится.
Официальный сайт Deno имеет хостинг для сторонних пакетов: https://deno.land/x/
Установка Deno
Хватит болтать! Давайте установим Deno.
Простейшим способом это сделать является использование Homebrew:
brew install deno
Другие способы установки указаны здесь.
После установки становится доступна команда deno. Вот помощь, которую можно получить, набрав deno --help:
flavio@mbp~> deno --help
deno 0.42.0
A secure JavaScript and TypeScript runtime
Docs: https://deno.land/std/manual.md
Modules: https://deno.land/std/ https://deno.land/x/
Bugs: https://github.com/denoland/deno/issues
To start the REPL, supply no arguments:
deno
To execute a script:
deno run https://deno.land/std/examples/welcome.ts
deno https://deno.land/std/examples/welcome.ts
To evaluate code in the shell:
deno eval "console.log(30933 + 404)"
Run 'deno help run' for 'run'-specific flags.
USAGE:
deno [OPTIONS] [SUBCOMMAND]
OPTIONS:
-h, --help
Prints help information
-L, --log-level <log-level>
Set log level [possible values: debug, info]
-q, --quiet
Suppress diagnostic output
By default, subcommands print human-readable diagnostic messages to stderr.
If the flag is set, restrict these messages to errors.
-V, --version
Prints version information
SUBCOMMANDS:
bundle Bundle module and dependencies into single file
cache Cache the dependencies
completions Generate shell completions
doc Show documentation for a module
eval Eval script
fmt Format source files
help Prints this message or the help of the given subcommand(s)
info Show info about cache or info related to source file
install Install script as an executable
repl Read Eval Print Loop
run Run a program given a filename or url to the module
test Run tests
types Print runtime TypeScript declarations
upgrade Upgrade deno executable to newest version
ENVIRONMENT VARIABLES:
DENO_DIR Set deno's base directory (defaults to $HOME/.deno)
DENO_INSTALL_ROOT Set deno install's output directory
(defaults to $HOME/.deno/bin)
NO_COLOR Set to disable color
HTTP_PROXY Proxy address for HTTP requests
(module downloads, fetch)
HTTPS_PROXY Same but for HTTPS
Команды Deno
Заметили раздел SUBCOMMANDS? Это список всех команд, которые мы можем запускать. Какие команды у нас есть?
- bundle — собирает модуль и зависимости проекта в один файл
- cache — кэширует зависимости
- completions — генерирует пополнения оболочки
- doc — показывает документацию по модулю
- eval — используется для вычисления блока кода, например, deno eval "console.log(1 + 2)"
- fmt — встроенное средство форматирования кода (такое как goFmt в Go)
- help — выводит список вспомогательных команд
- info — показывает информацию о кэше или файле
- install — устанавливает скрипт как выполняемый
- repl — цикл «чтение-вычисление-вывод» (по умолчанию)
- run — запускает программу с заданным именем или URL для модуля
- test — запускает тесты
- types — выводит список возможностей TypeScript
- upgrade — обновляет Deno до последней версии
Вы можете запустить deno <subcommand> help для получения информации об определенной команде, например, deno run --help.
Мы можем использовать команду deno для запуска цикла «чтение-вычисление-вывод»:
Это аналогично запуску deno repl.
Обычно, deno используется для запуска Deno-приложения, содержащегося в TypeScript-файле.
Вы можете запускать как TypeScript-файлы (.ts), так и JavaScript-файлы (.js).
Если вы не знакомы с TypeScript, не переживайте: Deno написан на TypeScript, но вы вполне можете писать свои клиентские приложения на JavaScript.
Первое приложение на Deno
Давайте создадим наше первое приложение.
Для этого нам даже не придется писать код, мы запустим его в терминале посредством URL.
Deno скачивает программу, компилирует ее и запускает:
Разумеется, я бы не советовал запускать случайный код из Интернета. В данном случае, мы запускаем его с официального сайта Deno, плюс Deno имеет песочницу, запрещающую программам делать то, что мы им прямо не разрешили.
Эта программа является очень простой и представляет из себя вызов console.log():
console.log('Welcome to Deno
===========
Источник:
habr.com
===========
===========
Автор оригинала: Flavio Copes
===========Похожие новости:
- [Будущее здесь, Интервью, Искусственный интеллект, Машинное обучение, Программирование] Необычное собеседование: GPT-3 в роли кандидата (перевод)
- [Программирование микроконтроллеров, Производство и разработка электроники] История разработки одного дозиметра (Часть 2)
- [Анализ и проектирование систем, Программирование, Проектирование и рефакторинг, Управление разработкой] Методика проектирования архитектурных слоев на основе анемичной модели и DDD
- [JavaScript, Дизайн, Дизайн мобильных приложений, Платежные системы, Разработка под e-commerce] BinKing готов
- [CSS, HTML, JavaScript, Программирование, Разработка веб-сайтов] Как стать Front-End разработчиком
- [Биографии гиков, Карьера в IT-индустрии, Продвижение игр, Разработка игр] История про то, как из студенческого геймдев-клуба выросла компания по разработке игр
- [Производство и разработка электроники, Электроника для начинающих] Легко ли работать на производстве печатных плат?
- [Python, Будущее здесь, ООП, Параллельное программирование] Мир без корутин. Итераторы-генераторы
- [Dart, Flutter, Разработка под Android, Разработка под iOS] Детальный разбор навигации в Flutter
- [Python, Машинное обучение, Программирование] 10 вещей, которые вы могли не знать о scikit-learn (перевод)
Теги для поиска: #_javascript, #_node.js, #_programmirovanie (Программирование), #_razrabotka_vebsajtov (Разработка веб-сайтов), #_javascript, #_node.js, #_nodejs, #_node, #_deno, #_razrabotka (разработка), #_programmirovanie (программирование), #_javascript, #_node.js, #_programmirovanie (
Программирование
), #_razrabotka_vebsajtov (
Разработка веб-сайтов
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:39
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Доброго времени суток, друзья! Представляю Вашему вниманию перевод статьи «The Deno Handbook: A TypeScript Runtime Tutorial with Code Examples» автора Flavio Copes. В этой статье мы научимся работать с Deno. Мы сравним его с Node.js и создадим с его помощью простой REST API. Что такое Deno? Если вы знакомы с Node.js, популярной экосистемой серверного JavaScript, Deno — это почти тоже самое. Почти, но не совсем. Давайте начнем со списка возможностей Deno, которые мне больше всего нравятся:
В данном руководстве мы изучим все эти возможности. После знакомства с Deno и его возможностями, Node.js покажется вам немного устаревшим. Особенно по причине того, что Node.js основан на функциях обратного вызова (он был написан до появления промисов и async/await). Едва ли они когда-нибудь там появятся, поскольку это означает необходимость внесения фундаментальных изменений. Node.js прекрасен и останется фактическим стандартом в мире JavaScript. Однако, я полагаю, что популярность Deno будет быстро расти благодаря его поддержке TypeScript и современной стандартной библиотеке. Deno может позволить себе современный код, поскольку не нуждается в обеспечении обратной совместимости. Разумеется, гарантии, что этот код будет оставаться современным в ближайшее десятилетие нет, но на сегодня это именно так. Почему Deno? Почему сейчас? Deno был анонсирован почти 2 года назад создателем Node.js Ryan Dahl на JSConf EU. Смотрите видео на YouTube, оно очень интересное, и является обязательным к просмотру, если вы работаете с Node.js и JavaScript. Каждый менеджер (создатель) проекта вынужден принимать решения. Райан жалеет о некоторых ранних решениях в Node. Кроме того, технологии развиваются, и сегодня JavaScript — это совершенно другой язык, чем он был в 2009, когда появился Node. Вспомните о возможностях ES6/2016/2017 и т.д. Поэтому он решил начать новый проект, своего рода вторую волну приложений на серверном JavaScript. Причина, по которой я пишу эту статью только сейчас, заключается в том, что требуется довольно много времени для созревания технологии. Наконец, мы получили Deno 1.0 (он был представлен 13 мая 2020 года), первый стабильный релиз. Это может показаться обычным числом, однако 1.0 означает, что радикальных изменений не будет вплоть до Deno 2.0. При изучении новой технологии вы не хотите, чтобы она слишком быстро менялась. Следует ли изучать Deno? Хороший вопрос. Изучение чего-то нового, такого как Deno, требует больших усилий. Мой совет: если вы только начинаете изучать серверный JS и пока не знаете Node.js, и никогда раньше не писали код на TypeScript, начните с Node. За выбор Node еще никого не увольняли (перефразирование известной цитаты). Но если вам нравится TypeScript, не зависящий от тонны npm-пакетов, и вы хотите везде использовать await, Deno может быть тем, что вы ищите. Заменит ли он Node.js? Нет. Node.js — это гигант, большой авторитет, невероятно хорошо поддерживаемая технология, которая в ближайшее десятилетие никуда не денется. Первоклассная поддержка TypeScript Deno написан на Rust и TypeScript, очень популярных на сегодня языках. Это означает, что мы получаем много выгод от TypeScript, даже если пишем код на JavaScript. Запуск TypeScript-кода с помощью Deno не требует предварительной компиляции — Deno делает это автоматически. Вы не обязаны писать код на TypeScript, однако тот факт, что ядро Deno написано на TypeScript, имеет огромное значение. Во-первых, большой процент JavaScript-разработчиков любит TypeScript. Во-вторых, используемые вами инструменты могут получать много информации о ПО, написанном на TypeScript, таком как Deno. Это означает, что когда мы пишем код в VS Code, например (который имеет тесную интеграцию с TypeScript с момента появления), мы получаем такие преимущества, как проверка типов при написании кода или продвинутые возможности IntelliSense. Другими словами, помощь редактора кода становится гораздо эффективнее. Отличия от Node.js Поскольку Deno — это, по сути, замена Node.js, имеет смысл их сравнить. Общее:
Отличия:
Отсутствие пакетного менеджера Отсутствие пакетного менеджера и использование URL для получения и импорта пакетов имеет свои преимущества и недостатки. Одним из основных преимуществ является большая гибкость, проявляющаяся в возможности создания пакетов без необходимости их опубликования в таком репозитории, как npm. Думаю, что некая альтернатива пакетному менеджеру в Deno рано или поздно появится. Официальный сайт Deno имеет хостинг для сторонних пакетов: https://deno.land/x/ Установка Deno Хватит болтать! Давайте установим Deno. Простейшим способом это сделать является использование Homebrew: brew install deno
Другие способы установки указаны здесь. После установки становится доступна команда deno. Вот помощь, которую можно получить, набрав deno --help: flavio@mbp~> deno --help
deno 0.42.0 A secure JavaScript and TypeScript runtime Docs: https://deno.land/std/manual.md Modules: https://deno.land/std/ https://deno.land/x/ Bugs: https://github.com/denoland/deno/issues To start the REPL, supply no arguments: deno To execute a script: deno run https://deno.land/std/examples/welcome.ts deno https://deno.land/std/examples/welcome.ts To evaluate code in the shell: deno eval "console.log(30933 + 404)" Run 'deno help run' for 'run'-specific flags. USAGE: deno [OPTIONS] [SUBCOMMAND] OPTIONS: -h, --help Prints help information -L, --log-level <log-level> Set log level [possible values: debug, info] -q, --quiet Suppress diagnostic output By default, subcommands print human-readable diagnostic messages to stderr. If the flag is set, restrict these messages to errors. -V, --version Prints version information SUBCOMMANDS: bundle Bundle module and dependencies into single file cache Cache the dependencies completions Generate shell completions doc Show documentation for a module eval Eval script fmt Format source files help Prints this message or the help of the given subcommand(s) info Show info about cache or info related to source file install Install script as an executable repl Read Eval Print Loop run Run a program given a filename or url to the module test Run tests types Print runtime TypeScript declarations upgrade Upgrade deno executable to newest version ENVIRONMENT VARIABLES: DENO_DIR Set deno's base directory (defaults to $HOME/.deno) DENO_INSTALL_ROOT Set deno install's output directory (defaults to $HOME/.deno/bin) NO_COLOR Set to disable color HTTP_PROXY Proxy address for HTTP requests (module downloads, fetch) HTTPS_PROXY Same but for HTTPS Команды Deno Заметили раздел SUBCOMMANDS? Это список всех команд, которые мы можем запускать. Какие команды у нас есть?
Вы можете запустить deno <subcommand> help для получения информации об определенной команде, например, deno run --help. Мы можем использовать команду deno для запуска цикла «чтение-вычисление-вывод»: Это аналогично запуску deno repl. Обычно, deno используется для запуска Deno-приложения, содержащегося в TypeScript-файле. Вы можете запускать как TypeScript-файлы (.ts), так и JavaScript-файлы (.js). Если вы не знакомы с TypeScript, не переживайте: Deno написан на TypeScript, но вы вполне можете писать свои клиентские приложения на JavaScript. Первое приложение на Deno Давайте создадим наше первое приложение. Для этого нам даже не придется писать код, мы запустим его в терминале посредством URL. Deno скачивает программу, компилирует ее и запускает: Разумеется, я бы не советовал запускать случайный код из Интернета. В данном случае, мы запускаем его с официального сайта Deno, плюс Deno имеет песочницу, запрещающую программам делать то, что мы им прямо не разрешили. Эта программа является очень простой и представляет из себя вызов console.log(): console.log('Welcome to Deno
=========== Источник: habr.com =========== =========== Автор оригинала: Flavio Copes ===========Похожие новости:
Программирование ), #_razrabotka_vebsajtov ( Разработка веб-сайтов ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:39
Часовой пояс: UTC + 5