学习Vue第四天

Posted 前端世界升级打怪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Vue第四天相关的知识,希望对你有一定的参考价值。

路由和路由器


这一篇主要是对路由和路由器的复习巩固以及思路上的梳理,然后能简单的实现一个基本路由。


一:基于 Vue.js 的移动端组件库--Mint UI


在复习路由和路由器之前先介绍一下饿了吗团队研发的基于Vue.js 的移动端组件库--Mint UI。

1:npm安装

npm i mint-ui

2:按需引入

npm install --save-dev babel-plugin-component

3:修改配置文件.babelrc 

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": ["transform-vue-jsx", "transform-runtime",["component", [
    {
      "libraryName": "mint-ui",
      "style": true
    }
  ]]]
}

4:简单例子实现

在main.js中引入部分组件

import Vue from 'vue'
import App from './App'
import {Button} from 'mint-ui'

//注册为标签(全局)
Vue.component(Button.name,Button)


new Vue({
  el:'#app',
  components:{App},
  template:'<App/>'
})

这里大致说一下全局注册和局部注册:

全局组件就是用 Vue.component来创建,局部组件就是var 变量名={}来创建的,全局组件可以在任何新创建的实例中使用。局部注册相对于全局注册的好处在于避免了一些不必要的加载。因为全局注册的不管用没用到都会加载,导致资源的浪费。


外壳组件App中实现具体功能

//使用的是组件库里的相关标签属性
<template>
  <mt-button type="primary" @click.native="handleClick">帅哥</mt-button>
</template>

<script>

import {Toast} from 'mint-ui'
    export default {
    methods:{
      handleClick(){
        Toast('提示信息')
      }
    }
    }
</script>

<style scoped>

</style>

总的index.html


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,
minimum-scale=1, user-scalable=no" />
  <link rel="stylesheet" href="./static/css/bootstrap.css">
  <title>vue_demo</title>
  <script>src="https://as.alipayobjects.com/g/component/fastclick/1.0.6/fastclick.js">
  </script>
  <script>
    if ('addEventListener' in document) {
      document.addEventListener('DOMContentLoaded', function() {
        FastClick.attach(document.body);
      }, false);
    }
    if(!window.Promise) {
      document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>');
    }
  </script>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

二:路由和路由器


路由器管理路由,路由实际上是一种映射关系,

一个key对应一个value

key:path(路径)

value:处理请求的回调函数


一些基本的API


1) VueRouter(): 用于创建路由器的构建函数
new VueRouter({
// 多个配置项
})
2) 路由配置
routes: [
{ // 一般路由
path: '/about', component: About
},{ // 自动跳转路由
path: '/', redirect: '/about' }
]
3) 注册路由器
import router from './router' new Vue({
router
})
4) 使用路由组件标签
1. <router-link>: 用来生成路由链接
<router-link to="/xxx">Go to XXX</router-link>
2. <router-view>: 用来显示当前路由组件界面
<router-view></router-view>

三:实现基本路由


一般放置路由组件的文件夹名字一般命名为views或者pages,我这里用的views

我的文件目录:

 

第一步:注册路由器在main.js中。路由器只需要在入口文件中配置一次即可。

import Vue from 'vue'
import App from './App'
import router from './router'



new Vue({//配置对象的属性名都是一些确定的名称,不能随便修改
  el:'#app',
  components:{App},
  template:'<App/>',
  router

})

第二步:在views中创建两个路由组件

About.vue

Home.vue


第三步:在路由器模块中(src/router/index.js)把路由组件映射成路由

/*
路由器模块
 */
import Vue from 'vue'
import VueRouter from "vue-router";


import About from "../views/About";
import Home from "../views/Home";

Vue.use(VueRouter)

export default new VueRouter({
  //n个路由
  routes:[{
    path:'/about',
    component:About
  },
    {
      path:'/home',
      component:Home
    },
    //重定向,默认选择about
    {
      path: '/',
      redirect:'/about'
    }
  ]


})

第四步:在App中应用两种标签

一种是路由标签(生成路由链接)

一种用于显示路由(显示当前组件)

<template>
  <div>
    <div class="row">
      <div class="col-xs-offset-2 col-xs-8">
        <div class="page-header"><h2>Router Test</h2></div>
      </div>
    </div>

    <div class="row">
      <div class="col-xs-2 col-xs-offset-2">
        <div class="list-group">
          <!--生成路由链接-->
          <router-link to="/about" class="list-group-item">About</router-link>
          <router-link to="/home" class="list-group-item">Home</router-link>
        </div>
      </div>
      <div class="col-xs-6">
        <div class="panel">
          <div class="panel-body">
            <!--显示当前组件-->
      
              <router-view ></router-view>

          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
  export default {}
</script>

<style>

</style>

结果显示:

 


四:结尾


再接再厉。

以上是关于学习Vue第四天的主要内容,如果未能解决你的问题,请参考以下文章

学习Vue第四天

Vue第四天学习笔记之组件化高级

Vue-第四天vue.js事件绑定

十分宠爱-冲刺日志(第四天)

nodejs的第四天学习

学习第十四天(2019-11-27)