Articles

How Node.js podejmuje wyzwanie Deno Ryana Dahla

.js, open source JavaScript runtime, wydała swoją 15 wersję w zeszłym tygodniu. Teraz w swoim 11 roku, węzeł.js jest tak popularny jak zawsze, ale w 2020 roku pojawił się nowy konkurent. Deno, open source JavaScript runtime wydany w maju, został stworzony przez nikogo innego jak Ryan Dahl-oryginalny autor Node.js. Nawet gorzej niż konkurent, który zna twój produkt na wylot, Deno zostało stworzone specjalnie po to, aby naprawić to, co Dahl postrzegał jako kluczowe słabości Node.js-w tym kwestie bezpieczeństwa, wykorzystanie scentralizowanego systemu repozytoriów (npm) i ” ciężkie narzędzia.”

aby dowiedzieć się, jak bieżąca generacja węzła.opiekunowie js mają do czynienia z nowym challengerem — a przez to, co robią, aby odpowiedzieć na krytykę Dahla — przeprowadziłem wywiad z Bethany Griggs, starszym inżynierem oprogramowania w Red Hat and a Node.członek technicznego Komitetu Sterującego js. Griggs był związany z węzłem.projekt js od 2016 roku, głównie z węzłem.Grupa Robocza js Release.

Richard MacManus
Richard jest starszym redaktorem w New Stack i pisze cotygodniową kolumnę o tym, co dalej w natywnym Internecie w chmurze. Wcześniej założył ReadWriteWeb w 2003 roku i zbudował ją w jednym z najbardziej wpływowych serwisów informacyjnych i analitycznych na świecie.

js umożliwia programistom wykonywanie kodu JavaScript poza przeglądarką internetową. Jego pierwotnym celem było tworzenie dynamicznych stron internetowych na serwerze, przed wysłaniem do przeglądarki; co oznacza, że kod JavaScript został wykonany po stronie serwera, a nie po stronie klienta. Bardziej ogólnie, węzeł.js stał się domyślnym narzędziem do programowania backendowego (podczas gdy takie rozwiązania jak React i Angular są używane w interfejsie frontendowym). Chodzi o to, że programiści mogą używać tego samego języka, JavaScript, zarówno dla backendu, jak i interfejsu.

węzeł.js jest również wysoce skalowalny i posiada model programowania oparty na zdarzeniach, dzięki czemu doskonale nadaje się do aplikacji natywnych w chmurze.

„węzeł.js nadal jest jednym z wiodących środowisk wykonawczych do tworzenia natywnych mikrousług i aplikacji backendowych w chmurze”, powiedział Griggs. Dodała, że ” jest również popularny w projektach IoT — jednym z moich ulubionych przykładów jest NASA używająca Node.js do monitorowania danych skafandra kosmicznego.”

spacesuits abroad, Node.js nie jest już postrzegany jako nowa rzecz rozwoju JavaScript (dalej.js, Frontendowy Framework reactowy, chyba wziął ten płaszcz). I w porównaniu z nowatorską naturą Deno — na przykład, Deno zostało napisane w modnym nowym języku programowania, Rust-the Node.projekt js podąża obecnie stosunkowo konserwatywną ścieżką rozwoju. Nic więc dziwnego, że Wersja 15 Node.js jest aktualizacją przyrostową.

Griggs wymienił „rzucanie domyślnie na nieobsługiwane odrzucenia” jako najważniejszą aktualizację w v15. Oznacza to, że programiści mogą teraz uzyskać „wczesną informację zwrotną, że pomijają obsługę błędu w swojej aplikacji.”Bez wątpienia cenna aktualizacja techniczna, ale prawdopodobnie nie wzbudzi entuzjastycznej dyskusji na technicznym Twitterze.

odpowiadając na krytykę Ryana Dahla

bardziej mnie ciekawi, czy węzeł.zespół projektu js podjął jakieś nowe rozwiązania lub poprawki, aby rozwiązać niektóre obawy, które Ryan Dahl poruszył w ciągu ostatnich kilku lat?

kilka lat temu Dahl wygłosił prezentację o swoich żalach po stworzeniu Node.js. Głównym było to, że nie uczynił środowiska uruchomieniowego tak bezpiecznym, jak mógł – coś, czym zajął się podczas tworzenia Deno, które jest promowane jako „Bezpieczne domyślnie.”Podejście Deno do bezpieczeństwa polega na wprowadzeniu barier bezpieczeństwa wokół dostępu do danych; jak opisano w podręczniku,” Deno wymaga wyraźnych uprawnień dostępu do plików, sieci i środowiska.”

Ryan Dahl na JSConf EU 2018.

js będzie „czerpać inspirację z” Deno w tej i innych kwestiach. Jednak powiedziała, że węzeł.projekt js ” miał historię dyskusji na temat egzekwowania bezpieczeństwa i ograniczania dostępu do interfejsów API przed ogłoszeniem Deno.”Wskazała na kilka” funkcji eksperymentalnych ” dla bezpieczeństwa (przykład 1, Przykład 2).

również Griggs nie jest przekonany, że pierwsze podejście Deno do dostępu jest właściwe dla Node.js. „W przypadku zastosowań praktycznych, „powiedziała,” szybko trzeba będzie wrócić do przyznawania dostępu do wielu interfejsów API, więc wartość netto w stosunku do złożoności byłaby niska.”

chociaż jest zainteresowanie wśród węzłów.zespół projektu js eksperymentując z silniejszymi funkcjami bezpieczeństwa, według Griggsa ” nie było przekonującego przypadku, aby przyjąć wszystkie te same kompromisy co Deno.”

Jeśli chodzi o krytykę npm jako zamkniętego ekosystemu dla modułów, Griggs nie widzi powodu dla Node.js, aby to zmienić.

„jeśli chodzi o sposób zarządzania modułami, ekosystem modułów jest dużą częścią sukcesu Node.js. Podczas gdy trwają dyskusje na temat integracji klientów-rejestrów obsługujących Moduły-główny nacisk położono na dodanie obsługi modułów ES6, zamiast zmieniać sposób zarządzania nimi.”

zamiast używać npm, Deno zdecydowało się na użycie modułów, do których odwołują się adresy URL lub ścieżki plików.

JavaScript po stronie serwera nadal jest silny

z obecną popularnością frameworków JavaScript, takich jak Next.js i Gatsby, wraz z rozwojem Jamstack i jego statycznym podejściem do generowania witryn, zapytałem Griggsa, czy wpłynęło to na przypadki użycia JavaScript po stronie serwera?

„może być ograniczenie użycia takich rzeczy jak silniki szablonów do renderowania po stronie serwera”, powiedziała, ” ale węzeł.js jest nadal mocno używany do tworzenia mikroserwisów, które wspierają strony statyczne, które mogą być wdrażane przy użyciu metod takich jak Jamstack. Węzeł.js nadal jest często używany w narzędziach, które tworzą potoki programistyczne dla JavaScript po stronie klienta.”

przyszłość węzła.js i Deno

czyli co dalej z węzłem.js? W poście o wersji 15 Griggs napisał, że po świętowaniu dziesiątej rocznicy Node.js w zeszłym roku, ” projekt rozpoczął następne 10 lat Node.wysiłek js. „

zapytałem Griggsa, jakie inicjatywy członkowie projektu chcą wdrożyć w ciągu następnej dekady?

” do tej pory zdefiniowaliśmy nasze priorytety jako doświadczenie programisty, stabilność, cechy operacyjne, węzeł.doświadczenie opiekuna js oraz aktualna technologia i interfejsy API ” – odpowiedziała.

są one obecnie opisane w dokumencie GitHub zatytułowanym wartości i priorytety. Bezpieczeństwo jest wymienione raz, jako Podkategoria ” właściwości operacyjnych „i stwierdza po prostu:” rozwiązywanie luk w zabezpieczeniach w odpowiedzialny sposób.”

to nie wydaje się być celem Wysokiej poprzeczki na następną dekadę, zwłaszcza w porównaniu do bardziej ambitnego celu Deno, którym jest przede wszystkim unikanie słabych punktów.

ale od węzła.js jest stabilnym i stosunkowo długo działającym projektem i obsługuje bardzo dużych dostawców oprogramowania dla przedsiębiorstw (takich jak pracodawca Grigga, Red Hat), nie można winić opiekunów za konserwatywność. Chociaż pozostawia to miejsce dla innych, aby myśleć szerzej i odważniej o przyszłości JavaScript po stronie serwera – co dokładnie robi Dahl i jego projekt Deno.

Red Hat jest sponsorem nowego stosu.

obraz funkcji via .