Это была поздняя ночь, и я подумывал опубликовать новые технические новости, которые можно было бы добавить в инициативу ROI +, начатую в Accubits. Именно тогда я узнал о Дено.

Если вы хотите знать, действительно ли стоит заглядывать в Deno, сравните Github с 44,7 тыс. Звезд (даже на этой ранней стадии на момент написания этого блога) с Node.JS, который получил 67,8 тыс. Звезд после всех этих лет использования в реальных приложениях. разработка.

Звезды Github обычно показывают, насколько сообщество проявляет интерес к проекту и готово внести в него свой вклад.

Я обратился к этому блогу, чтобы понять, что Deno предлагает тем, кто видит проблемы в безопасности NodeJs fs и централизованное хранилище npm.

Райан Даль, создавший Node.Js, выразил беспокойство по поводу того, что не уделяет больше внимания тому, как были реализованы модули, системы безопасности и зависимостей. И он считает, что Deno решит эти проблемы.

Обзор

Хотя Node.Js был написан на C ++, Deno написан на языке Rust, работает на движке Google V8 и поддерживает Typescript из коробки вместе с Javascript. Так что никаких проблем с настройкой lint и инструментов сборки в вашем проекте.

Децентрализованные модули

Для меня большая проблема с развертыванием приложения Node.JS на машине заключается в том, что для базового проекта требуется загрузка не менее 100 МБ данных, и либо на сервере заканчивается хранилище, либо когда я создаю образы докеров, у меня заканчивается пропускная способность или сами данные.

Давайте посмотрим на распространенные проблемы, которые выражаются в мемах в Интернете на npm.

С Deno вы можете использовать пакеты или модули из Интернета или локальной файловой системы, просто указав URL-адрес загрузки в своем операторе импорта. Но если вы думаете, что для вас нереально проделывать это заново в каждом модуле вашего проекта, не останавливайтесь на достигнутом - importmap, который в основном символизирует URL-адреса с именем пакета, с которым мы знакомы (npm).

Как и более новые версии npm, Deno также выполняет кеширование, поэтому, если ваше интернет-соединение прерывается, вы все равно получаете модули, импортированные в ваш проект. Расположение кеша также можно настроить с помощью изменения переменной среды $ DENO_DIR.

importsmap.json

{
   "imports": {
      "http/": "https://deno.land/std/http/"
   }
}

denocode.ts

## Importsmap
import { serve } from "http/server.ts";
## URL referencing
export { test, assertEquals } from "https://deno.land/std/testing/mod.ts";
## Local or downloaded module
import { test, assertEquals } from './local-test-utils.ts';

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

Как безопасность?

Да, безопасность. Работая в Accubits, я вижу, как мой друг-хакер в белой шляпе может получить доступ ко всем файлам сервера, вставляя значения в HTTP-запросы.

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

Хотя в Node есть пакет fs для доступа к файловой системе без каких-либо дополнительных разрешений. Вы также можете предоставить доступ к файловым системам по умолчанию, передав некоторые параметры во время выполнения кода.

## Allow file system write access
--allow-write
## Allow network access
--allow-net
## Allowing access to environmental variables
--allow-env
## Starting additional processes 
--allow-run

Так что я должен изучить и начать заменять код Node.Js на Deno. Ответ отрицательный с моей стороны, как и с моей стороны, поскольку Deno все еще находится на ранней стадии, и пока не будет выпущена стабильная версия для использования (ожидается этим летом 2020 года), давайте узнаем об этом и создадим лучшую структуру папок для проектов Deno, поскольку Я работал во многих проектах Node.Js за последние несколько лет, и, в отличие от Java или Angular, проекты Node.Js никогда не имели стандартной структуры.

Это мой первый технический блог, поэтому я надеюсь получить комментарии, которые могут сформировать будущие блоги.