Dark mode
Nuxt Naming Conventions
คู่มือการตั้งชื่อใน Nuxt.js ที่ช่วยให้โค้ดเป็นระเบียบและอ่านง่าย
Directory Structure
Pages Directory
File-based Routing: ใช้ kebab-case สำหรับชื่อไฟล์
pages/user/profile.vue
→/user/profile
pages/blog/[slug].vue
→/blog/:slug
Dynamic Routes: ใช้
[param]
สำหรับ dynamic parametersbashpages/ users/[id].vue posts/[slug].vue
Components Directory
PascalCase สำหรับชื่อ component files
bashcomponents/ BaseButton.vue UserProfileCard.vue
Auto-import: ใช้ชื่อไฟล์เป็นชื่อ component โดยอัตโนมัติ
Component Naming
Single-file Components
- PascalCase สำหรับชื่อ componentvue
<script setup> // UserProfile.vue </script>
Component Tags
- PascalCase เมื่อใช้ใน templatevue
<template> <UserProfile /> <BaseButton>Click me</BaseButton> </template>
Props Naming
camelCase เมื่อประกาศ props
vue<script setup> const props = defineProps({ userData: Object, isActive: Boolean, buttonText: String, }); </script>
kebab-case เมื่อใช้งานใน template
vue<template> <UserProfile :user-data="user" :is-active="true" button-text="Submit" /> </template>
State Management (Pinia)
Store Naming
- camelCase สำหรับชื่อไฟล์ storebash
stores/ userStore.ts cartStore.ts
Store Usage
- ใช้ use prefix สำหรับ store composablestypescript
// stores/user.ts export const useUserStore = defineStore("user", { state: () => ({ name: "", email: "", }), });
Composable Functions
- ใช้ use prefix สำหรับ composablestypescript
// composables/useAuth.ts export function useAuth() { // auth logic }
Utility Functions
- camelCase สำหรับ utility functionstypescript
// utils/stringHelpers.ts export function formatDate(date: Date): string { // formatting logic }
TypeScript Types
- PascalCase สำหรับ type/interfacetypescript
// types/user.ts interface User { id: number; name: string; email: string; }
Best Practices
- ใช้ kebab-case สำหรับชื่อไฟล์ใน
pages/
directory - ใช้ PascalCase สำหรับ component files
- ใช้ camelCase สำหรับ composables และ utilities
- ตั้งชื่อไฟล์ให้สื่อความหมายและบ่งบอกถึงหน้าที่
- ใช้ TypeScript อย่างสม่ำเสมอ
Example Structure
bash
├── components/
│ ├── base/
│ │ ├── BaseButton.vue
│ │ └── BaseInput.vue
│ └── shared/
│ └── UserCard.vue
├── pages/
│ ├── index.vue
│ ├── users/
│ │ ├── [id].vue
│ │ └── index.vue
│ └── settings.vue
├── stores/
│ ├── userStore.ts
│ └── cartStore.ts
└── utils/
└── formatters.ts
การตั้งชื่อที่เหมาะสมจะช่วยให้โค้ดอ่านง่ายและบำรุงรักษาได้ดีขึ้น