More

    Czy Deno zostanie następcą NodeJS?

    Jakiś czas temu wydano stabilną wersję nowego środowiska uruchomieniowego dla JavaScript i TypeScript czyli Deno. Jest to projekt Ryana Dahl, twórcy NodeJS. Czy może to oznaczać, że w przyszłości Deno ma szansę zastąpić NodeJS? W tym wpisie postaram się przedstawić czym jest nowe rozwiązanie, dlaczego powstało i odpowiedzieć na zadane pytanie.

    Dlaczego powstało Deno?

    Na początku napisałem, że Deno to środowisko uruchomieniowe dla JavaScript, a więc jest tym samym co NodeJS – służy do uruchomienia kodu JavaScript poza przeglądarką. Twórcą obu rozwiązań jest ta sama osoba, więc można zadać sobie pytanie: o co w tym wszystkim chodzi?

    Ryan Dahl stwierdził, że jego poprzednie dzieło, czyli NodeJS jest nieidealny. Powstał w czasach, gdy JavaScript był znacznie mniej rozbudowanym językiem. W związku coraz bardziej rozbudowanymi rozwiązaniami postanowił więc stworzyć coś nowego, lepszego, bardziej dopasowanego do współczesnych realiów. Tak oto powstało Deno.

    Co nowego oferuje Deno?

    Pierwsza nowość ma związek z tym, o czym wspomniałem już na początku. Deno domyślnie obsługuje TypeScript, nie wymagając przy tym żadnej dodatkowej konfiguracji. Jedynie zamiast tworzyć pliki *.js, tworzymy pliki *.ts. Jest to duży plus tego rozwiązania, który usprawnia pracę z kodem.

    Kolejną nowością jest async/await dostępny w głównym poziomie aplikacji. Dzięki temu od razu możemy używać await w głównym pliku, bez potrzeby opakowywania naszego kodu w IIFE. W nowoczesnym JavaScript często używamy funkcji asynchronicznych. Wspomniane rozwiązanie sprawi, że nasz główny plik będzie trochę bardziej czytelny.

    Następna zmiana, to zupełnie nowy sposób zarządzania paczkami. Tutaj nie instalujemy już paczek tak, jak miało to miejsce w NodeJS. W naszym projekcie nie będziemy mieli już zatem więcej katalogu node_modules. Zamiast tego, importując paczki w kodzie, od razu podajemy adres URL do głównego pliku paczki. Pokazuje to poniższy przykład.

    deno

    Paczka zostanie pobrana do cache Deno w systemie operacyjnym. Przy kolejnym uruchomieniu aplikacji wcześniej używane paczki nie będą więc ponownie pobierane.

    Paczki dla Deno znajdują się pod adresem deno.land/x. Mamy jednak możliwość wskazania dowolnych miejsc w internecie, np. importować paczki podając URL bezpośrednio do Github. Takie podejście może tworzyć pewne problemy.

    Po pierwsze, jeśli nie podamy wersji paczki, to uruchamiając ten projekt za jakiś czas, Deno pobierze najnowsze wersje, które mogą nie być już kompatybilne. Deno rozwiązuje to, przez dodanie flagi –lock, która spowoduje wygenerowanie pliku z informacją, jakie wersje paczek są używane, czyli odpowiednika package-lock.json lub yarn.lock.

    Kolejny problem to konieczność importowania paczek w różnych plikach po adresie URL i potrzeba pilnowania, czy w każdym pliku importujemy tę samą wersję. Deno proponuje tutaj stworzenie jednego wspólnego pliku, w którym zapiszemy adresy do paczek i importowanie ich właśnie poprzez ten plik. Więcej informacji o tym rozwiązaniu znajdziecie w dokumentacji.

    Nowe podejście do bezpieczeństwa

    Kwestią, która wymaga uwagi, jest też bardzo poważne podejście do bezpieczeństwa w postaci systemu kontroli dostępu. Co to oznacza? Domyślnie program napisany w tej technologii nie ma dostępu do sieci, plików oraz środowiska. Nie możemy zatem pobierać danych za pomocą metody fetch, modyfikować plików na dysku lub odczytywać zmiennych środowiskowych. Dzięki temu zabezpieczamy się przed sytuacją, w której np. jakaś zewnętrzna paczka chciałaby wysyłać dane do naszej aplikacji bez naszej wiedzy.

    Aby nasz aplikacja mogła otrzymać dostęp do wyżej wymienionych obszarów, musimy o tym poinformować Deno za pomocą odpowiedniej flagi podczas uruchamiania aplikacji. Nadając dostępy, możemy skorzystać z ogólnego dostępu, jak np. pozwolić naszej aplikacji wysyłać requesty lub sprecyzować jakie adresy są dla naszej aplikacji dostępne. Podobnie, możemy odblokować aplikacji dostęp do systemów plików lub zezwolić na tylko niektóre operacje, np odczyt plików.

    Czy warto już zainteresować się Deno?

    Jak widzimy, Deno wprowadza sporo nowości i ułatwień. Przychodzi z wbudowanymi narzędziami. Należą do nich między innymi debugger, formater kodu, lint lub inspektor zależności. Nie jest to może żadna rewolucja, ale na pewno pozwala szybciej, bez tracenia czasu na konfigurację, rozpocząć pracę z Deno. To sprawia, że w mojej ocenie już teraz warto zainteresować się tą technologią.

    Deno jest reklamowane jako następca NodeJS. Pytanie jednak, czy jest w stanie całkowicie wyprzeć z NodeJS z rynku? Na ten moment trudno to jeszcze jednoznacznie stwierdzić. Na pewno znajomość czegoś nowego nie zaszkodzi.

    Moim zdaniem o Deno będzie w tym roku głośno i zdobędzie dużą rozpoznawalność. Chętnie poznam Twoje zdanie na ten temat.

    Kamil Wilk
    Programowanie to jego pasja. Zaczynał jako samouk, poświęcił dużo czasu na własny rozwój. Obecnie pracuje w dużej korporacji jako Front-end Developer, ale back-end w JavaScript nie jest mu obcy. Nie boi się trudnych wyzwań w swojej karierze. Na bieżąco stara się śledzić nowości w branży. Lubi wyszukiwać ciekawostki ze świata dev.

    Latest articles

    11 bibliotek, które powinien znać każdy iOS developer

    Przez dwanaście lat, App Store mocno zadomowił się na naszych urządzeniach mobilnych, oferując coraz to większą różnorodność aplikacji. W tym roku ich...

    Jak używać Web Components w Reactcie i Angularze

    Kontynuujemy temat użycia Web Components w budowaniu aplikacji. W tym wpisie przyjrzymy się ich zastosowaniu wraz z popularnymi frameworkami JS-wymi.

    Hacktoberfest – ten hackathon to małe piwo

    Hackathon to wydarzenie programistyczne polegające na zrealizowaniu w określonym czasie projektu zgodnego założeniami organizatora. Większość z was pewnie kojarzy słowo Hackathon. Najczęściej...

    #IThotStory, czyli największe wpadki programistów

    Co prawda programista to nie saper i może pomylić się więcej niż raz, ale każda wpadka niesie za sobą jakieś ryzyko. Zaliczyliście...

    Leave a reply

    Please enter your comment!
    Please enter your name here

    Related articles

    X