zoukankan      html  css  js  c++  java
  • Vue学录 (第四章)

    写在前面:分享技术,共同进步,有不足请见谅,相关意见可评论告知 ~

    编程路漫漫,学习无止尽!

    Vue router

    Vue router是Vue.js官方的路由管理器。它和Vue.js的核心深度集成,使构建单页面应用简化。

    功能:

    (1)嵌套的路由/视图表
    (2)模块化的、基于组件的路由配置
    (3)路由参数、查询、通配符
    (4)基于Vues过渡系统的视图过渡效果
    (5)细粒度的导航控制
    (6)带有自动激活的 CSS class的链接
    (7)HTML5历史模式或hash模式,在IE9中自动降级
    (8)自定义的滚动条行为

    安装

    cnpm install vue-router --save-dev
    

    在这里插入图片描述
    导入并声明使用 vue-router

    import VueRouter from 'vue-router'
    Vue.use(VueRouter) ;
    

    在这里插入图片描述

    使用

    此命令前必须有安装

    cnpm run  dev
    

    1、编写router下index.js

    安装路由,在src目录下,新建文件夹:router ,专门存放路由

    import Vue from  'vue'
    import VueRouter from 'vue-router'
    
    import Content from '../components/Content'
    import Main from '../components/Main'
    
    //安装路由
    Vue.use(VueRouter) ;
    
    // 配置导出路由
    export default  new VueRouter({
      routes :[
        {
          // 路由路径  类似于 RequestMapping
          path : '/content' ,
          name : 'content' ,
          // 跳转组件
    
          component: Content
        },
        {
          // 路由路径
          path : '/main' ,
          name : 'main' ,
          // 跳转组件
          component: Main
        }
      ]
    })
    
    

    2、编写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 App from './App'
    import router from './router'  // 自动扫描里面的路由配置
    
    
    
    Vue.config.productionTip = false ;
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      // 配置路由
      router ,
      components: { App },
      template: '<App/>'
    }) ;
    
    

    3、编写app.vue,并使用路由

    <template>
      <div id="app">
    <!--    <img src="./assets/logo.png">-->
    <!--    <HelloWorld/>-->
        <h1>LZH_Create</h1>
        <router-link to="/main">首页</router-link>
        <router-link to="/content">内容页</router-link>
    
      </div>
    </template>
    
    <script>
    import HelloWorld from './components/HelloWorld'
    import VueRouter from 'vue-router'
    
    // Vue.use(VueRouter) ;
    // export default {
    //   name: 'App',
    //   components: {
    //     HelloWorld
    //   }
    // }
    export default{
      name :  'App'
    } ;
    </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>
    
    

    在这里插入图片描述

    在这里插入图片描述

    4、添加新组建

    步骤:
    (1)在components文件夹下新建
    (2)在index.js中导入导出
    在这里插入图片描述
    (3)在App.vue 中编写注册渲染
    在这里插入图片描述
    新组件lzh.vue 注册成功如下
    在这里插入图片描述

    创建工程

    注意:命令行都要使用管理员模式运行
    1、进入代码目录创建一个名为 hello-vue的工程 vue init webpack hello-vue
    2、安装依赖,安装Vue- router、 element-ui、sass- loader和node-saaa四个插件

    #进入工程目录
    cd hello-vue
    #安装vue- router
    npm install vue-router --save-dev
    #安装e1ement-ui
    npm i element-ui -S
    #安装依赖
    npm install
    #安装SASS加载器
    cnpm install sass-loader node-sass --save-dev
    # 启动测试
    npm run dev
    

    npm 解释

    (1)npm install moduleName:安装模块到项目目录下
    (2)npm install -g moduleName:-g的意思是将模块安装到全局,具体安装到磁盘哪个位置
    要看 npm config prefix的位置
    (3)npm install- save moduleName:--save的意思是将模块安装到项目目录下,并在
    package文件的 dependencies节点写入依赖,-S为该命令的缩写
    (4)npm install -save- dey modulename:--save-dev的意思是将模块安装到项目目录下,并
    在 package文件的 devDependencies节点写入依赖,-D为该命令的缩写

    Element UI 使用

    官方参考

    路由嵌套

    嵌套路由又称子路由,在实际应用中,通常由多层嵌套的组件组合而成。同样地,∪RL中各段动态路径也按某种结构对应嵌套的各层组件,例如
    在这里插入图片描述
    在这里插入图片描述

    import Vue from 'vue'
    import Router from  'vue-router'
    
    import Main from '../views/Main'
    import Login from '../views/Login'
    
    
    import UserList from '../views/user/list'
    import UserProfile from '../views/user/Profile'
    Vue.use(Router) ;
    
    export default new Router ({
    
      routes :[
        {
          path:'/main' ,
          component : Main,
          children:[
            {path: '/user/profile',component:UserProfile},
            {path: '/user/list',component:UserList},
          ]
        },{
          path:'/login' ,
          component : Login
        }
    
      ]
    
    })
    
    

    传递参数与重定向

    传递参数

    index.js 页面
    在这里插入图片描述

    import Vue from 'vue'
    import Router from  'vue-router'
    
    import Main from '../views/Main'
    import Login from '../views/Login'
    
    
    import UserList from '../views/user/list'
    import UserProfile from '../views/user/Profile'
    Vue.use(Router) ;
    
    export default new Router ({
    
      routes :[
        {
          path:'/main' ,
          component : Main,
          children:[
            {path: '/user/profile/:id',name:'UserProfile',component:UserProfile},
            {path: '/user/list',component:UserList},
          ]
        },{
          path:'/login' ,
          component : Login
        }
    
      ]
    
    })
    
    

    展示页面Login.vue
    在这里插入图片描述

    重定向

    在这里插入图片描述

    import Vue from 'vue'
    import Router from  'vue-router'
    
    import Main from '../views/Main'
    import Login from '../views/Login'
    
    
    import UserList from '../views/user/list'
    import UserProfile from '../views/user/Profile'
    Vue.use(Router) ;
    
    export default new Router ({
    
      routes :[
        {
          path:'/main' ,
          component : Main,
          children:[
            {path: '/user/profile/:id',name:'UserProfile',component:UserProfile},
            {path: '/user/list',component:UserList},
          ]
        },{
          path:'/login' ,
          component : Login
        },{
        path:'/goHome',
        redirect :'/main'
        }
    
      ]
    
    })
    
    

    路由模式与404

    路由模式有两种
    hash:路径带#符号,如http//localhost/#/login
    history:路径不带#符号,如http://localhost/login

    index.js修改路由配置,代码如下

    export default new Router ({
    mode : 'history',
    routes:[
    ]
    }) ;
    

    处理404

    在这里插入图片描述

    路由钩子与异步请求

    往期链接参考
    在这里插入图片描述
    beforeRouteEnter在进入路由前执行
    beforeRouteLeave:在离开路由前执行

    参数说明

    to:路由将要跳转的路径信息
    from:路径跳转前的路径信息
    next:路由的控制参数
    next()跳入下一个页面
    next('/path)改变路由的跳转方向,使其跳到另一个路由
    next( false)返回原来的页面
    next(vm)=>{})仅在 beforeRouteEnter中可用,vm是组件实例

    在这里插入图片描述

        export default {
          props:['id'],
          name: "UserProfile",
          beforeRouteEnter:(to,from,next)=>{
            console.log("进入路由之前");
            next() ;
          },
          beforeRouteLeave:(to,from,next)=>{
            console.log("进入路由之后");
            next() ;
          }
        }
    

    在钩子函数中使用异步请求

    1、安装Axios cnpm install axios -s
    2、在main.js 中进行导入

    
    import axios from 'axios'
    import VueAxios from 'vue-axios'
    
    Vue.use(VueAxios, axios) ;
    

    在这里插入图片描述

      export default {
          props:['id'],
          name: "UserProfile",
          beforeRouteEnter:(to,from,next)=>{
            console.log("进入路由之前");
            next(vm =>{
              vm.getData() ; // 进入如有之前执行getData
            }) ;
          },
          beforeRouteLeave:(to,from,next)=>{
            console.log("进入路由之后");
            next() ;
          },
          methods:{
            getData: function(){
              this.axios({
                method:'get',
                url :'http://localhost:8080/static/mock/data.json'
              }).then(function(response){
                console.log(response)
              })
            }
          }
        }
    

    常见异常及其错误

    ①webpack-dev-server不是内部或外部命令

    参考链接

  • 相关阅读:
    重新整理数据结构与算法(c#)——算法套路迪杰斯特拉算法[三十一]
    重新整理数据结构与算法(c#)——算法套路k克鲁斯算法[三十]
    重新整理数据结构与算法(c#)——算法套路普利姆算法[二十九]
    arp 的概念解析
    什么是ip协议二
    什么是ip协议一
    python自动化报告的输出
    使用wxpy自动发送微信消息
    Pycharm2017常用快捷键
    【新番】不正经的魔术讲师与禁忌教典【全集更新中】
  • 原文地址:https://www.cnblogs.com/lzhCreate/p/13647654.html
Copyright © 2011-2022 走看看