Deno - это новая среда выполнения на стороне сервера для запуска приложений JavaScript и TypeScript.
В этой статье мы рассмотрим, как начать разработку приложений для Deno.
Интерфейс командной строки
Мы можем получить помощь, запустив:
deno help
or:
deno -h
для краткости.
Мы также можем написать:
deno --help
сделать то же самое.
Аргументы скрипта
Мы можем получить аргументы командной строки в нашем скрипте с помощью свойства Deno.args
.
Например, мы можем написать:
index.ts
console.log(Deno.args);
Затем, когда мы бежим:
deno run index.ts a b -c --quiet
Мы получаем:
[ "a", "b", "-c", "--quiet" ]
из вывода консоли.
Разрешения
Разрешение требуется для запуска кода, требующего доступа к различным ресурсам.
По умолчанию они должны быть включены специально.
Доступны следующие разрешения:
- _3 _, _ 4_ - Разрешить все разрешения. Это отключает всю безопасность.
— allow-env
- Разрешить доступ к среде для таких вещей, как получение и установка переменных среды.— allow-hrtime
— Разрешить измерение времени с высоким разрешением. Время с высоким разрешением можно использовать для тайминговых атак и снятия отпечатков пальцев.— allow-net=<url>
- Разрешить доступ к сети. Мы можем указать необязательный список доменов, разделенных запятыми, чтобы предоставить список разрешенных доменов.— allow-plugin
— Разрешить загрузку плагинов. Обратите внимание: - allow-plugin - это нестабильная функция.— allow-read=<allow-read>
— Разрешить файловой системе доступ на чтение. Мы можем указать необязательный, разделенный запятыми список каталогов или файлов, чтобы предоставить список разрешенных доступа к файловой системе.— allow-run
— Разрешить выполнение подпроцессов. Имейте в виду, что подпроцессы не запускаются в изолированной программной среде и, следовательно, не имеют тех же ограничений безопасности, что и процесс Deno. Поэтому используйте с осторожностью.— allow-write=<allow-write>
— Разрешить файловой системе доступ на запись. Вы можете указать необязательный список каталогов или файлов, разделенных запятыми, чтобы предоставить список разрешенных разрешений доступа к файловой системе.
Например, если у нас есть программа, которая выполняет HTTP-запросы вроде:
const [url] = Deno.args; const res = await fetch(url); const body = new Uint8Array(await res.arrayBuffer()); await Deno.stdout.write(body);
Мы запускаем его с помощью:
deno run --allow-net index.ts https://yesno.wtf/api
разрешить программе доступ в Интернет.
API разрешений
Мы можем запросить разрешения формы, используя метод Deno.permissions.query
с объектом, у которого есть разрешения, которые мы хотим запросить.
Например, мы можем написать:
index.ts
const desc1 = { name: "read", path: "/foo" } as const; console.log(await Deno.permissions.query(desc1)); const desc2 = { name: "read", path: "/foo/bar" } as const; console.log(await Deno.permissions.query(desc2)); const desc3 = { name: "read", path: "/bar" } as const; console.log(await Deno.permissions.query(desc3));
Затем, когда мы бежим:
deno run --unstable index.ts
Мы видим:
PermissionStatus { state: "prompt" } PermissionStatus { state: "prompt" } PermissionStatus { state: "prompt" }
зашел в консоль.
Нам нужна опция --unstable
, чтобы сделать Deno.permissions.query
метод доступным.
Мы можем отозвать разрешения, используя метод Deno.permissions.revoke
:
const desc = { name: "read", path: "/foo/bar" } as const; console.log(await Deno.permissions.revoke(desc)); const strongDesc = { name: "read", path: "/foo" } as const; await Deno.permissions.revoke(strongDesc);
Тогда получаем:
PermissionStatus { state: "prompt" }
отображается.
Заключение
Мы можем получить и установить разрешения с помощью Deno.
И мы можем легко получить аргументы командной строки в наших сценариях.
Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал YouTube!