Когда создатель v0.3.8
и не планирует сдавать темпы развития.
#1 - Все программы имеют доступ к записи данных в файловую систему
Это значит, что есть большой риск возникновения угрозы безопасности, тем более, когда устанавливаются непроверенные npm-пакеты. Яркий пример – случай с cross-env. Не имей он разрешения на осуществление записей, подобное точно не произошло бы.
#2 - Асинхронные API, которые быстро устаревают
Promises возникли в 2009-ом, и исчезли уже в следующем году. Тем не менее, большая часть библиотек, предназначенных для написания асинхронного кода, все еще использует эту устаревшую технологию.
#3 - GYP – система автоматизации сборки
Сделать модуль, подключающий C-библиотеки через GYP – одно мучение. Для получения соответствующего developer experience нужно добавлять слой node-gyp и, вероятно, еще несколько других слоев. Даже работая с небольшим проектом, вам придется хорошо попотеть, чтобы разобраться в вышеописанном.
#4 - Система модулей
Основная проблема заключается в несовместимости системы модулей с браузерами, т.е. код не целиком изоморфен. Это происходит по двум причинам: наличие стандартного менеджера пакетов package.json и использование node_modules для хранения зависимостей.
Так как Typescript является расширенной вариацией Javascript, Deno прекрасно подходит и для этого языка программирования.
#1 - Безопасность
Стандартными настройками Deno запрещена столь деликатная деятельность, как запись в сеть или файловую систему, а также чтение переменных окружения. Для того чтобы получить доступ к таким операциям, нужно передать особые флаги.
По умолчанию разрешение записи данных в файловую систему и сеть отключено. Включить его можно только с помощью аргументов --allow-write
, --allow-net
.
Взаимосвязь между привилегированным процессом среды и движком v8 ограничена обменом сообщений (раньше был на Go, а теперь перенесен на Rust). Таким образом, для проверки всего объема сообщений создается единая точка.
#2 - Система модулей
Можно забыть о package.json вместе с «node_modules». Импортируя исходные файлы, вы сами выбираете, что указывать: относительный/абсолютный путь или даже URL-адрес. Исходные файлы по умолчанию кэшируются.
import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts"
import { log } from "./util.ts"
Чтобы обновить зависимости, нужно применить аргумент --reload
(это как нажать F5 в любом браузере).
#3 - Поддержка TS прямо из коробки
Deno поддерживает TypeScript по умолчанию, безо всяких нюансов и дополнительных конфигураций.
Среде Deno предстоит пройти длинный путь, прежде чем она станет полноценным востребованным инструментом. Но многие разработчики уверены, что этот проект развивается в правильном направлении и имеет все шансы вытеснить Node.js, став более совершенной средой выполнения для