Node.js to oprogramowanie o otwartym kodzie źródłowym i całkowicie bezpłatne, które umożliwia programistom tworzenie skalowalnych i szybkich programów sieciowych. Bazując na środowisku wykonawczym JavaScript Chrome, oprogramowanie Node.js jest niezwykle wydajne i lekkie, zwłaszcza dlatego, że używa nieblokującego, opartego na zdarzeniach modelu we / wy.
Najlepsza platforma do obsługi kodu JavaScript po stronie serwera
Node.js jest obecnie uważany za najlepszą platformę do obsługi kodu JavaScript po stronie serwera, używanego w produkcji w dużych firmach takich jak Google, eBay, Yahoo, LinkedIn, Microsoft, Cloud9 i wiele innych.
Obowiązkowy przykład
Poniższy kod utworzy prosty serwer WWW, który odpowie "Hello World" dla każdego żądania.
var http = require ('http');
http.createServer (funkcja (req, res) {
res.writeHead (200, {'Content-Type': 'text / plain'});
res.end ("Hello Worldn");
}). listen (1337, '127.0.0.1');
console.log ("Serwer działający pod adresem http://127.0.0.1.13333/");
Aby uruchomić serwer HTTP, będziesz musiał podać powyższy kod w pliku o nazwie & ldquo; example.js & rdquo; (bez cudzysłowów) i wykonać go za pomocą polecenia węzła z emulatora terminala:
% node example.js
Serwer działający pod adresem http://127.0.0.1:1337/
Obsługiwane systemy operacyjne
Node.js to wieloplatformowa aplikacja, która została pomyślnie przetestowana pod wieloma dystrybucjami GNU / Linux, w tym Debian, Ubuntu, Arch Linux, Fedora, Red Hat Enterprise Linux, openSUSE, Mageia, Slackware i inne, a także jak w komercyjnym systemie operacyjnym Mac OS X i Microsoft Windows. W tej chwili obsługiwane są zarówno 64-bitowe, jak i 32-bitowe architektury zestawów instrukcji.
Pod maską, wymagania i dostępność
Jak wspomniano, jest to oprogramowanie wieloplatformowe. Można go pobrać jako gotowe instalatory dla systemów operacyjnych Mac OS X, GNU / Linux i Microsoft Windows, a także uniwersalne archiwum źródłowe, które można skompilować i zainstalować w praktycznie dowolnym systemie operacyjnym, w którym obsługiwany jest język Python.
Co nowego w tej wersji:
- konsola:
- Zaimplementowano metodę console.timeLog (). # 21312
- deps:
- Przejdź na libuv 1.22.0. # 21731
- Aktualizacja do OIOM 62.1 (Unicode 11, CLDR 33.1). # 21728
- http:
- Dodano obsługę przekazywania opcji timeout i agentów do http.request. # 21204
- inspektor:
- Udostępnienie oryginalnego interfejsu API konsoli w wymaganiu ("inspektor"). # 21659
- napi:
- Dodano eksperymentalne wsparcie dla funkcji zajmujących się liczbami bigintów. # 21226
- proces:
- Zaimplementowano metodę process.hrtime.bigint (). # 21256
- Dodano argument wiersza polecenia --title, aby ustawić tytuł procesu podczas uruchamiania. # 21477
- trace_events:
- Dodano metadane process_name. # 21477
- Dodano nowych współpracowników
- codebytere - Shelley Vohr
Co nowego w wersji 10.0.0:
- Pełna obsługa N-API
- Łatwe rozpoczęcie pracy z debugowaniem czasu podróży za pomocą nowego rozszerzenia kodu programu Visual Studio
- Obsługa TTD dla generatorów i funkcji asynchronicznych
- Obsługa protokołu Inspector
- Większa stabilność i inne ulepszenia
Co nowego w wersji:
- async_hooks:
- dodaj zdarzenia śledzenia do async_hooks (Andreas Madsen) # 15538
- dodaj typy dostawców dla serwera sieciowego (Andreas Madsen) # 17157
- konsola:
- console.debug może teraz być używany poza inspektorem (Benjamin Zaslavsky) # 17033
- deps:
- uaktualnij libuv do 1.18.0 (cjihrig) # 17282
- łatka V8 do 6.2.414.46 (Myles Borins) # 17206
- moduł:
- module.builtinModules zwróci listę wbudowanych modułów (Jon Moss) # 16386
- n-api:
- dodaj pomocnika dla dodatków, aby uzyskać pętlę zdarzeń (Anna Henningsen) # 17109
- proces:
- process.setUncaughtExceptionCaptureCallback można teraz użyć do dostosowania zachowania dla --abort-on-uncaught-exception (Anna Henningsen) # 17159
- Program obsługi sygnału może teraz odbierać kod sygnału, który uruchomił program obsługi. (Robert Rossmann) # 15606
- src:
- embedders mogą teraz używać Node :: CreatePlatform do tworzenia instancji NodePlatform (Cheng Zhao) # 16981
- stream:
- writable.writableHighWaterMark i readable.readableHighWaterMark zwróci wartości, z którymi utworzono obiekt strumienia (Calvin Metcalf) # 12860
- Dodano nowych współpracowników
- maclover7 Jon Moss
- Guybedford Guy Bedford
- hashseed Yang Guo
Co nowego w wersji 9.2.0:
- crypto:
- Budowanie wsparcia dla wersji 1.1.0 i 1.0.2 (David Benjamin) # 16130
- fs:
- fs.realpathSync.native i fs.realpath.native są teraz wystawione (Ben Noordhuis) # 15776
- proces:
- pokaż proces.ppid (cjihrig) # 16839
Co nowego w wersji 8.5.0:
- kompilacja:
- Migawki są teraz ponownie włączone w wersji V8 # 14875
- konsola:
- Implementuj minimalną konsolę console.group (). # 14910
- deps:
- Uaktualnij libuv do wersji 1.14.1 # 14866
- zaktualizuj nghttp2 do v1.25.0 # 14955
- dns:
- Dodaj dosłowną opcję do dns.lookup (). Gdy jest to prawda, wyniki z programu rozpoznawania nazw DNS są przekazywane tak jak są, bez przetasowania, które Node.js w przeciwnym razie spowoduje umieszczenie adresów IPv4 przed adresami IPv6. # 14731
- fs:
- dodaj fs.copyFile i fs.copyFileSync, co pozwala na bardziej wydajne kopiowanie plików. # 15034
- inspektor:
- Włącz śledzenie stosu asynchronicznego # 13870
- moduł:
- Dodaj obsługę ESM. Jest to obecnie flaga -experimental-modules i wymaga rozszerzenia .mjs. węzeł --experimental-modules index.mjs # 14369
- napi:
- Zastosuj obietnicę # 14365
- os:
- Dodaj obsługę notacji CIDR do wyjścia metody networkInterfaces (). # 14307
- perf_hooks:
- Wstępne wdrożenie interfejsu Performance Timing API dla Node.js. Jest to ten sam interfejs Performance Timing API, zaimplementowany w nowoczesnych przeglądarkach z wieloma specyficznymi właściwościami Node.js. Wprowadzane są funkcje User Timing mark () i measure (). # 14680
- tls:
- wiele PFX w createSecureContext # 14793
- Dodano nowych współpracowników:
- BridgeAR - Ruben Bridgewater
Co nowego w wersji 8.3.0:
- Silnik V8 został uaktualniony do wersji 6.0, która znacząco zmieniła profil wydajności.
- Inne istotne zmiany:
- DNS:
- Niezależne wystąpienia tłumaczące DNS są teraz obsługiwane, z obsługą anulowania odpowiednich żądań.
- N-API:
- Wiele funkcji N-API do obsługi błędów zostało zmienionych w celu obsługi przypisywania kodów błędów.
- REPL:
- Ulepszono obsługę autouzupełniania dla funkcji require ().
- Narzędzia:
- Standard kodowania WHATWG (TextDecoder i TextEncoder) został zaimplementowany jako funkcja eksperymentalna.
Co nowego w wersji 8.1.3:
- Usunięto regresję strumienia z modułem strumienia:
- Zdarzenie zakończenia będzie teraz zawsze emitowane po zdarzeniu błędu, jeśli zostanie wysłane: [0a9e96e86c] # 13850
- W trybie obiektowym, odczytywalne strumienie mogą teraz ponownie używać niezdefiniowanego. [5840138e70] # 13760
Co nowego w wersji 8.1.2:
- Napraw uszkodzone właściwości process.release w wersji 8.1.1 powodujące niepowodzenie w kompilowaniu natywnych dodatków na platformach innych niż Windows. Jest to poprawka w procesie kompilacji Node.js, więc nie ma dodatkowych zatwierdzeń kodu zawartych na górze 8.1.1.
Co nowego w wersji 7.7.1:
- [c8e34b61f6] - build: dodaj brakujące pliki nagłówkowe src / śledzące (Daniel Bevenius) # 10851
- [96f55f9e59] - src: move trace_event.h dołącz do wewnętrznego nagłówka (Ben Noordhuis) # 10959
- [30c80cbe6f] - src: naprawienie czyszczenia TracingController (Jason Ginchereau) # 10623
- [b89b2a7d36] - src: zawsze zainicjuj kontroler śledzenia w agencie (Matt Loring) # 10507
- [54e55e05ca] - test: spraw, aby test-intl-no-icu-data był bardziej niezawodny (Michael Zasso) # 10992
- [7b253eb3ed] - test: zwiększ poziom ścisłości dla zdarzenia śledzenia testu (Rich Trott) # 11065
- [3dc4a5f1f4] - śledzenie: poprawka - ostrzeżenie w trybie niedziałającego prywatnego pola (Santiago Gimeno) # 10416
- [8a918bf411] - śledzenie: fix -Worder ostrzeżenie (Santiago Gimeno) # 10416
Co nowego w wersji 7.4.0:
- bufor:
- Popraw wydajność alokacji bufora o ~ 11%. (Brian White) # 10443
- Popraw wydajność pliku Buffer.from () o ~ 50%. (Brian White) # 10443
- events: Popraw wydajność EventEmitter.once () o ~ 27%. (Brian White) # 10445
- fs: Zezwalaj na przekazywanie Uint8Array do metod fs, gdzie obsługiwane są bufory. (Anna Henningsen) # 10382
- http: Popraw wydajność serwera http o ~ 7%. (Brian White) # 6533
- npm: Uaktualnij do wersji 4.0.5 (Kat Marchan) # 10330
Co nowego w wersji 7.2.1:
- bufor:
- Przywrócono przestarzałe środowisko wykonawcze wywołania Buffer () bez nowego. (Anna Henningsen) # 9529
- Naprawiono tryb buforowania.transcode () dla kodowania znaków jednobajtowych w UCS2. (Anna Henningsen) # 9838
- obietnica: --trace-ostrzeżenia generuje teraz użyteczne tryby stosu dla ostrzeżeń obietnicy. (Anna Henningsen) # 9525
- repl: Naprawiono błąd uniemożliwiający poprawne analizowanie funkcji generatora. (Teddy Katz) # 9852
- V8: Naprawiono znaczącą regresję wydajności. (Franziska Hinkelmann) # 9730
Co nowego w wersji 7.2.0:
- crypto: Metody deszyfrowania setAuthTag () i setAAD teraz zwracają to.
- dns: Implementacja {ttl: true} dla resolve4 () i resolve6 ().
- libuv: uaktualnij do wersji 1.10
- Naprawiono potencjalny błąd przepełnienia bufora podczas zapisywania danych na konsoli w systemie Windows 10. (CVE-2016-9551)
- process: Dodano nową właściwość zewnętrzną do danych zwróconych przez memoryUsage ().
- tls: Naprawiono wyciek pamięci podczas zapisywania w kolejce na połączenie TLS, które zostało zniszczone podczas uzgadniania.
- V8 (dep): Uaktualnij do wersji 4.7.500.43
- v8: Dane zwrócone przez getHeapStatistics () zawierają teraz trzy nowe pola: malloced_memory, peak_malloced_memory i does_zap_garbage.
Co nowego w wersji 6.4.0:
- build: symbole zlib i dodatkowe symbole OpenSSL są teraz widoczne na platformach Windows. (Alex Hultman) # 7983 i # 7576
- child_process, klaster: Rozwidlone procesy potomne i pracownicy klastrów obsługują teraz konfigurację stdio. (Colin Ihrig) # 7811 i # 7838
- child_process: argv [0] można teraz ustawić na dowolne wartości w procesach spawnowanych. (Pat Pannuto) # 7696
- fs: fs.ReadStream udostępnia teraz liczbę bajtów, które przeczytał do tej pory. (Linus Unneback) # 7942
- repl: REPL obsługuje teraz tryb edytora. (Prince J Wesley) # 7275
- util: inspect () można teraz skonfigurować globalnie za pomocą metody util.inspect.defaultOptions. (Roman Reiss) # 8013
Co nowego w wersji 6.3.0:
- buffer: Dodano buffer.swap64 (), aby uzupełnić swap16 () & amp; swap32 (). (Zach Bjornson) # 7157
- kompilacja: dodano nowe opcje konfiguracyjne do budowania Node.js jako biblioteki współużytkowanej. (Stefan Budeanu) # 6994
- Dostępne są następujące opcje: --shared, - without-v8-platform & amp; --without-bundled-v8.
- crypto: Certyfikaty główne zostały zaktualizowane. (Ben Noordhuis) # 7363
- debugger: Adres serwera można teraz konfigurować za pomocą --debug = :. (Ben Noordhuis) # 3316
- npm: Ulepszony npm do v3.10.3 (Kat Marchan) # 7515 & amp; (Rebecca Turner) # 7410
- readline: Dodano opcję prompt do konstruktora readline. (Evan Lucas) # 7125
- repl / vm: sigint / ctrl + c będzie teraz wyskakiwać z nieskończonych pętli bez zatrzymywania instancji Node.js. (Anna Henningsen) # 6635
- src:
- Dodano węzeł :: FreeEnvironment public C ++ API. (Cheng Zhao) # 3098
- Refactored require ('constants'), stałe są teraz dostępne bezpośrednio z ich odpowiednich modułów. (James M. Snell) # 6534
- : Poprawiona wydajność readable.read () nawet o 70%. (Brian White) # 7077
- timers: setImmediate () jest teraz nawet o 150% szybszy w niektórych sytuacjach. (Andras) # 6436
- util: Dodano opcję breakLength do util.inspect (), aby kontrolować sposób formatowania obiektów między wierszami. (cjihrig) # 7499
- Inspektor v8: Dodano obsługę eksperymentalną do debugowania Node.js przez protokół inspektora. (Ali Ijaz Sheikh) # 6792
- Uwaga: ta funkcja jest eksperymentalna i mogła zostać zmieniona lub usunięta.
- Możesz wypróbować tę funkcję, uruchamiając Node.js z flagą --inspect.
Strumień
Co nowego w wersji 6.0.0:
- Bufor:
- Dodano nowe konstruktory buforów # 4682 i # 5833.
- Istniejące konstruktory buforów () i SlowBuffer () zostały uznane za przestarzałe w dokumentach # 4682 i # 5833.
- Wcześniejsze przestarzałe interfejsy API zostały usunięte # 5048, # 4594.
- Poprawiona obsługa błędów # 4514.
- Dodano metodę Buffer.prototype.lastIndexOf () # 4846.
- Cluster:
- Pracownik wyemitowany jako pierwszy argument w zdarzeniu "message" # 5361.
- Właściwość worker.exitedAfterDisconnect zastępuje worker.suicide # 3743.
- Konsola:
- Wywołanie konsoli console.timeEnd () z nieznaną etykietą teraz generuje ostrzeżenie o procesie, zamiast rzucać # 5901.
- Crypto:
- Ulepszono obsługę błędów # 3100, # 5611.
- Uproszczone wiązania klas certyfikatów # 5382.
- Lepsza kontrola nad trybem FIPS # 5181.
- Przeciążenie trawienia pbkdf2 jest przestarzałe # 4047.
- Zależności:
- Ponownie uruchom udostępnioną obsługę kompilacji c-ares # 5775.
- Wersja V8 zaktualizowana do wersji 5.0.71.35 # 6372.
- DNS:
- Dodaj interfejs API dns.resolvePtr () do kwerendy zwykłych rekordów PTR DNS # 4921.
- Domeny:
- Usuń stos, gdy nie ma obsługi błędu # 4659.
- Zdarzenia:
- Obiekt EventEmitter.prototype._events nie dziedziczy po Object.prototype # 6092.
- Metody EventEmitter.prototype.prependListener () i EventEmitter.prototype.prependOnceListener () zostały dodane # 6032.
- System plików:
- Metody fs.realpath () i fs.realpathSync () zostały zaktualizowane w celu użycia bardziej wydajnej implementacji opartej na libuv. Ta zmiana obejmuje usunięcie argumentu pamięci podręcznej, a metoda może generować nowe błędy # 3594.
- FS apis może teraz akceptować i zwracać ścieżki jako Bufory # 5616.
- Obsługa błędów i poprawiania sprawdzania typów # 5616, # 5590, # 4518, # 3917.
- fs.read jest przestarzały # 4525.
- HTTP:
- 'clientError' można teraz użyć do zwrócenia niestandardowych błędów z serwera HTTP # 4557.
- Moduły:
- Bieżący katalog ma obecnie priorytet wyszukiwania lokalnego # 5689.
- Dowiązania symboliczne są zachowywane, gdy wymagają modułów # 5950.
- Net:
- Wskazówki DNS już nieokreślone ustawiają # 6021.
- Ulepszono obsługę błędów i sprawdzanie typów: # 5981, # 5733, # 2904.
- OS X:
- MACOSX_DEPLOYMENT_TARGET został zdewastowany do 10,7 # 6402.
- Ścieżka:
- Poprawione sprawdzanie typu # 5348.
- Proces:
- Wprowadzenie do API 4782 ostrzeżeń o procesach.
- Wyrzuć wyjątek, gdy nie zostanie przekazana funkcja nextTick # 3860.
- Querystring:
- Obiekt zwracany przez funkcję querystring.parse () nie dziedziczy już od Object.prototype # 6055.
- Readline:
- Kluczowe informacje są wysyłane bezwarunkowo # 6024.
- Historię można teraz jawnie wyłączyć # 6352.
- REPL:
- Przypisanie do _ spowoduje wyświetlenie ostrzeżenia # 5535.
- Wyrażenia nie będą już wypełniane, gdy eval zawiedzie # 6328.
- Zegary:
- Błąd wcześnie, gdy funkcja zwrotna nie jest funkcją # 4362.
- Strumienie:
- null jest teraz nieprawidłową porcją do zapisu w trybie obiektowym # 6170.
- TLS:
- Zmień nazwę "clientError" na "tlsClientError" # 4557.
- SHA1 użyte dla sessionIdContext # 3866.
- TTY:
- Wcześniejsze opakowanie programu setRawMode zostało usunięte # 2528.
- URL:
- Nazwa użytkownika i hasło zostaną usunięte przez url.resolve (), jeśli host zmieni # 1480.
- Util:
- Zmiany w formatowaniu obiektu błędu # 4582.
- Metoda util._extend () została uznana za przestarzałą # 4903
- Metoda util.log () została uznana za przestarzałą # 6161.
- Windows:
- Windows XP i Vista nie są już obsługiwane # 5167.
- Zlib:
- Wprowadzono wiele usprawnień do przetwarzania Zlib # 5883 i # 5707.
Interfejs ciągów
Wymagania :
- Python
Komentarze nie znaleziono