Start Nest JS dengan VUE JS

Ingin membuat aplikasi Nest js dengan frontend menggunakan Vue js lumayan mudah, bagaimana melakukanya?
Ikuti langkah-langkah berikut ini:

Membuat Baru Nest app

Install the Nest CLI

npm install -g @nestjs/cli

Membuat Applikasi baru Nest JS

nest new nest-with-vue

Install the dependencies

cd nest-with-vue yarn install

Verifikasi apakah app Nest JS sudah jalan

Pertama, jalankan (perintah ini akan melihat file foldernya sehingga kami tidak perlu me-restart server saat kami membuat perubahan):

yarn start:dev

setelah jalan, coba buka browser kemudian buka link http://localhost:3000

jika instalasi berhasil maka akan muncul tulisan hello world.

Setup Serve Static Content

Install depedency yang di butuhkan

yarn add @nestjs/serve-static

di gunakan untuk serving static content di nest js.

Setelah instalasi selesai, selanjutnya ubah fils src/app.module.ts menjadi seperti berikut:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ServeStaticModule } from '@nestjs/serve-static'; // New
import { join } from 'path'; // New

@Module({
  imports: [
    ServeStaticModule.forRoot({
      // Baru
      rootPath: join(__dirname, '..', '/client/dist'), // New
    }), // baru
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

src/main.ts:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setGlobalPrefix('api'); // Baru
  await app.listen(3000);
}
bootstrap();

kita memindahkan semua endpoint yang ada ke bawah /api, lalu menyajikan konten statis di folder ./client/dist (yang belum ada) saat kita coba akses root (dalam hal ini localhost:3000).

Perhatikan juga bahwa nama klien di sini bisa berupa apa saja. Itu hanya folder tempat kita akan meletakkan aplikasi Vue.

Verifikasi bahwa endpoint sudah berhasil di pindah

coba jalankan kembali dan buka http://localhost:3000 , kalau sudah berhasil akan error seperti tambilan berikut.

tetapi ketika akses http://localhost:3000/api maka akan muncul sesuai sebelumnya.

Membuat Vue JS App

Langkah selanjutnya adalah membuat Vue js app, masuk ke dalam folder root app dest js kita kemudian lakukan install vue js

npm init vue@latest

✔ Project name: … <your-project-name>
✔ Add TypeScript? … No / Yes
✔ Add JSX Support? … No / Yes
✔ Add Vue Router for Single Page Application development? … No / Yes
✔ Add Pinia for state management? … No / Yes
✔ Add Vitest for Unit testing? … No / Yes
✔ Add an End-to-End Testing Solution? … No / Cypress / Playwright
✔ Add ESLint for code quality? … No / Yes
✔ Add Prettier for code formatting? … No / Yes

Scaffolding project in ./<your-project-name>...
Done.

untuk project name, kita tadi setting dengan nama client, maka kita menggunakan nama client juga.

setelah itu update file yang ada di dalam project nest js


tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false
  },
  "exclude": ["node_modules", "dist", "client"]
}

tsconfig.build.json

{
  "extends": "./tsconfig.json",
  "exclude": ["node_modules", "test", "dist", "**/*spec.ts", "client"]
}

Kemudian build app Vue js kita:

cd client
yarn install 
yarn build

setelah build app vue, maka akan membuat file di dalam folder client/dist

setelah itu coba buka kembali url http://localhost:3000, maka hasilnya:

Result Nest JS dengan VUe

Selamat Mencoba 🙂

Untuk melihat codenya bisa di Github

About the Author

You may also like these

No Related Post