Deno: Среда выполнения для JavaScript и TypeScript

Deno — это радикально простая среда выполнения для JavaScript и TypeScript. Она предлагает своим пользователям новый, простой способ написания JavaScript и TypeScript на стороне сервера. Платформа все еще находится в начале своего развития, но уже на ранней стадии доказывает, что в перспективе она может заменить проверенную временем среду выполнения Node.js. Однако сообщество разработчиков JavaScript должно быть частью этого процесса.

Некоторые продукты нравятся сообществу, даже если они не совершенны. Язык сценариев JavaScript является хорошим примером этого. Несмотря на явные недостатки, он является одним из наиболее широко используемых языков во всем мире с бесчисленным количеством доступных фреймворков и библиотек. Node.js, предшественник Deno, также очень популярен в сообществе. В проекте Deno разработчик Райан Дал хотел воспользоваться преимуществами Node.js, обеспечив при этом более безопасную и улучшенную платформу. Читайте дальше, чтобы узнать больше о том, как работает Deno и является ли он улучшением Node.js или нет.

Что такое Deno?

Deno все еще находится на ранней стадии. Интерфейсы, архитектура и дизайнерские решения еще не застыли в камне и, конечно, будут меняться в процессе разработки. Поэтому прямое сравнение с вышеупомянутым Node.js затруднительно. Разработчик обеих платформ ранее создал приблизительное сравнение в следующем видеоролике на YouTube:

В целях защиты вашей конфиденциальности видео не будет загружаться, пока вы не нажмете на него.

Deno и Node похожи не только по названию, у них также один и тот же базовый принцип. Они предлагают платформу для выполнения JavaScript вне браузеров, а также возможность написания JavaScript или TypeScript на стороне сервера. Для этого они используют различные существующие проекты, что означает, что они не являются полной самореализацией. Например, движок Google V8, который уже интегрирован в браузеры Chrome и Edge, используется в качестве стандарта для выполнения JavaScript в различных средах. Поэтому на стороне сервера Deno использует V8 подобно Node.js.

Сходство есть, но, в отличие от Node, который написан на C++, Deno использует инновационный и гораздо более безопасный язык программирования Rust от Mozilla Research. Таким образом, Deno позволяет напрямую писать статически типизированный код, что практически само по себе является преимуществом.

Возможности Deno: из коробки

У Deno есть две функции, которые приводят к значительному упрощению рабочего процесса: Во-первых, среда выполнения опирается на простую систему модулей, в которой URL и модули напрямую соотносятся друг с другом. Кроме того, Deno позволяет свободно выполнять коды TypeScript.

Большая свобода для разработчиков обычно означает повышенный риск безопасности. Deno полностью проработан с точки зрения безопасности. Сценарии обычно выполняются в «песочнице», которая отделена от операционной системы. Разработчики имеют ограниченные возможности по добавлению дополнительных функций.

Для сравнения, Deno гораздо ближе к пользовательскому опыту в Интернете. По умолчанию доступ к системе заблокирован, и пользователь должен сначала разрешить приложению доступ к системе, иначе они полностью изолированы друг от друга. Это можно сравнить с поведением браузера, когда, например, веб-видеоконференция запрашивает доступ к веб-камере и микрофону компьютера. Доступ к этим ресурсам возможен только с согласия пользователя. Проще говоря, Deno ведет себя как браузер для сценариев командной строки.

Deno также подхватывает важнейшую тенденцию в разработке JavaScript: нативную поддержку TypeScript.

Примечание

TypeScript отличается от языка программирования JavaScript в отношении типизации. JavaScript оставляет (слишком) много свободы в типизации переменных и функций. Не предполагается никаких уточнений относительно того, какой тип должна иметь переменная или выводить функция. Это усложняет чтение и понимание кода. В TypeScript стандартным является присвоение типа каждой переменной. Функция и выход, таким образом, уже заранее типизированы. Неправильное присвоение также сразу же помечается.

Для преобразования и выполнения кода TypeScript, сгенерированного с помощью Deno, в JavaScript не требуется дополнительных действий с использованием компилятора. Когда происходит обмен данными, это происходит в пакетах. В результате Deno не нужен внешний пакет, такой как ts-node, который заботится о процессе компиляции, например, в Node.js.

Когда дело доходит до управления пакетами, Deno предлагает несколько сюрпризов: Одним из факторов успеха Node является менеджер пакетов npm. Хотя npm является частью сообщества GitHub и не является неотъемлемой частью Node, эта комбинация считается неофициальным стандартом. Deno, с другой стороны, не нуждается во внешнем менеджере пакетов и может считаться собственным менеджером пакетов. Модульная система может разрешать пакеты по путям файловой системы или URL-адресам и напрямую загружать необходимые ресурсы.

Как работает Deno?

Deno только начинает свою работу. Основное внимание уделяется безопасности и базовой архитектуре. Все начинается с установки, которая не выполняется удобным образом через пакет установщика, а только через GitHub, сценарии оболочки или менеджер пакетов операционной системы. Чтобы проверить, успешно ли прошла установка, в командной строке нужно ввести очень олдскульную команду deno — version. Это также даст вам обзор установленной версии Deno, а также версий V8 и TypeScript. Если вы не хотите устанавливать Deno на систему, вы также можете установить и запустить его в контейнере Docker.

После установки Deno существует два типа исполнения. Среда выполнения может использоваться либо интерактивно, как оболочка, либо с файлом в качестве входных данных. Первый вариант полезен для небольших приложений и для экспериментов с альтернативой Node.js. Второй вариант является наиболее распространенным использованием Deno. Имя файла передается на платформу, после чего пользователь может начать работу с Deno.

Известные ключевые слова JavaScript, такие как импорт, экспорт, обещание и т.д., напрямую доступны в Deno, и их не нужно сначала импортировать. В дополнение к стандартам платформа предлагает глобальный объект, поэтому она называется просто Deno. Объект Deno формирует основу для каждого приложения. Он выступает в качестве интерфейса к системе, чтобы разработчики могли получить доступ к файловой системе и, например, выйти из песочницы. Как упоминалось ранее, эти исключения должны активно подтверждаться, чтобы исключить незамеченные атаки приложения на систему.

Deno предлагает все стандартные модули. Сообщество предоставило дополнительные, экспериментальные и полезные дополнительные модули, которые расширяют спектр его функций.

Deno: преимущества и недостатки с первого взгляда

Является или будет ли Deno лучше, чем Node? Разработчик Райан Дал не сомневается, что будет. Проблемы прошлого, ошибки и компромиссы должны быть сглажены, чтобы создать современную, стабильную и безопасную платформу для серверного JavaScript и TypeScript. Потенциал в любом случае есть, особенно благодаря шагу по опоре на язык программирования Rust от Mozilla и созданию центральной системы авторизации. Это не только интуитивно понятно, но и предотвращает непреднамеренный выход приложения из «песочницы».

Значительно упрощенный рабочий процесс все же имеет свои недостатки: Deno не всегда совместим с существующими экосистемами. Модуль Node не может просто работать на Deno или наоборот. Однако если платформа продолжит оправдывать себя, то в долгосрочной перспективе серьезных проблем с совместимостью уже не будет. Например, в Deno уже есть совместимая с Node функция require.

Резюме

Deno все еще находится на стадии проекта, то есть активно развивается. Однако первые решения некоторых из самых больших недостатков Node.js являются многообещающими.

  • Веб-разработка

    Оцените статью
    cdelat.ru
    Добавить комментарий