- vừa được xem lúc

[Series] Setup Source Template for Vue 3 - Phần 2

0 0 19

Người đăng: Trung Phạm

Theo Viblo Asia

Giới thiệu

Chào tất cả các bạn, phần 1 mình đã giới thiệu tổng quát về source code và setup cơ bản về Vue 3 + Vite. Trong bài này mình tiếp tục tìm hiểu về và setup về vue-router, piniaVitest

Nội Dung

Đây là cấu trúc thư mục của dự án sau khi setup.

vue-template/ ├── public/ | ├── favicon.ico ├── src/ | ├── assets/ | | └── logo.png | ├── components/ | | └── HelloWorld.vue | ├── core/ | ├── hooks/ | | └── useAuth.ts | ├── layouts/ | | └── BlankLayout.vue | | └── MainLayout.vue | ├── pages/ | | └── Dashboard.vue | | └── Error.vue | | └── NotFound.vue | ├── routes/ | | └── index.ts | ├── stores/ | | └── auth.ts | ├── test/ | | └── components/ | | | └── Sample.spec.ts | ├── App.vue | └── main.ts | └── vite-env.d.ts | └── vue-shim.d.ts ├── package.json ├── README.md ├── .cz-config.ts ├── .env.sample ├── .eslintrc ├── .prettierrc ├── .commitlint.config.cjs ├── tsconfig.json ├── tsconfig.node.json └── vite.config.js └── unocss.config.ts

Cài đặt

Trong phần này mình sẽ hướng dẫn các bạn setup về:
🍍 State Management via Pinia, Vue Router
⚙️ Unit Testing với Vitest

Bây giờ chúng ta sẽ cài vue-routerpinia từ PNPM vào dự án của mình.

Vue Router

vue-router là bộ định tuyến chính thức cho Vue.js. Chúng ta sẽ cần cài đặt version 4 tương thích với Vue 3:

$ pnpm i vue-router@4

Tạo 1 folder routes và tạo 1 file index.ts

// index.ts
import {createRouter} from 'vue-router'
import Homepage from './home/Home.vue';
import SignIn from './sign-in/SignIn.vue';
import Cart from './cart/Cart.vue'; export const routes = [ { path: '/', component: MainLayout, requiresAuth: true, children: [ { path: 'dashboard', name: 'Dashboard', component: () => import('@pages/DashBoard.vue'), meta: { requiresAuth: true, headerTitle: 'Dashboard', searchConfig: {}, storeConfig: {}, }, }, ], }, { path: '/login', component: BlankLayout, children: [ { path: 'login', name: 'Login', component: () => import('@pages/Login.vue'), }, ], }, { path: '/:pathMatch(.*)*', name: 'Page Not Found', component: () => import('@pages/NotFound.vue'), }, { path: '/error', name: 'Error', component: () => import('@pages/Error.vue'), },
] export default function (history) { return createRouter({ history, routes })
}

Import route vào file main.ts

import router from './router' const app = createApp(App)
app.use(router)
...

Pinia

Pinia là một trong những project mới nhất xuất hiện từ hệ sinh thái Vue và nó là công cụ quản lý trạng thái (State Management) chính thức mới cho các ứng dụng Vue.js. Api của nó rất giống với Vuex (tiền thân của nó) và nó được thiết kế để nhanh hơn và nhẹ hơn.

$ pnpm i pinia

Tạo 1 folder stores và tạo 1 file auth.ts

import { defineStore, acceptHMRUpdate } from 'pinia' interface IUser { email: string name: string
} export const useAuthStore = defineStore('auth', () => { const isLoggedIn = ref(false) const info = ref<IUser | null>(null) const setInfo = (user: IUser) => { info.value = user } const setIsLoggedIn = (value: boolean) => { isLoggedIn.value = value } return { isLoggedIn, info, setInfo, setIsLoggedIn, }
}) if (import.meta.hot) { import.meta.hot.accept(acceptHMRUpdate(useAuthStore, import.meta.hot))
}

Import pinia vào file main.ts

import { createPinia } from 'pinia'
const app = createApp(App)
...
app.use(createPinia())
...

Vitest

Vitest là 1 unit test framework chạy rất nhanh được cung cấp bởi Vite.

Vitest requires Vite >=v3.0.0 and Node >=v14

$ pnpm i -D vitest

thêm script chạy test vào package:

"scripts": { "dev": "vite", "build": "vue-tsc && vite build", "preview": "vite preview", "test": "vitest"
}

Chúng ta sẽ thử viết 1 vài đoạn test trong file sample.spec.ts để kiểm tra test nó đã hoạt động hay chưa.

import { expect, test } from 'vitest' test('Math.sqrt()', () => { expect(Math.sqrt(4)).toBe(2) expect(Math.sqrt(144)).toBe(12) expect(Math.sqrt(2)).toBe(Math.SQRT2)
})

Sau đó chúng ta chạy pnpm run test và kết quả là:

Kết bài

Ở phần này chúng ta đã cùng nhau tìm hiểu và setup vue-router, piniatesting. Ở phần tiếp theo chúng ta sẽ cùng nhau tìm hiểu về và setup eslint, prettierrcrule commitlint.

Nguồn

https://github.com/trungpham71198/vue-template/tree/feat/chapter-2

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 136

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 117

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 93

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 229