Cipta & Jalankan Projek NestJS Secara Tempatan di macOS Menggunakan ServBay
NestJS ialah kerangka kerja Node.js progresif yang berkuasa untuk membina aplikasi pelayan yang cekap dan berskala. Ia ditulis dalam TypeScript serta diinspirasikan oleh Angular dengan menggunakan seni bina modular dan corak suntikan kebergantungan (DI). NestJS menyediakan pelbagai alatan dan ciri yang membolehkan pembangun menghasilkan aplikasi kompleks yang mudah diselenggara, diuji, dan sangat terurai.
Ciri-ciri Utama dan Kelebihan NestJS
- Seni bina modular: Mengorganisasi kod melalui modul supaya struktur aplikasi lebih jelas, mudah difahami serta mudah diselenggara.
- Suntikan kebergantungan (Dependency Injection): Sistem DI yang kukuh dan mudah digunakan untuk meningkatkan lagi kebolehujian serta penyelenggaraan kod.
- Menggunakan TypeScript: Manfaat pemeriksaan jenis statik TypeScript, antara muka dan ciri JavaScript moden untuk produktiviti tinggi serta mengurangkan ralat semasa runtime.
- Decorator yang melimpah: Mendefinisikan pengawal, servis, modul dan komponen lain dengan decorator supaya kod lebih ringkas, deklaratif dan jelas maksudnya.
- Ekosistem yang mantap: Komuniti aktif dengan modul serta pemalam pihak ketiga yang banyak – mudah untuk integrasi dengan TypeORM, Mongoose, GraphQL, WebSockets, cache, pengesahan, dan banyak lagi.
- Bersandarkan standard: Dibina di atas framework HTTP mantap seperti Express atau Fastify untuk keserasian dan prestasi unggul.
Dengan NestJS, pembangun dapat menggunakan amalan terbaik pembangunan backend (seperti prinsip SOLID, corak reka bentuk) untuk membina aplikasi web, servis API, dan microservices berkualiti enterprise dengan pantas.
Cipta & Jalankan Projek NestJS Menggunakan ServBay
ServBay membekalkan persekitaran pembangunan web tempatan yang komprehensif untuk macOS – termasuk pelbagai versi Node.js, pelayan web, serta pangkalan data popular. Dalam panduan ini, anda akan menggunakan persekitaran Node.js bawaan ServBay bersama fungsi “Laman Web” untuk mencipta, menjalankan, dan mengkonfigurasi projek NestJS. Dengan fungsi reverse proxy ServBay, aplikasi NestJS tempatan anda boleh diakses menggunakan domain kustom.
Prasyarat
Sila pastikan perkara berikut sebelum bermula:
- ServBay telah terpasang: Pastikan anda sudah berjaya memasang ServBay di macOS.
- Pakej Node.js diaktifkan: Melalui tab “Pakej” (Packages) dalam panel kawalan ServBay, pastikan anda telah memilih dan memasang versi Node.js yang diperlukan. Jika belum, sila rujuk Panduan Penggunaan ServBay Node.js untuk maklumat lanjut.
Mencipta Projek NestJS
Pasang NestJS CLI Secara Global
Buka Terminal dan gunakan npm (disertakan bersama Node.js) untuk pasang alat baris perintah NestJS (CLI) secara global. NestJS CLI ialah alat berkuasa untuk menginisialisasi, membangun, serta menyelenggara projek NestJS.
bashnpm install -g @nestjs/cli
1Inisialisasi Projek
Beralih ke direktori root laman web yang dicadangkan oleh ServBay:
/Applications/ServBay/www
. Ini adalah direktori lalai untuk laman web yang dikonfigurasi dalam ServBay. Membina projek di sini akan memudahkan konfigurasi laman selepas itu. Kemudian gunakan NestJS CLI untuk mencipta projek baru:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Selepas menjalankan perintah di atas, NestJS CLI akan memandu anda melalui proses penciptaan projek, termasuk memilih pengurus pakej (npm, yarn atau pnpm). Disyorkan untuk memilih npm untuk konsistensi. Projek akan dicipta di direktori
/Applications/ServBay/www/servbay-nest-app
.Pasang Kebergantungan Projek
Masuk ke direktori projek baru
servbay-nest-app
dan pasang semua kebergantungan yang diperlukan:bashcd servbay-nest-app npm install
1
2Perintah
nest new
secara automatik sudah menjalankannpm install
, namun jalankan sekali lagi untuk memastikan semua pakej telah dipasang atau dikemas kini.
Ubah Kandungan Output Projek NestJS (Pilihan)
Untuk menguji sama ada projek berfungsi dan dapat diakses melalui ServBay, anda boleh ubah jawapan lalai laluan root projek.
Ubah Suai Fail
src/app.controller.ts
Buka fail
src/app.controller.ts
di dalam projek menggunakan editor pilihan anda. Tukar kandungan seperti berikut supaya bila laluan root (/
) diakses, ia mengembalikan teks "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // Sekiranya anda mengekalkan AppService @Controller() export class AppController { constructor(private readonly appService: AppService) {} // Jika AppService masih digunakan @Get() getHello(): string { // return this.appService.getHello(); // Jika menggunakan AppService return 'Hello ServBay!'; // Terus kembalikan string } }
1
2
3
4
5
6
7
8
9
10
11
12
13Kod di atas mendefinisikan pengawal mudah yang memproses permintaan HTTP GET ke root aplikasi (
/
) dan mengembalikan string yang ditentukan.
Jalankan Projek NestJS dalam Mod Pembangunan & Akses Melalui ServBay
Projek NestJS biasanya dijalankan dalam mod pembangunan dengan pelayan terbina dalam, mendengar pada port tertentu. ServBay membenarkan anda untuk mengkonfigurasi “Laman Web” (Websites) dengan reverse proxy supaya domain kustom dapat menunjuk ke port aplikasi NestJS anda.
Mulakan Pelayan Pembangunan
Dari root projek
/Applications/ServBay/www/servbay-nest-app
, jalankan arahan ini untuk mulakan pelayan pembangunan NestJS. Tetapkan pembolehubah persekitaranPORT
– misalnya8585
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2npm run start:dev
adalah skrip pratakrif NestJS yang menggunakants-node
untuk menjalankan TypeScript anda dengan pemerhatian fail supaya pelayan dimulakan semula jika fail berubah. Pelayan akan mendengar dilocalhost:8585
.Konfigurasi Reverse Proxy Laman Web ServBay
Buka panel kawalan ServBay dan pergi ke tab “Laman Web” (Websites). Klik butang tambah (biasanya ikon
+
) untuk cipta konfigurasi laman baharu:- Nama (Name): Berikan nama mudah seperti
My first NestJS dev site
. - Domain (Domains): Masukkan domain tempatan yang anda inginkan, contohnya
servbay-nest-test.dev
. Secara lalai, domain seperti.dev
akan dihalakan ke localhost tanpa perlu sunting fail hosts. - Jenis (Type): Pilih
Reverse Proxy
. - Alamat IP (IP Address): Masukkan IP yang didengari aplikasi Node.js, biasanya
127.0.0.1
(loopback tempatan). - Port (Port): Masukkan port aplikasi NestJS, iaitu
8585
.
Selepas selesai konfigurasi, simpan tetapan. ServBay akan mengemaskini fail konfigurasi pelayannya (Caddy atau Nginx) secara automatik. Untuk maklumat lebih lanjut tentang konfigurasi laman dalam ServBay, rujuk Dokumentasi Tambah Laman ServBay.
- Nama (Name): Berikan nama mudah seperti
Akses Laman Mod Pembangunan Anda
Buka pelayar web dan lawati domain yang baru anda konfigurasikan –
https://servbay-nest-test.dev
.Perhatian:
- ServBay secara lalai memberikan sijil SSL percuma (ditandatangani oleh ServBay User CA) kepada laman tempatan anda, jadi anda boleh mengakses dengan selamat melalui
https
. Jika mendapat amaran sijil, anda mungkin perlu mempercayai sijil ServBay User CA. Sila rujuk Dokumentasi Perlindungan SSL untuk maklumat lanjut. - Pastikan pelayan pembangunan NestJS anda (
PORT=8585 npm run start:dev
) sedang berjalan. Jika dihentikan, domain tersebut tidak boleh diakses.
- ServBay secara lalai memberikan sijil SSL percuma (ditandatangani oleh ServBay User CA) kepada laman tempatan anda, jadi anda boleh mengakses dengan selamat melalui
Deploy Versi Production & Akses Melalui ServBay
Sebelum mendepankan aplikasi NestJS ke persekitaran production (walaupun secara simulasi tempatan), projek biasanya perlu dibina dahulu.
Bina Versi Production
Dari root projek
/Applications/ServBay/www/servbay-nest-app
, jalankan:bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2npm run build
akan menggunakan TypeScript compiler untuk menghasilkan kod JavaScript ke direktoridist
.Jalankan Pelayan Production
Selepas bina siap, gunakan perintah berikut untuk mulakan aplikasi NestJS bagi production. Lazimnya gunakan
node
untuk menjalankan fail hasil binaan. Tetapkan port (contoh8586
) dan pembolehubah persekitaranNODE_ENV=production
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2Dalam mod production, tiada pemerhatian fail atau hot reload.
Konfigurasi Reverse Proxy Laman Production di ServBay
Kembali ke tab “Laman Web” di panel kawalan ServBay dan tambah atau ubah konfigurasi laman untuk akses production:
- Nama (Name): Contohnya
My first NestJS production site
. - Domain (Domains): Contoh
servbay-nest-test.prod
. - Jenis (Type):
Reverse Proxy
. - Alamat IP (IP Address):
127.0.0.1
. - Port (Port):
8586
(sama seperti port pelayan production).
Simpan tetapan.
- Nama (Name): Contohnya
Akses Laman Mod Production Anda
Buka pelayar ke
https://servbay-nest-test.prod
untuk melihat aplikasi NestJS versi production anda. ServBay tetap menawarkan akses selamat dengan SSL.
Sambung ke Pangkalan Data yang Disediakan ServBay
ServBay menyokong pelbagai sistem pangkalan data seperti MariaDB (serasi MySQL), PostgreSQL, MongoDB, dan Redis. Ketika membangun aplikasi NestJS, anda boleh menyambung serta menggunakan mana-mana antara pangkalan data ini dengan mudah.
Nota Penting: Pastikan anda telah mengaktifkan perkhidmatan pangkalan data berkaitan melalui tab “Pakej” (Packages) dalam panel kawalan ServBay sebelum menyambung. Rujuk panel kawalan atau dokumentasi ServBay untuk maklumat tentang port, nama pengguna serta kata laluan lalai. Untuk production, tukar maklumat lalai dan cipta pengguna DB khusus demi keselamatan.
Berikut adalah contoh konfigurasi untuk menyambung kepada pangkalan data dalam NestJS menggunakan ORM atau library popular. Biasanya diletakkan dalam modul root (AppModule) atau modul khas database aplikasi anda.
Sambung ke MongoDB
Guna modul
@nestjs/mongoose
untuk sambung ke MongoDB. Mula-mula pasang kebergantungan:bashnpm install @nestjs/mongoose mongoose
1Kemudian konfigurasi
MongooseModule
dalam modul NestJS anda:typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... import lain @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Port lalai 27017 // ... modul lain ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13String sambungan default untuk MongoDB ServBay ialah
mongodb://localhost:27017/
. Anda mungkin perlu gunakan klien MongoDB (seperti MongoDB Compass ataumongosh
) untuk mencipta databaseservbay-nest-app
.Sambung ke Redis
Guna modul
@nestjs/redis
untuk sambung ke Redis. Pasang kebergantungan berikut:bashnpm install @nestjs/redis redis @types/redis
1Konfigurasi
RedisModule
dalam modul NestJS anda:typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... import lain @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Port lalai 6379 }), // ... modul lain ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Alamat Redis default ServBay ialah
localhost:6379
.Sambung ke MariaDB (Serasi MySQL)
Guna modul
@nestjs/typeorm
untuk sambung MariaDB. ServBay menyokong MariaDB dan MySQL; dua-duanya serasi dengan protokol MySQL. Dalam TypeORM, anda boleh guna jenismysql
ataumariadb
. Pasang kebergantungan berikut:bashnpm install @nestjs/typeorm mysql2 typeorm
1Konfigurasi
TypeOrmModule
dalam modul NestJS anda:typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... import lain @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // atau 'mysql' host: 'localhost', port: 3306, // Port lalai 3306 username: 'root', // Pengguna root MariaDB/MySQL ServBay secara lalai password: 'password', // Kata laluan lalai root ServBay database: 'servbay_nest_app', // Pastikan sudah cipta database ini dahulu entities: [], // Array entiti anda synchronize: true, // Boleh true untuk development, hati-hati di production }), // ... modul lain ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Nota: Kata laluan lalai pengguna root MariaDB/MySQL ServBay ialah
password
. Gunakan klien pangkalan data seperti TablePlus, DBeaver, atau MySQL CLI untuk sambung kelocalhost:3306
menggunakan root/password dan cipta databaseservbay_nest_app
. Demi keselamatan, disarankan menukar kata laluan root dan gunakan akaun dengan keizinan minimum untuk aplikasi.Sambung ke PostgreSQL
Gunakan
@nestjs/typeorm
untuk sambung ke PostgreSQL. Pasang kebergantungan:bashnpm install @nestjs/typeorm pg typeorm
1Konfigurasi
TypeOrmModule
:typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... import lain @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Port lalai 5432 username: 'servbay', // Contoh pengguna lalai PostgreSQL ServBay – sila semak tetapan sebenar password: 'password', // Kata laluan lalai PostgreSQL ServBay – sila semak tetapan sebenar database: 'servbay_nest_app', // Pastikan database ini sudah wujud entities: [], // Array entiti anda synchronize: true, // Untuk development boleh true, hati-hati di production }), // ... modul lain ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Nota: Nama pengguna dan kata laluan PostgreSQL lalai bergantung pada versi, biasa digunakan
servbay
ataupostgres
. Sila semak panel kawalan atau dokumentasi ServBay untuk maklumat terkini, dan gunakan klien PostgreSQL untuk mencipta database serta pengguna yang sesuai. Tukar maklumat lalai untuk keselamatan production.
Rumusan
Melalui panduan ini, anda telah mempelajari cara menggunakan ServBay untuk mencipta, menjalankan dan mengakses projek NestJS dengan mudah dalam persekitaran tempatan macOS. Persekitaran Node.js terintegrasi ServBay, konfigurasi laman web yang mudah (terutama fungsi reverse proxy), dan sokongan pelbagai pangkalan data terbina dalam amat memudahkan pembangunan serta ujian aplikasi NestJS secara tempatan. Anda boleh bertukar antara mod pembangunan dan production dengan senang, mengakses aplikasi tempatan anda secara selamat melalui domain kustom serta HTTPS, dan sambung terus ke perkhidmatan pangkalan data yang kukuh daripada ServBay.