Kurs Node.js z przykładami do uruchomienia
Darmowy kurs Node.js z przykładami, które uruchomisz na stronie: pliki, moduły, event loop, serwery Express, do których wysyłasz żądania, MongoDB i JWT. Zmień kod i uruchom go ponownie.
Zacznij kursPierwsze kroki
- Co to jest Node.jsNode.js to środowisko uruchomieniowe, które wykonuje JavaScript poza przeglądarką, na serwerach i w terminalu. To nie język ani framework: to V8 plus event loop plus API do plików, sieci i procesów.
- Node.js a JavaScriptJavaScript to język; Node.js to program, który uruchamia go poza przeglądarką. Składnia jest identyczna, ale obiekty globalne i wbudowane API wokół twojego kodu są inne.
- process.argvprocess.argv to tablica z wierszem poleceń, który uruchomił twój program: plik wykonywalny node, ścieżka skryptu, a potem każdy wpisany argument. process.argv.slice(2) daje tylko twoje argumenty.
- process.envprocess.env to obiekt ze zmiennymi środowiskowymi, z którymi uruchomiono twój program Node.js. Każda wartość to string albo undefined, więc liczby i wartości logiczne zamieniasz sam, a każdej zmiennej dajesz wartość domyślną.
- Dane od użytkownikaNode.js nie ma funkcji prompt(). Żeby zadać użytkownikowi pytanie w terminalu, utwórz interfejs readline na process.stdin i wywołaj question() albo poczekaj na odpowiedź przez await z readline/promises.
Pliki i ścieżki
- fs.readFilePlik w Node.js odczytasz przez fs.readFile (callback), fs.readFileSync albo await readFile z fs/promises. Przekaż 'utf8', żeby dostać string, i obsłuż ENOENT, gdy pliku nie ma.
- fs.writeFilePlik w Node.js zapiszesz przez fs.writeFile, fs.writeFileSync albo await writeFile z fs/promises. Jeśli pliku nie ma, zostanie utworzony, a jeśli jest, zostanie zastąpiony; appendFile dopisuje na końcu.
- fs/promisesfs/promises to wersja modułu fs w Node oparta na promise: readFile, writeFile, readdir, stat, mkdir, rm i rename zwracają promise, na które czekasz przez await, a błędy łapiesz przez try/catch.
- Moduł pathModuł path składa i rozkłada ścieżki plików zgodnie z zasadami systemu operacyjnego. path.join łączy segmenty; path.resolve zamienia je na ścieżkę absolutną, zaczynając od bieżącego folderu.
Asynchroniczny Node
- Event loopEvent loop w Node.js wykonuje twoje callbacki w fazach (timers, poll, check, close), a między kolejnymi callbackami opróżnia najpierw kolejkę process.nextTick, a potem kolejkę promise. Uruchom przykłady i zobacz dokładną kolejność.
- EventEmitterEventEmitter z modułu events w Node pozwala obiektowi ogłaszać nazwane zdarzenia przez emit, a innemu kodowi reagować na nie przez on albo once. Listenery wykonują się synchronicznie, w kolejności dodania.
HTTP i Express
- Serwer HTTP`http.createServer()` przyjmuje jedną funkcję, która wykonuje się przy każdym żądaniu z `req` i `res`. Z `req` odczytujesz metodę i URL, a potem ustawiasz na `res` status, nagłówki i body i wywołujesz `res.end()`.
- Routing w ExpressTrasa w Express to metoda, ścieżka i handler: `app.get('/users/:id', handler)`. Powiązane trasy grupuj w `express.Router()` i podpinaj pod prefiks przez `app.use('/api', router)`.
- Middleware w ExpressMiddleware w Express to funkcja `(req, res, next)`, która wykonuje się przed handlerem trasy. Może odczytać lub zmienić żądanie, zakończyć je odpowiedzią albo wywołać `next()`, żeby przekazać je dalej.
- req.params, query, body`req.params` zawiera nazwane części ścieżki (`/users/:id`), `req.query` query string (`?sort=new`), a `req.body` sparsowane body żądania, które jest `undefined`, dopóki nie dodasz parsera body, np. `express.json()`.
- Obsługa błędówError handler w Express to middleware z czterema argumentami, `(err, req, res, next)`, rejestrowany po trasach. Express 5 przekazuje mu rzucone wyjątki, wywołania `next(err)` i odrzucone promise z handlerów async.
- express.static`app.use(express.static(path.join(__dirname, 'public')))` serwuje każdy plik z folderu `public` pod pasującym URL: `public/style.css` odpowiada na `/style.css`. Dodaj ścieżkę podpięcia, żeby serwować je pod prefiksem.
- CORS w ExpressBłąd CORS oznacza, że przeglądarka nie pozwoliła stronie odczytać odpowiedzi twojego API, bo odpowiedź nie dopuszczała originu tej strony. Naprawiasz to na serwerze: wysyłasz `Access-Control-Allow-Origin` i odpowiadasz na preflight `OPTIONS`, ręcznie albo pakietem `cors`.
Dane i uwierzytelnianie
- MongoDBUżywaj MongoDB z Node.js przez oficjalny sterownik mongodb: połącz się przez MongoClient, a potem dodawaj, wyszukuj, aktualizuj i usuwaj dokumenty w kolekcji, wszystko z async/await.
- JWTJWT to podpisany token z trzech części w base64url, który serwer wydaje przy logowaniu i sprawdza przy każdym żądaniu. W Node.js podpisujesz go i weryfikujesz pakietem jose albo jsonwebtoken i tajnym kluczem.