it Новости Deno заменит Node.js?
Deno заменит Node.js?

Deno заменит Node.js?

905
10 февраля 2020 в 15:20

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

Когда создатель Node.js Райан Дал выступал на конференции, рассказывая о своих 10-ти сожалениях, связанных с Node.js, первую половину доклада он посвятил неудачным решениям, а вторую – одной только экспериментальной модели Deno. Среде не зря пророчат большое будущее: она уже доросла до версии v0.3.8 и не планирует сдавать темпы развития.

Чем плоха Node.js?

#1 - Все программы имеют доступ к записи данных в файловую систему

Это значит, что есть большой риск возникновения угрозы безопасности, тем более, когда устанавливаются непроверенные npm-пакеты. Яркий пример – случай с cross-env. Не имей он разрешения на осуществление записей, подобное точно не произошло бы.


#2 - Асинхронные API, которые быстро устаревают

Promises возникли в 2009-ом, и исчезли уже в следующем году. Тем не менее, большая часть библиотек, предназначенных для написания асинхронного кода, все еще использует эту устаревшую технологию.



#3 - GYP – система автоматизации сборки

Сделать модуль, подключающий C-библиотеки через GYP – одно мучение. Для получения соответствующего developer experience нужно добавлять слой node-gyp и, вероятно, еще несколько других слоев. Даже работая с небольшим проектом, вам придется хорошо попотеть, чтобы разобраться в вышеописанном.


#4 - Система модулей

Основная проблема заключается в несовместимости системы модулей с браузерами, т.е. код не целиком изоморфен. Это происходит по двум причинам: наличие стандартного менеджера пакетов package.json и использование node_modules для хранения зависимостей.

Deno – что это?

Deno – новый проект от создателя Node.js Райана Дала. Он представляет собой защищенную среду выполнения для TypeScript, основанную на движке V8.



Так как Typescript является расширенной вариацией Javascript, Deno прекрасно подходит и для этого языка программирования. 

Ключевые особенности 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, став более совершенной средой выполнения для Javascript.

Больше интересных новостей

Комментарии для сайта Cackle