2025-03-21-練習「元件設計 + 路由規劃 + Vue 思維」
這會是一個 整合式 Vue 小專案,你可以用它來練習「元件設計 + 路由規劃 + Vue 思維」,非常適合放在作品集裡 👩💻✨
✅ 你的目標
建立一個 Vue 專案,包含:
🧩 專案結構規劃建議
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| js9-cool-components/ ├── src/ │ ├── components/ │ │ └── NavBar.vue │ ├── lessons/ │ │ ├── Lesson1.vue │ │ ├── Lesson2.vue │ │ ├── Lesson3.vue │ │ └── ...Lesson7.vue │ ├── App.vue │ ├── main.js │ └── router/ │ └── index.js 👈 建立 Vue Router 設定 ├── vite.config.js ├── package.json └── ...
|
✅ 第一步:建立專案並安裝 Vue Router
請打開 macOS 終端機,在你的資料夾下執行:
1 2 3 4
| npm create vite@latest js9-cool-components -- --template vue cd js9-cool-components npm install npm install vue-router@4
|
✅ 第二步:設定 router(src/router/index.js)
建立檔案:src/router/index.js
,內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import { createRouter, createWebHistory } from 'vue-router' import Lesson1 from '../lessons/Lesson1.vue' import Lesson2 from '../lessons/Lesson2.vue' import Lesson3 from '../lessons/Lesson3.vue' import Lesson4 from '../lessons/Lesson4.vue' import Lesson5 from '../lessons/Lesson5.vue' import Lesson6 from '../lessons/Lesson6.vue' import Lesson7 from '../lessons/Lesson7.vue'
const routes = [ { path: '/lesson1', component: Lesson1 }, { path: '/lesson2', component: Lesson2 }, { path: '/lesson3', component: Lesson3 }, { path: '/lesson4', component: Lesson4 }, { path: '/lesson5', component: Lesson5 }, { path: '/lesson6', component: Lesson6 }, { path: '/lesson7', component: Lesson7 }, ]
const router = createRouter({ history: createWebHistory(), routes, })
export default router
|
✅ 第三步:設定 main.js
打開 src/main.js
,加上 router:
1 2 3 4 5 6 7
| import { createApp } from 'vue' import App from './App.vue' import router from './router'
const app = createApp(App) app.use(router) app.mount('#app')
|
✅ 第四步:建立 NavBar 元件
src/components/NavBar.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <template> <nav> <ul> <li><router-link to="/lesson1">第1課</router-link></li> <li><router-link to="/lesson2">第2課</router-link></li> <li><router-link to="/lesson3">第3課</router-link></li> <li><router-link to="/lesson4">第4課</router-link></li> <li><router-link to="/lesson5">第5課</router-link></li> <li><router-link to="/lesson6">第6課</router-link></li> <li><router-link to="/lesson7">第7課</router-link></li> </ul> </nav> </template>
<style scoped> nav { background: #f5f5f5; padding: 1rem; } ul { list-style: none; display: flex; gap: 1rem; } a.router-link-exact-active { font-weight: bold; color: blue; } </style>
|
✅ 第五步:修改 App.vue
src/App.vue
1 2 3 4 5 6 7 8 9 10
| <template> <div> <NavBar /> <router-view /> </div> </template>
<script setup> import NavBar from './components/NavBar.vue' </script>
|
✅ 第六步:建立 7 個 lesson vue 元件
你可以在 src/lessons/
目錄下建立這些檔案:
1 2 3
| <template> <h2>🎓 Lesson 1: 元件基本觀念</h2> </template>
|
Lesson2.vue
~ Lesson7.vue
依此類推,只要把文字換掉即可。
✅ 第七步:執行看看!
打開瀏覽器,看是不是可以點選上方選單,切換到不同課程頁面 🎉