Samouczki

Modernizacja aplikacji Node.js

Naucz się używać IBM Bob do modernizacji aplikacji, aktualizując API Express Node.js z wersji 16 do 22. Wypróbuj rozwój wspomagany przez AI z trybami, zatwierdzeniami i kodowaniem literackim w tym praktycznym samouczku.

Wprowadzenie

Bob jest partnerem AI SDLC (Software Development Lifecycle), który wzmacnia istniejące przepływy pracy. W tym samouczku nauczysz się niektórych podstawowych funkcji Boba, modernizując API Express TypeScript z Node.js 16 do Node.js 22. Nie potrzebujesz doświadczenia w Node.js ani TypeScript, aby ukończyć samouczek. Dowiesz się, jak Bob analizuje zależności i modernizuje wzorce kodu.

Kluczowe funkcje, których się nauczysz

Bob zapewnia cztery podstawowe możliwości, których będziesz używać podczas aktualizacji API:

  • Tryby: Wyspecjalizowane persony, które dostosowują zachowanie Boba do konkretnych zadań.
  • Wzmianki kontekstowe: Odwołuj się do konkretnych elementów projektu w rozmowach z Bobem, takich jak pliki, foldery lub commity Git.
  • Przepływ zatwierdzania: Przeglądaj każde narzędzie, którego Bob planuje użyć, zanim zostanie wykonane.
  • Kodowanie literackie: Pisz kod z Bobem bezpośrednio w edytorze. Wpisuj instrukcje w naturalnym języku dokładnie tam, gdzie powinien znajdować się kod.

Wymagania wstępne

Ten samouczek używa API REST Express TypeScript jako przykładowego projektu. Jednak nie potrzebujesz doświadczenia w Node.js ani TypeScript.

Aby ukończyć ten samouczek, potrzebujesz następujących elementów:

  • Docker zainstalowany i działający na twoim komputerze. Używasz Boba do stworzenia Dockerfile dla aplikacji.
  • Bob IDE zainstalowany.
  • Ukończyłeś samouczek Quickstart, aby zapoznać się z interfejsem i funkcjami Boba.
  • Możesz chcieć rozpocząć nowe okno kontekstowe dla tego samouczka. Zapoznaj się z samouczkiem Tworzenie nowego okna kontekstowego, aby uzyskać instrukcje.

Skonfiguruj swój obszar roboczy

Uruchom IBM Bob i sklonuj przykładowe repozytorium, aby rozpocząć pracę z aplikacją Node.js, którą będziesz modernizować.

Uruchom IBM Bob

Uruchom aplikację IBM Bob na swoim komputerze.

Otwórz panel czatu Boba

Jeśli panel boczny Boba nie jest jeszcze otwarty, otwórz go, klikając ikonę Boba obok paska nawigacji lub użyj skrótu Option + Command + B (Mac) lub Ctrl + Alt + B (Windows).

Panel boczny Boba otwarty w IBM Bob IDE

Sklonuj repozytorium samouczka

Sklonuj repozytorium zawierające przykładową aplikację, klikając ikonę plików znajdującą się w lewym górnym rogu panelu Bob IDE. Następnie kliknij Sklonuj repozytorium i wklej następujące repozytorium GitHub do paska wyszukiwania. Bob zapyta, gdzie chcesz zapisać repozytorium. Możesz zapisać je gdzie chcesz.

https://github.com/IBM/bob-demo.git

Klonowanie repozytorium w Bob IDE

Otwórz repozytorium

Gdy Bob zapyta, czy chcesz otworzyć sklonowane repozytorium, kliknij Otwórz. Jeśli Bob zapyta "Czy ufasz autorom plików w tym folderze?", kliknij Tak, ufam autorom.

Zwróć uwagę na pliki projektu w Eksploratorze i panel czatu Boba z boku.

Pliki projektu wyświetlane w Eksploratorze z panelem czatu Boba

Wyłącz automatyczne zatwierdzanie

Upewnij się, że automatyczne zatwierdzanie jest wyłączone. Tę opcję znajdziesz w ustawieniach Uprawnienia. Gdy automatyczne zatwierdzanie jest wyłączone, Bob prosi o twoje pozwolenie przed wykonaniem jakichkolwiek proponowanych zmian. Dzięki temu masz kontrolę nad wszystkimi modyfikacjami w swojej bazie kodu.

Zbuduj środowisko konteneryzowane

Utwórz Dockerfile, aby uruchomić aplikację w środowisku konteneryzowanym, eliminując potrzebę lokalnej instalacji Node.js lub zależności.

Przełącz się na tryb Agent

Przełącz Boba na tryb Agent, klikając menu rozwijane wyboru trybu i wybierając Agent.

Tryby są jednym ze sposobów, w jaki Bob respektuje zasadę najmniejszych uprawnień. Każdy tryb daje Bobowi pozwolenie na proponowanie określonego zestawu zadań w twoim imieniu. Tryb Agent pozwala Bobowi pisać, modyfikować i refaktoryzować kod. Bob nadal prosi o pozwolenie przed każdą operacją.

Utwórz Dockerfile

Wprowadź prompt w interfejsie czatu Boba, aby poprosić Boba o utworzenie Dockerfile.

Utwórz Dockerfile dla tej aplikacji Node.js TypeScript. Powinien używać Node 16, aby dopasować się do bieżącej wersji aplikacji, zbudować kod TypeScript i uruchomić aplikację na porcie `3000`.

Bob prosi o dostęp do odczytu kilku plików, aby zrozumieć wymagania dla Dockerfile. Kliknij Zatwierdź, aby przyznać Bobowi pozwolenie na odczyt tych plików.

Bob określa odpowiednią strukturę Dockerfile i pokazuje proponowany plik. Przyciski akcji pojawiają się nad polem wprowadzania czatu. Kliknij Zapisz, aby utworzyć plik. Zapisz zapisuje lub modyfikuje pliki w twoim projekcie. Później w tym samouczku Bob aktualizuje Dockerfile, aby używał Node 22.

Sprawdź, czy aplikacja legacy się buduje

Przed modernizacją sprawdź, czy kod legacy buduje się i działa poprawnie. Ta linia bazowa zapewnia, że możesz zidentyfikować wszelkie problemy wprowadzone przez modernizację.

Podczas fazy budowania Bob powie ci, że budowanie nie powiodło się, ponieważ Dockerfile używa npm ci, który wymaga pliku package-lock.json, który nie istnieje.

W panelu czatu Boba powiedz Bobowi, aby zbudował i przetestował aplikację.

Zbuduj i przetestuj aplikację legacy używając Dockera, aby sprawdzić, czy działa poprawnie przed modernizacją. Aplikacja powinna odpowiadać na żądania API pod adresem /api/todos z przykładowymi danymi

Po testowaniu wyczyść kontener.

Bob prosi o zapisanie zmiany w Dockerfile, która naprawi problem z package-lock.json następującym komunikatem:

Budowanie nie powiodło się, ponieważ nie ma pliku package-lock.json. Muszę zaktualizować Dockerfile, aby używał `npm install` zamiast `npm ci`. Pozwól mi to naprawić.

Zdolność Boba do wykrywania i naprawiania błędów budowania jest przykładem tego, jak pracuje z tobą, aby rozwiązywać problemy podczas wdrożeń.

Po zastosowaniu poprawki i zakończeniu budowania Bob wyświetla podsumowanie wyników budowania i testów, potwierdzając, że aplikacja legacy działa poprawnie w środowisku konteneryzowanym. Masz teraz zweryfikowaną linię bazową do porównania po modernizacji aplikacji w następnej sekcji.

Ty i Bob zweryfikowaliście, że aplikacja legacy działa poprawnie.

Eksploruj bazę kodu Node.js z trybem Ask Boba

Przed modernizacją kliknij menu rozwijane wyboru trybu i przełącz się na tryb Ask Boba. Tryb Ask może tylko odczytywać pliki, więc możesz bezpiecznie eksplorować kod bez przypadkowego wprowadzania zmian. Możesz również wpisać /ask w czacie Boba, aby przełączyć się na tryb Ask.

Użyj wzmianek kontekstowych @, aby przejrzeć projekt

Bob obsługuje wzmianki kontekstowe @, które pozwalają odwoływać się do konkretnych plików, folderów lub problemów bezpośrednio w promptach. Wzmianki kontekstowe dają Bobowi precyzyjne informacje o tym, co chcesz omówić.

Eksploruj pliki package.json, tsconfig.json i Dockerfile, wyraźnie mówiąc Bobowi, które pliki analizować, używając wzmianek @. Poznanie tych plików pomaga zrozumieć wymagania modernizacji przed wprowadzeniem jakichkolwiek zmian.

W panelu czatu Boba uruchom następujący prompt:

@package.json Jakiej wersji Node.js używa ten projekt? Jakie zależności wymagałyby aktualizacji dla Node.js 22? Daj mi krótkie podsumowanie.

Symbol @ mówi Bobowi, aby uwzględnił package.json jako kontekst. Bob nie zaczyna odpowiadać natychmiast; najpierw eksploruje twoją bazę kodu, czytając pliki, śledząc wzorce i analizując kod. Nie przerywaj tej fazy eksploracji.

Bob identyfikuje następujące aktualizacje potrzebne dla Node.js 22:

**Obecna wersja Node.js:** 16.x

**Zależności wymagające aktualizacji dla Node.js 22:**

1. **@types/node**: ^16.18.0 → ^22.x.x (typy TypeScript dla Node.js 22)
2. **typescript**: ^4.9.5 → ^5.x.x (TypeScript 5+ dla lepszego wsparcia Node.js 22)
3. **ts-node**: ^10.9.1 → ^10.9.2+ (zapewnienie kompatybilności z TS 5 i Node 22)

**Zależności już kompatybilne:**
- **express**: ^4.18.2 ✓ (działa z Node.js 22)
- **uuid**: ^9.0.0 ✓ (działa z Node.js 22)
- **@types/express**: ^4.17.17 ✓ (kompatybilne)
- **@types/uuid**: ^9.0.0 ✓ (kompatybilne)

**Podsumowanie:** Tylko zależności deweloperskie specyficzne dla Node.js wymagają aktualizacji. Zależności runtime (Express, UUID) są już kompatybilne z Node.js 22.

Analizuj konfigurację TypeScript

Poproś Boba o przeanalizowanie konfiguracji TypeScript projektu:

@tsconfig.json Jakiego systemu modułów i ustawień kompilatora używa ten projekt TypeScript? Jakie zależności wymagałyby aktualizacji dla Node.js 22? Daj mi krótkie podsumowanie.

Bob odpowiada następującymi komponentami, które musisz zaktualizować dla Node.js 22:

**Obecna konfiguracja TypeScript:**

**System modułów:** CommonJS (`"module": "commonjs"`)
- Tradycyjny system modułów Node.js używający `require()` i `module.exports`
- Wyjście: pliki `.js` ze składnią CommonJS

**Ustawienia kompilatora:**
- **Target:** ES2020 (kompiluje do JavaScript ES2020)
- **Lib:** ES2020 (używa funkcji biblioteki standardowej ES2020)
- **Module Resolution:** Node (standardowy algorytm rozwiązywania Node.js)
- **Strict Mode:** Włączony (pełne sprawdzanie typów)

**Zalecane aktualizacje dla Node.js 22:**

1. **target**: ES2020 → **ES2022** lub **ESNext** (wykorzystanie nowszych funkcji JS)
2. **lib**: ES2020 → **ES2022** (dostęp do nowszych API)
3. **module**: Rozważ migrację do **"node16"** lub **"nodenext"** dla natywnego wsparcia ESM
4. **moduleResolution**: "node" → **"node16"** lub **"bundler"** (lepsza nowoczesna rozdzielczość)

**Podsumowanie:** Projekt używa legacy CommonJS z celem ES2020. Dla Node.js 22 powinieneś zaktualizować cel/lib do ES2022+ i rozważyć migrację do natywnych modułów ESM (chociaż CommonJS nadal działa dobrze).

Analizuj Dockerfile

Poproś Boba o przeanalizowanie Dockerfile projektu:

@Dockerfile Jakiej wersji Node.js używa ten Dockerfile? Co musiałoby się zmienić dla Node.js 22? Daj mi krótkie podsumowanie.

Bob odpowiada tym, co musi zostać zaktualizowane dla Node.js 22:

**Obecna wersja Node.js Dockerfile:** Node 16 Alpine (`node:16-alpine`)

**Zmiany potrzebne dla Node.js 22:**

1. **Obraz bazowy (Linia 2):** `FROM node:16-alpine` → `FROM node:22-alpine`

**Podsumowanie:** Wymagana tylko jedna zmiana linii: zaktualizuj obraz bazowy z node:16-alpine do node:22-alpine. Reszta Dockerfile jest kompatybilna z Node.js 22, chociaż składnia flag npm mogłaby zostać zmodernizowana

Teraz rozumiesz, co wymaga aktualizacji. W następnej sekcji przełączasz się na tryb Agent i każesz Bobowi wprowadzić zmiany.

Modernizuj API z trybem Agent Boba

Bob określił następujące wymagania modernizacji dla package.json, tsconfig.json i Dockerfile:

  • Zmień Node.js 16 na Node.js 22 w package.json i Dockerfile
  • Zaktualizuj ustawienia celu i modułu kompilatora TypeScript
  • Napraw przestarzałe wersje zależności

Aby rozpocząć modernizację aplikacji, przełącz się z powrotem na tryb Agent, aby Bob mógł wprowadzać zmiany w kodzie.

W panelu czatu Boba uruchom następujący prompt modernizacji. Zwróć uwagę na odniesienia @, które wskazują Bobowi konkretne pliki, nad którymi pracuje:

@package.json @tsconfig.json @Dockerfile

Modernizuj to API Express z Node.js 16 do Node.js 22. Zachowaj funkcjonalność API identyczną - to jest aktualizacja platformy, a nie zmiana funkcji. Daj mi krótkie podsumowanie.

Po zakończeniu aktualizacji i testowania kodu Bob wyświetla podsumowanie podobne do następującego:

Dockerfile — 2 zmienione linie

- Oba etapy FROM node:16-alpine → node:22-alpine

package.json — 3 zmienione pola

- engines.node: 16.x → 22.x
- @types/node: ^16.18.0 → ^22.0.0
- typescript: ^4.9.5 → ^5.0.0

tsconfig.json — 4 zmienione ustawienia

- target: ES2020 → ES2023
- lib: ["ES2020"] → ["ES2023"]
- module: commonjs → node16 (TypeScript 5 wymaga, aby odpowiadało moduleResolution)
- moduleResolution: node → node16

Ty i Bob zmodernizowaliście aplikację.

Oznacz modernizację jako ukończoną

Użyj funkcji kodowania literackiego Boba, aby zaktualizować tytuł przykładowego todo, oznaczając aplikację jako zmodernizowaną. Kodowanie literackie pozwala pisać instrukcje w naturalnym języku bezpośrednio w edytorze zamiast używać panelu czatu.

Włącz tryb kodowania literackiego

W zakładce Eksploratora po lewej stronie ekranu przejdź do folderu express-todo-api i kliknij src/db.ts, aby otworzyć go w edytorze. Po otwarciu src/db.ts przełącz tryb kodowania literackiego, klikając ikonę różdżki w pasku narzędzi edytora. Alternatywnie możesz nacisnąć Cmd + I na Mac lub Ctrl + I na Windows i Linux.

Napisz swoją instrukcję

W pliku src/db.ts otwartym w edytorze wklej następującą instrukcję na górze pliku, przed jakimkolwiek kodem:

// Znajdź właściwość title przykładowego obiektu todo i zmień ją na "Welcome to the Modernized Node.js 22 API"

Bob rozumie, że ten komentarz jest instrukcją, a nie zwykłym kodem, ponieważ jesteś w trybie kodowania literackiego. Twoja instrukcja pojawia się podświetlona w edytorze.

Wygeneruj kod

Kliknij Generuj na dole dokumentu.

Bob lokalizuje obiekt sampleTodo w konstruktorze i pokazuje zmianę. Zobaczysz zmianę tytułu z:

Przed:

title: "Learn Node.js modernization"

Po:

title: "Welcome to the Modernized Node.js 22 API"

Zaakceptuj zmiany

Kliknij Zaakceptuj wszystko na dole dokumentu, gdzie kliknąłeś Generuj, aby zastosować zmianę do pliku.

Wyjdź z trybu kodowania literackiego

Kliknij Wyjdź poniżej literackiej różdżki na górze pliku, aby wyjść z trybu kodowania literackiego.

Zaktualizowałeś API używając kodowania literackiego. Gdy przetestujesz API w następnej sekcji, zobaczysz ten nowy tytuł w odpowiedzi API.

Zweryfikuj zmodernizowaną aplikację z Dockerem

Zweryfikuj modernizację kodu i zmianę kodu literackiego, przebudowując i testując kontener Docker.

Przełącz się z powrotem na tryb Agent i opisz, co chcesz, aby Bob zweryfikował:

Zweryfikuj, że zmodernizowana aplikacja Node.js 22 działa, budując i testując ją z Dockerem. Sprawdź, czy API odpowiada pod adresem /api/todos i pokazuje zaktualizowany tytuł todo. Wyczyść po zakończeniu. Daj mi krótkie podsumowanie. Chcę również zobaczyć walidację nowego tytułu.

Po zweryfikowaniu przez Boba, że aplikacja została zmodernizowana, daje następujące podsumowanie:

✅ **Weryfikacja zakończona - Modernizacja Node.js 22 pomyślna**

**Wyniki budowania i testów:**
- Obraz Docker zbudowany pomyślnie z Node.js 22
- Kompilacja TypeScript zakończona bez błędów
- Aplikacja uruchomiona i odpowiedziała poprawnie

**Walidacja API:**
{
  "id": "72459851-7953-4a9c-94d3-4f8f1c656d21",
  "title": "Welcome to the Modernized Node.js 22 API",
  "completed": false,
  "createdAt": "2026-02-16T16:35:49.132Z"
}

**Potwierdzone:**
- ✅ Zaktualizowany tytuł todo wyświetla się poprawnie: "Welcome to the Modernized Node.js 22 API"
- ✅ Punkt końcowy API /api/todos odpowiada pomyślnie
- ✅ Wszystkie funkcje działają na Node.js 22
- ✅ Czyszczenie zakończone (kontener i obraz usunięte)

**Podsumowanie:** Zmodernizowane API TODO Express jest w pełni funkcjonalne na Node.js 22 z zaktualizowanymi przykładowymi danymi pokazującymi nowy tytuł, potwierdzając, że modernizacja jest zakończona.

API działa poprawnie, a tytuł został zaktualizowany do "Welcome to the Modernized Node.js 22 API", potwierdzając, że Bob zachował istniejące zachowanie podczas modernizacji wersji Node.js i zależności.

Następne kroki

W tym samouczku nauczyłeś się, jak modernizować API Express z Node.js 16 do Node.js 22 używając Boba. Bob przeanalizował twoje zależności, zaktualizował pliki konfiguracyjne i zmodernizował konfigurację Dockera, zachowując wszystkie funkcje.

  • Dowiedz się o funkcji przeglądu kodu Boba /review, aby wychwycić potencjalne problemy przed zatwierdzeniem swojej pracy.
  • Dowiedz się o trybach, które są wyspecjalizowanymi personami dostosowującymi zachowanie Boba do twoich konkretnych zadań.
  • Dowiedz się, jak używać interfejsu czatu Boba, który jest głównym sposobem interakcji z Bobem.

Następnie przejdź przez serię samouczków Rozpocznij z IBM Bob, aby dowiedzieć się więcej o funkcjach i możliwościach Boba.

Jak oceniasz ten temat?