vue-cli 2.9.6 環境路由
承 vue-cli 2.9.6 初始專案的檔案結構,
為方便清楚標示,所以我調整了部份名稱
此範例重點在於下列五個檔案
1、index.html:用途為用來給 Vue 製做實體的根元素。
2、cc0.vue:父元件,定義了路由的出口(<router-view>)。
3、HelloWorld.vue:子元件。
4、router/index.js:用途是定義了元件路由的走向。
5、main.js:用途為,使用了路由參數,指定可用的哪些元件(父元件),使用元件(父元件)。
index.html 的內容為
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>my-project</title> </head> <body> <div id="aaa"></div> <!-- built files will be auto injected --> </body> </html>
main.js 的內容為
// The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import cc0 from './ccc' import router from './router' Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#aaa', router,//使用了路由參數 components: { cc0 },//指定要使用哪個元件(父元件) template: '<cc0/>'//使用元件(父元件) })
當在做 webpack 轉譯時,所產生的 index.html 檔案將會引入 main.js。
ccc.vue 是父元件,元件名稱則自訂為 cc0。
ccc.vue 的內容為
<template> <div id="app"> <img src="./assets/logo.png"> <router-view/> </div> </template> <script> export default { name: 'xxx' } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
由內容可知父元件裡面定義了路由組件渲染的出口
再來看 router/index.js 裡面的內容為
import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld } ] })
路由裡面指定了什麼路徑要導向什麼元件(子元件)。
「@」是「src」的別名,這不是固定用法,而是 webpack.base.conf.js 的設定值
HelloWorld.vue 的內容為
<template> ... </template> <script> export default { name: 'zzz', data () { return { msg: 'Welcome to Your Vue.js App' } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h1, h2 { font-weight: normal; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style>
我們在開 vue-devtools 時,可以看到父子元件的階層
參考資料: