В этом сообщении мы узнаем о DENOJS и создадим простое приложение CLI, которое дает текущую информацию о погоде.
Контур
1. What is Deno ? 2. Features of Deno. 3. Installing Deno in local environment. 4. Building Weather App CLI . 5. Conclusion.
Что такое Дено?
DeNo – это безопасное время выполнения для TypeScript и JavaScript, написанного на Rust. Программы DEDO могут быть написаны либо с помощью JavaScript, либо TypeScript и выполнены из командной строки.
Концепция Дено была впервые открыта миру во время JSConf EU 2018, где Райан Даль выступил с речью о «10 вещах, о которых я сожалею о Nodejs». Вы можете найти запись разговора Здесь Анкет
Он безопасен и совместим с браузером, насколько это возможно.
Функции
- Безопасно по умолчанию. Нет доступа к файлам, сети или среде (если только явно не включен).
- Поддерживает TypeScript Out из коробки.
- Совместимость с Интернетом как можно более и поддерживает веб -API, такие как Fetch.
- Предоставьте встроенные инструменты, такие как Test Runner, Formatter и Linter, чтобы улучшить опыт разработчиков.
Теперь о забавной части, давайте построим наш DeDo Weather CLI
Установка в Дено в местной среде
Дено работает на MacOS, Linux и Windows. Дено – единственный бинарный исполняемый файл. У него нет внешних зависимостей.
На macOS предоставляются как M1 (ARM64), так и Intel (x64). На Linux и Windows поддерживается только X64.
Запустите свой терминал и запустите эту команду.
# For Mac OS using curl curl -fsSL https://deno.land/x/install/install.sh | sh
# For Windows using power shell iwr https://deno.land/x/install/install.ps1 -useb | iex
После успешного установки вы должны увидеть что -то подобное
Запустите следующую команду, чтобы проверить установку DENO.
deno --version
Установка документов для Дено из другого источника – Ссылка на документы
Создание приложения для погоды
Мы будем кодировать наш CLI в JS.
Вы также можете установить официальный и кодовый плагин для DEDO, если вы не используете VSCODE, DENO’s Документы Имеет способы настройки среды DEV до кодирования.
Давайте создадим папку для нашего нового проекта и добавим файл index.js:
mkdir weather-app-cli-deno cd weather-app-cli-deno code-insiders index.js
Мы собираемся получить данные о погоде от OpenWeather Map API
После создания своей учетной записи вы сможете создать свой ключ API в этом Ссылка Анкет
Хорошо, теперь держите это в безопасности. Нам понадобится это, чтобы запросить данные.
Откройте свой index.js
Подайте и вставьте следующий код.
console.log(Deno.args) // [ "London" ] let city = Deno.args[0]; // Deno.args gives us a way to access the CLI variables if(!city){ console.error("No city supplied"); Deno.exit(); } const apiKey = '*****************'; // replace with your API key const res = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${apiKey}`); const data = await res.json(); console.log(data);
В настоящее время Если вы запустите это выше кода с следующей командой
deno run index.js London
Вы получите следующий вывод
error: Uncaught PermissionDenied: Requires net access to "api.openweathermap.org", run again with the --allow-net flag const res = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${apiKey}`); ^ at deno:core/01_core.js:106:46 at unwrapOpResult (deno:core/01_core.js:126:13) at Object.opSync (deno:core/01_core.js:140:12) at opFetch (deno:ext/fetch/26_fetch.js:57:17) at mainFetch (deno:ext/fetch/26_fetch.js:199:61) at deno:ext/fetch/26_fetch.js:439:11 at new Promise () at fetch (deno:ext/fetch/26_fetch.js:399:15) at file:///Users/karthikeyan/karthikeyan/weather-app-cli-deno/index.js:11:19
Причина в том, что DENO является безопасной средой выполнения, которая будет иметь сеть доступа, если мы не даем доступ. Как упомянуто в сообщении об ошибке, давайте дадим доступ к сети и посмотрим, что произойдет.
Направьте команду так и запустите ее в своем терминале
deno run --allow-net index.js Bangalore
Мы успешно получим текущую информацию о погоде о Бангалоре.
{ coord: { lon: 77.6033, lat: 12.9762 }, weather: [ { id: 200, main: "Thunderstorm", description: "thunderstorm with light rain", icon: "11n" }, { id: 502, main: "Rain", description: "heavy intensity rain", icon: "10n" } ], base: "stations", main: { temp: 20.8, feels_like: 21.55, temp_min: 20.8, temp_max: 21.9, pressure: 1014, humidity: 100 }, visibility: 4000, wind: { speed: 0, deg: 0 }, rain: { "1h": 8.65 }, clouds: { all: 75 }, dt: 1632161523, sys: { type: 1, id: 9205, country: "IN", sunrise: 1632098322, sunset: 1632142053 }, timezone: 19800, id: 1277333, name: "Bengaluru", cod: 200 }
Давайте выберем то, что нам нужно из ответа, отформатируйте его и отобразим его в терминале.
Замените следующий форматированный код старым кодом.
console.log(Deno.args,'\n') const city = Deno.args[0]; if(!city){ console.error("No city supplied"); Deno.exit(); } const apiKey = '******************************'; const res = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${apiKey}`); const data = await res.json(); const date = new Date(data.dt * 1000).toLocaleDateString() console.log("========== Weather Report ============\n") console.log(`Date - ${date} | Location: ${data.name}`) console.log("\n") console.log(`Weather- ${data.weather[0].description} | Temparature: ${data.main.temp} \n`)
и запустите следующую команду, чтобы снова увидеть вывод.
deno run --allow-net index.js Bangalore
Вы должны увидеть следующий вывод на терминале
======== Weather Report ============ Date - 20/09/2021 | Location: Bengaluru Weather- thunderstorm with light rain | Temparature: 20.8
Поздравляю 👏 👏 👏. Вы построили свой первый CLI с помощью DEDO.
Вывод
Спасибо за чтение до конца. Дайте мне знать свои мысли в комментариях. Отзывы всегда приветствуются.
Ресурсы:
Оставайся в безопасности и счастливого кодирования:)
Оригинал: “https://dev.to/imkarthikeyan/getting-started-with-deno-9ld”