Vue基础(一)

2018-12-18  本文已影响0人  xbmchina

Vue-router

Vue的路由,先献上文档(https://router.vuejs.org/zh-cn/

路由在Vue全家桶里面定位是什么呢,创建单页应用!简单!我们知道Vuejs是一系列的组件组成应用,既然是组件那么就需要组合起来,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们!

参考配置:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

import Layout from '@/views/layout/Layout'

export const constantRouterMap = [
    {
      path: '/',
      component: Layout,
      children: [
        {
          path: '/',
          component: () => import('@/views/login/index')
        }
      ]
    }
]

export default new Router({
    // mode: 'history', // require service support
    scrollBehavior: () => ({ y: 0 }),
    routes: constantRouterMap
  })

Vuex

献上文档(https://vuex.vuejs.org/zh-cn/

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。什么是状态管理?可以简单理解为管理数据流,多页面共享一个data库(全局)。

参考配置:
test.js

const test = {
    state: {
        mytest: '12312312313'
    }
}

export default test

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import app from './modules/app'
import test from './modules/test'
import getters from './getters'

Vue.use(Vuex)

export default new Vuex.Store({
    modules: {
        app,
        test
    },
    getters
  })

在组件调用

<template>
    <div>
        这是一个layout{{userame}}
        <a @click="handleLogin">点击我</a>
    </div>
</template>

<script>
import { getTest } from '@/api/login'

export default {
    name: 'Layout',
    data() {
        return {
            userame: this.$store.state.test.mytest 
        }
    },
    computed: {
        count () {
            return this.$store.state.test.mytest 
        }
    },
    methods: {
        handleLogin() {
            getTest(this.userame).then(response => {
                alert(response.data);
            })
        }
    }
}
</script>

axios

封装的ajax,可以根据自己的项目情况再进行封装,然后action中调用。具体可以参考https://github.com/mzabriskie/axios

参考配置:
封装 request.js请求工具

import axios from 'axios'
// import store from '@/store'

// 创建axios实例
const service = axios.create({
    baseURL: '',
    timeout: 15000 // 请求超时时间
})

service.interceptors.response.use(
    function (response) {
        //请求正常则返回
        return Promise.resolve(response)
    },
    function (error) {
        // 请求错误则向store commit这个状态变化
        // const httpError = {
        //     hasError: true,
        //     status: error.response.status,
        //     statusText: error.response.statusText
        // }
        // store.commit('ON_HTTP_ERROR', httpError)
        return Promise.reject(error)
    }
)
export default service

自定义的api请求login.js

import request from '@/utils/request'

export function getTest(params) {
    return request({
        url: '/u/register',
        method: 'get',
        params
    })
}

在组件中调用

  <template>
    <div>
        这是一个layout{{userame}}
        <a @click="handleLogin">点击我</a>
    </div>
</template>

<script>
import { getTest } from '@/api/login'

export default {
    name: 'Layout',
    data() {
        return {
            userame: this.$store.state.test.mytest 
        }
    },
    computed: {
        count () {
            return this.$store.state.test.mytest 
        }
    },
    methods: {
        handleLogin() {
            getTest(this.userame).then(response => {
                alert(response.data);
            })
        }
    }
}
</script>

总结

参考GitHub 整合源码

上一篇下一篇

猜你喜欢

热点阅读