Авторот на Node.js ја претстави сигурната JavaScript платформа Deno 1.0

По две години развој презентирани првото големо издание Дено 1.0, платформа за самостојно извршување на апликации во JavaScript и TypeScript, која може да се користи за создавање ракувачи кои работат на серверот. Платформата е развиена од Рајан Дал (Рајан Дал), креатор на Node.js. Како Node.js, Deno користи JavaScript мотор V8, кој исто така се користи во прелистувачите базирани на Chromium. Во исто време, Deno не е вилушка на Node.js, туку е нов проект создаден од нула. Код на проектот дистрибуирани од под лиценца МИТ. Собири подготвени за Linux, Windows и macOS.

Значајниот број на верзии е поврзан со стабилизацијата на API-ите во именскиот простор на Deno, кои се одговорни за интеракцијата на апликациите со ОС. Софтверски интерфејси кои досега не се стабилизира, стандардно се скриени и достапни само кога работи во режим „--нестабилен“. Како што се формираат нови верзии, таквите API постепено ќе станат стабилни. API во глобалниот именски простор, кој вклучува заеднички функции како setTimeout() и fetch(), е што е можно поблизок до API на конвенционалните веб-прелистувачи и е развиен во согласност со веб-стандардите за прелистувачи. API-ите обезбедени од Rust, кои се користат директно во кодот на платформата, како и интерфејсот за развој на додатоци за Deno runtime, сè уште не се стабилизирани и продолжуваат да се развиваат.

Клучните мотиви за создавање на нова JavaScript платформа беа желбата да се елиминираат концептуалните грешки, призна во архитектурата Node.js и да им обезбеди на корисниците побезбедна средина. За да се подобри безбедноста, моторот V8 е напишан во Rust, со што се избегнуваат многу пропусти кои произлегуваат од манипулација со меморијата на ниско ниво, како што се по-слободен пристап, дереференци на нула покажувач и пречекорувања на баферот. Платформата се користи за обработка на барања во режим на неблокирање Токио, напишано и во Rust. Tokio ви овозможува да креирате апликации со високи перформанси засновани на архитектура управувана од настани, поддржувајќи повеќенишки и обработувајќи мрежни барања во асинхрон режим.

Главните Карактеристики Дено:

  • Стандардна конфигурација ориентирана кон безбедноста. Пристапот до датотеките, вмрежувањето и пристапот до променливите на околината се стандардно оневозможени и мора да бидат експлицитно овозможени. Апликациите стандардно работат во изолирани средини со песок и не можат да пристапат до системските способности без давање експлицитни дозволи;
  • Вградена поддршка за TypeScript надвор од JavaScript. Стандардниот компајлер TypeScript се користи за проверка на типови и генерирање JavaScript, што доведува до хит на перформансите во споредба со парсирањето на JavaScript во V8. Во иднина, планираме да подготвиме сопствена имплементација на системот за проверка на типот TypeScript, кој ќе ги подобри перформансите за обработка на TypeScript по ред на големина;
  • Времето на траење доаѓа во форма на единствена самостојна извршна датотека („deno“). Доволно е да стартувате апликации користејќи Deno преземете за неговата платформа има една извршна датотека, со големина од околу 20 MB, која нема надворешни зависности и не бара посебна инсталација на системот. Згора на тоа, deno не е монолитна апликација, туку е колекција на пакети за гајба во Rust (deno_core, 'рѓосан_v8), што може да се користи одделно;
  • Кога ја стартувате програмата, како и за вчитување модули, можете да користите URL-адресирање. На пример, за да ја извршите програмата Welcome.js, можете да ја користите командата „deno https://deno.land/std/examples/welcome.js“. Кодот од надворешни ресурси се презема и кешира на локалниот систем, но никогаш не се ажурира автоматски (за ажурирањето потребно е експлицитно да се стартува апликацијата со знаменцето „--reload“);
  • Ефикасна обработка на мрежни барања преку HTTP во апликации, платформата е дизајнирана за креирање мрежни апликации со високи перформанси;
  • Способност да се креираат универзални веб-апликации кои можат да се извршат и во Deno и во обичен веб-прелистувач;
  • достапност стандарден сет на модули, чија употреба не бара врзување за надворешни зависности. Модулите од стандардната колекција биле подложени на дополнителна ревизија и тестирање на компатибилност;
  • Покрај траењето, платформата Deno делува и како менаџер на пакети и ви овозможува пристап до модулите преку URL во кодот. На пример, за да вчитате модул, можете да наведете во кодот „увоз * како дневник од „https://deno.land/std/log/mod.ts“. Датотеките преземени од надворешни сервери преку URL се кешираат. Поврзувањето со верзиите на модулите се одредува со наведување на броеви на верзии во URL-то, на пример, „https://unpkg.com/[заштитена по е-пошта]/dist/liltest.js";
  • Структурата вклучува интегриран систем за проверка на зависноста (командата „deno info“) и алатка за форматирање на кодот (deno fmt);
  • Сите скрипти за апликација може да се комбинираат во една датотека JavaScript.

Разлики од Node.js:

  • Дено не користи менаџер на пакети npm
    и не е врзан за складишта, модулите се адресираат преку URL или преку патека на датотека, а самите модули може да се постават на која било веб-страница;
  • Дено не користи „package.json“ за да дефинира модули;
  • API разлика, сите асинхрони дејства во Deno враќаат ветување;
  • Deno бара експлицитно дефинирање на сите потребни дозволи за датотеки, мрежа и променливи на околината;
  • Сите грешки што не се обезбедени со ракувачи доведуваат до прекинување на апликацијата;
  • Deno го користи системот на модули ECMAScript и не поддржува бара();
  • Вградениот HTTP-сервер на Deno е напишан во TypeScript и работи на врвот на природните TCP приклучоци, додека серверот Node.js HTTP е напишан во C и обезбедува поврзувања за JavaScript. Програмерите на Deno се фокусираа на оптимизирање на целиот TCP сокет слој и обезбедување поопшт интерфејс. Дено HTTP серверот обезбедува помала пропусност, но гарантира предвидлива мала латентност. На пример, во тестот, едноставна апликација базирана на Deno HTTP сервер можеше да обработи 25 илјади барања во секунда со максимална латентност од 1.3 милисекунди. Во Node.js, слична апликација обработуваше 34 илјади барања во секунда, но латенциите се движеа од 2 и 300 милисекунди.
  • Deno не е компатибилен со пакетите за Node.js (NPM), но се развива посебно меѓуслојна за компатибилност со стандардната библиотека Node.js, како што се развива, се повеќе и повеќе апликации напишани за Node.js ќе можат да работат во Deno.
  • Извор: opennet.ru

Додадете коментар