一、$mount()手動挂載
當Vue執行個體沒有el屬性時,則該執行個體尚沒有挂載到某個dom中;假如需要延遲挂載,可以在之後手動調用vm.$mount()方法來挂載。
new Vue({
router,
render: h => h(App)
}).$mount("#app");
`
`new Vue({
el: '#app',
router,
render: h => h(App)
});
解釋: render: x => x(App)
這裡的render: x =>x(App)是es6的寫法
轉換過來就是:暫且可了解為是渲染App元件
render:(function(x){
return x(App);
});
二、mock資料
如果後端接口尚未開發完成,前端開發一般使用mock資料。
注意:新版的vue-cli 自動搭建的build 檔案裡沒有dev-server.js 和 dev-client.js ,是以我們要在webpack.dev.conf.js 裡配置
配置如下:
(1)複制data.json 到該項目下
(2)找到bulid目錄下 webpack.dev.conf.js 找到 const portfinder = require('portfinder'),在其下添加mock 資料
// 添加mock 資料
const express = require('express')
const app = express()
var appData = require('../data.json')//加載本地資料檔案
var seller=appData.seller;
var goods=appData.goods;
var ratings=appData.ratings;
var apiRoutes = express.Router()
app.use('/api', apiRoutes)
(3)接着找到 devServer 裡的 watchOptions,其後緊跟
watchOptions: {
poll: config.dev.poll,
},
before(app) {
app.get('/api/seller', (req, res) => {
res.json({
errno: 0,
data: seller
})//接口傳回json資料,上面配置的資料appData就指派給data請求後調用
}),
app.get('/api/goods', (req, res) => {
res.json({
errno: 0,
data: goods
})
}),
app.get('/api/ratings', (req, res) => {
res.json({
errno: 0,
data: ratings
})
})
}
(4)設定儲存後 npm run dev 運作 通路 http://localhost:8080/api/seller 就可接收到 該路由對應的json 資料
三、關于路由 vue-router
* 直接定義路由
(1)首先定義路由
// 定義路由元件
const goods = { template: '<p>我是對應的goods下面的内容</p>' };
const seller = { template: '<p>我是對應的seller下面的内容</p>' };
(2)建立路由執行個體
// 建立路由執行個體
var router = new VueRouter({
routes:[
// 路由重定向即設定預設路由
{path:'/',redirect:'/goods',component:goods},
{path:'/goods',component:goods},
{path:'/seller',component:seller}
]
});
路由執行個體方法:
router.push({path:'goods'}); //直接添加一個路由,表現切換路由,本質往曆史記錄裡面添加一個
router.replace({path:'goods'}) //替換路由,不會往曆史記錄裡面添加
// router.go('goods')
(3)建立vue 執行個體
// 建立 vue 執行個體
const app=new Vue({
el:"#app", // 挂載元素
router
})
(4)DOM 渲染
<body>
<div id="app">
<div class="nav">
<router-link to='/goods'>good</router-link>
<router-link to='/seller'>seller</router-link>
</div>
<div class="content">
<router-view></router-view>
</div>
</div>
</body>
注意:
檢視效果時,發現動态的給目前路由 添加le一個router-link-active的類名,是以如果需要設定目前路由樣式(比如:高亮)就可以直接在style裡設定了
* (main.js)引入路由元件
(1)引入路由檔案
import goods from './components/goods/goods'
import ratings from './components/ratings/ratings'
import seller from './components/seller/seller'
(2)建立路由執行個體 定義路由元件
const router = new VueRouter({
routes: [{
path: '/',
component: goods
},{
path: '/goods',
component: goods
}, {
path: '/ratings',
component: ratings
}, {
path: '/seller',
component: seller
}],
linkActiveClass: 'active' // 将 router-link-active 改為 active(友善樣式操作)
})
(3)建立vue執行個體并挂載
new Vue({
el:"#app",
router,
template: '<App/>',
components: {
App
}
})
四、axios 請求資料
(1)安裝 axios
npm install axios
(2)引入axios元件
import axios from 'axios'
(3)axios 請求資料(在此之前建立一個接受資料的對sellerobj)
export default {
// 擷取資料 準備 傳回一個對象,背景擷取資料後 賦予 該對象
data (){
return {
sellerobj:{}
}
},
created (){ // 建立之前 請求資料
axios.get('static/data.json').then((result) => {
console.log(result) // 控制台檢查 資料存儲在 result.data 裡
this.sellerobj = result.data.seller // 将資料存到sellerobj裡
})
}
}
原文釋出時間為:2018年01月19日
原文作者:
前端喵本文來源:
開源中國如需轉載請聯系原作者