vue-cli4腳手架搭建二
阿新 • • 發佈:2020-07-18
vue create vue3
cd vue3
yarn serve
main.js檔案
import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false new Vue({ router, render: h => h(App) }).$mount('#app')
render: h => h(App) 這一行是ES6箭頭函式的寫法,等價於下面的寫法render:function(h){
return h(App);
}
將App作為引數傳入h函式
App.vue是元件的入口
<template> <div id="app"> <div id="nav"> <router-link to="/">Home</router-link> | <router-link to="/about">About</router-link> </div> <router-view/> </div> </template>
<router-view/>是元件內容顯示的區域,一個元件只能有一個<router-view/>標籤
router-link 是元件路由,按路徑的不同,顯示不同的元件
路由切換:上個元件銷燬和新元件載入
由main.js檔案中 import router from './router' 引入路由
main.js是專案的入口,也在main.js中完成Vue的初始化
new Vue({ router, render: h => h(App) }).$mount('#app')
執行專案看到的區域是App.vue的<router-view/>標籤,App.vue是元件的入口,也可以說是檢視的入口;點選不同的路徑,會更換<router-view/>標籤的內容
router/index.js
vue的中檢視就是元件,路由由三部分組成:
url
名稱:可以有,也可以沒有
元件
這裡的Home,是引入的Home.vue元件 import Home from '../views/Home.vue'
/about的元件是懶載入
const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', // route level code-splitting // this generates a separate chunk (about.[hash].js) for this route // which is lazy-loaded when the route is visited. component: () => import(/* webpackChunkName: "about" */ '../views/About.vue') } ] const router = new VueRouter({ routes }) export default router
先看About.vue元件,這是一個非常簡單的元件
<template> <div class="about"> <h1>This is an about page</h1> </div> </template>
幾個html dom元素,然後最外層是template標籤;一個template標籤內放一個div標籤,就可形成一個元件。也是常見的html模板語法。
複雜一些的元件,會有更多的dom元素,為了更好地渲染這些dom元素,還會加入css樣式/JS指令碼,比如Home.vue元件
將一個元件命名並供外部使用
<template> <div> ... </div> </template>
<script> export default { name: 'HelloWorld', } </script>
在另外一個元件中使用時,需要import
<scripts> // @ is an alias to /src import HelloWorld from '@/components/HelloWorld.vue' </scripts>
CSS樣式全域性匯入
<template> <div id="app"> <!-- 路由展示--> <div></div>打 <!-- 底部導行--> <div></div> </div> </template> <style> /*全域性匯入CSS樣式*/ @import "./assets/css/index.css"; </style>
CSS樣式私有匯入,僅當前元件生效
<style scoped> /*全域性匯入CSS樣式*/ @import "./assets/css/index.css"; </style>
路由樣式
router/index.js
const router = new VueRouter({ linkActiveClass:'active', routes })
然後定義一個全域性的樣式
<style>
.active {
color:rebeccapurple;
}
</style>
動態樣式
<template> <div class="home"> <img alt="Vue logo" src="../assets/logo.png"> <div class="index-category"> <!--key指定唯一鍵,實時渲染--> <div class="category" v-for="(list,i) in lists":key="i"> <i class="iconfont" :style="{background:list.color}"></i> <label>{{list.title}}</label> </div> </div> </div> </template> <script> export default { name: 'Home', data(){ return { lists:[ {title:'標題1',color:'#ffbb78'}, {title:'標題2',color:'#b5cf6b'}, {title:'標題3',color:'#4169e1'} ] } } } </script>
vue中的花括號
<label>{{list.title}}</label> 標籤中寫上雙花括號,裡面是js表示式
v-for="(list,i) in lists":key="i" 對於 vue指令,不需要寫花括號,直接就可以寫js表示式
:style="{background:list.color}" 這裡寫上一個花括號,是因為裡面是一個鍵值對 物件,js中定義鍵值的對的方式,比如 let data = {name:"zhangsan"},js物件本身帶一個花括號
未完...