Изучение Дено

задняя часть внешний интерфейс TypeScript deno

Изучение Дено

Оригинал: Цуй ТяньцзеПередняя часть темной лошадки

Deno — это новая среда выполнения безопасности TypeScript, созданная на основе движка Google V8 и недавно выпущенная до версии 0.1.8.

Эта среда выполнения предназначена для решения ряда проблем, которые приносит NodeJS:

Нет больше package.json, нет более часто меняющихся зависимостей;

Вместо этого сохраняйте файлы в свой проект или скачивайте их через http-ресурсы, после чего их можно постоянно кэшировать;

В то же время GYP (Generate Your Projects, система сборки Google с открытым исходным кодом, первоначально использовавшаяся для проекта Chromium, загрузила некоторые другие проекты с открытым исходным кодом и начала использовать GYP, такие как V8, Node.js, WebRTC и т. д.) , заменил его GN (GN — это система мета-сборки, которая генерирует файлы сборки Ninja, чтобы Chromium можно было собрать с помощью Ninja, файлы GN более удобочитаемы и ремонтопригодны, чем файлы GYP, GN в 20 раз быстрее, чем GYP);

Вместо прямого вызова системных методов передача сообщений через плоские буферы (FlatBuffers — это кроссплатформенная, эффективная библиотека инструментов сериализации с открытым исходным кодом, которая предоставляет интерфейсы C++/Java);

Он также поставляется с готовой поддержкой синтаксиса TypeScript, что устраняет необходимость в таких инструментах, как Babel, для компиляции TypeScript в JavaScript.


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


Установить

Бинарные файлы доступны в репозитории Deno на GitHub, вы можете прочитать файл Readme репозитория и попробовать скомпилировать его самостоятельно. Процесс компиляции очень ресурсоемкий, поэтому убедитесь, что на вашем компьютере установлено не менее 4 ГБ ОЗУ и жесткий диск SSD, иначе вы потратите много времени на ожидание завершения компиляции.


Давайте загрузим и установим deno через Python, ведь Python установлен по умолчанию на Mac.

curl -sSf https://raw.githubusercontent.com/denoland/deno_install/master/install.py | python

Затем поместите Deno в переменную окружения

echo export PATH="/Users/cuitianze/.deno/bin":\$PATH >> $HOME/.bash_profile

Хорошо, готово!


запустить скрипт

В Deno вы можете запускать как файлы JavaScript, так и файлы TypeScript. Запустите свой код с помощью команды Deno с именем файла в качестве аргумента. Вы можете увидеть многочисленные примеры скриптов Deno в папке с тестами репозитория.


консольный вывод

Как и в любом другом языке или фреймворке, первое, что вы можете сделать, это вывести сообщение на консоль. Вы можете просто написать следующий код, чтобы напечатать «Hello World!».

console.log("Hello World!")


доступ к файловой системе

Deno предоставляет основные возможности доступа к синхронизации файловой системы, такие как функции readFileSync и writeFileSync.

readFileSync принимает путь к файлу в качестве параметра (который может быть относительным путем относительно текущего рабочего каталога или абсолютным путем) и возвращает содержимое файла после вызова.

Сначала создайте файл, содержащий строку «Dark Horse Front End»,

эхо Передняя часть Dark Horse >> hi.txt

Затем прочитайте этот файл со следующим кодом, чтобы создать hi.ts:

import { readFileSync } from "deno";

const data = readFileSync("hi.txt");

console.log(data);

Посмотрим, что распечатает?

Выводим данные в виде массива 8-битных целых чисел без знака через readFileSync. Если мы хотим преобразовать его в строковую форму, нам нужно использовать «TextDecoder», следующий код сгенерирует правильный вывод:

import { readFileSync } from "deno";
const decoder = new TextDecoder("utf-8");
const data = readFileSync("hello.txt");
console.log(decoder.decode(data));

Идеально! «Передняя часть Dark Horse» была успешно напечатана.


запись в файл

Теперь, когда мы прочитали и декодировали текстовый файл, следующее, что мы собираемся продемонстрировать, — это запись в файл. Делаем это через функцию writeFileSync. Эта функция должна передавать два параметра: один — путь к файлу, а другой — записываемое содержимое. Создаем hello.ts и пишем следующий код:

import { writeFileSync } from "deno";
const encoder = new TextEncoder("utf-8");
const data = encoder.encode("你好,黑马大前端");
writeFileSync("hello.txt", data);

Тем не менее, запись файла не так безболезненна, как чтение файла.

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

deno --allow-write hello.ts

Прохладный! Файл был успешно записан.

Но как мы можем быть удовлетворены таким «универсальным» подходом к управлению правами доступа к файлам.

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


информация о файле прочитана

Функция statSync возвращает информацию о файле.

import { statSync } from "deno";
const fileInfo = deno.statSync("hi.txt");
console.log(fileInfo.isFile());
console.log(fileInfo.isSymlink());
console.log(fileInfo.isDirectory());
console.log(fileInfo.len); // File Size
console.log(fileInfo.modified); // Last modification date
console.log(fileInfo.accessed); // Last access date
console.log(fileInfo.created); // Creation date

Информация о полученном файле выглядит следующим образом:


таймер

Таймер поддерживает setTimeout, clearTimeout, setInterval и clearInterval,

Как и в случае использования JavaScript, здесь не приводится подробный обзор.

setTimeout(function() {
    console.log("---黑马来了---");}, 
3000);

Вы можете почувствовать это, запустив его самостоятельно, и результаты запуска следующие:


Существует также функция, о которой следует упомянуть, deno может напрямую запускать сетевые файлы.


Нравится 👍 С нетерпением жду развития Deno все лучше и лучше.


Автор этой статьи: Цуй Тяньцзе, передняя часть темной лошадки

WeChat сканирование
Обратите внимание на паблик аккаунта "Dark Horse Front End"