Vue的路由

2023-10-26

一、Vue的路由

1、路由

路由:从源页面到目的页面的决策过程

2、前端路由

前端路由:在前端页面中维护的路由规则

(1)、hash:在地址中以’#'分隔页面

(2)、history:在地址中以’/'分隔页面

3、VueRouter路由

VueRouter路由 :路由就是根据一个请求路径选中一个组件进行渲染的决策过程。是Vue官方推出的路由管理器。

(1)、route:表示单个路由。

(2)、routes:表示多个路由的集合。是一个数组,在这个数组中包含了多个route

(3)、router:译为路由器.是route、routes的管理者。当用户点击某个按钮或超链接时,路由的查找过程是

三者的关系:router --> routes --> route

4、VueRouter的组成

(1)、VueRouter类:维护的一种路由表,根据路由的请求去渲染某个组件

(2)、router-link:类似于<a>标签。路由的链接组件

(3)、router-view:路由出口,用于显示渲染的组件

5、VueRouter常用的函数

(1)、createRouter函数:创建路由器

(2)、createWebHashHistory函数:创建Hash模式的路由

(3)、createWebHistory函数:创建History模式路由

二、VueRouter的使用

1、安装Vue-router

npm install vue-router

2、创建路由文件

(1)、定义路由表:routes,在路由表中包含多个route

(2)、router,在路由器中指定路由表(routes)以及路由模式(hash/history)

3、声明路由请求接口

定义roter-link,'to’属性声明路由的目标路径

  <router-link to="/about">ABOUT</router-link>

4、声明路由出口:指定组件渲染的位置

<router-view></router-view>

举例:

Home.vue组件:

<template>
<h2>我是Home组件</h2>
</template>

<script>
export default {
  name: "Home"
}
</script>

<style scoped>

</style>

About.vue组件:

<template>
<h2>我是About组件</h2>
</template>

<script>
export default {
  name: "About"
}
</script>

<style scoped>

</style>

Router.js文件:

import {createRouter,createWebHashHistory,createWebHistory} from "vue-router";
import Home from "../components/Home.vue"
import About from "../components/About.vue";
import user from "../components/user.vue";
const routes = [
    {
        path:'/home',
        component:Home,
        name:'home'
    },
    {
        path:'/about',
        component:About,
        name:'about'
    }
]

//定义路由器

const router = createRouter({
        routes,
        history:createWebHistory()
    }

)

//导出路由器

export default router

main.js代码段:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from "./routers/router"


const app=createApp(App)
app.use(router)
app .mount('#app')

App.vue:

<script setup>
// This starter template is using Vue 3 <script setup> SFCs
// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
import HelloWorld from './components/HelloWorld.vue'
</script>

<template>
  <div>
   <router-link :to="{name:'home'}">Home</router-link>
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    <router-link :to="{name:'about'}">About</router-link>
  </div>
  <div>
    <a href="https://vitejs.dev" target="_blank">
      <img src="/vite.svg" class="logo" alt="Vite logo" />
    </a>
  </div>

  <router-view></router-view>
</template>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

在这里插入图片描述
在这里插入图片描述
三、动态路由

动态路由:是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。在路由中带有路由参数,路由参数会设置到’$route.params’中

1、动态路由的路径格式

动态路由的路径格式:/组件名/:参数名;在组件中通过’$route.params.参数名’获取参数。

演示:

<script setup>
// This starter template is using Vue 3 <script setup> SFCs
// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
import HelloWorld from './components/HelloWorld.vue'
</script>

<template>
  <div>
   <router-link :to="{name:'home'}">Home</router-link>
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    <router-link :to="{name:'about'}">About</router-link>
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    <router-link to="/user/朱元璋">动态路由--朱元璋</router-link>
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    <router-link to="/user/朱标">动态路由---朱标</router-link>
  </div>
  <div>
    <a href="https://vitejs.dev" target="_blank">
      <img src="/vite.svg" class="logo" alt="Vite logo" />
    </a>
  </div>

  <router-view></router-view>
</template>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

user.vue组件:

<template>
  <h2>User组件</h2>
  <p>欢迎回来,{{ $route.params.name}} </p>
</template>

<script>
export default {
  name: "user"
}
</script>

<style scoped>

</style>

router.js:

import {createRouter,createWebHashHistory,createWebHistory} from "vue-router";
import Home from "../components/Home.vue"
import About from "../components/About.vue";
import user from "../components/user.vue";
const routes = [
    {
        path:'/home',
        component:Home,
        name:'home'
    },
    {
        path:'/about',
        component:About,
        name:'about'
    },
    {
        path:'/user/:name',
        component: user,
        name:'user'
    }
]

//定义路由器

const router = createRouter({
        routes,
        history:createWebHistory()
    }

)

//导出路由器

export default router

在这里插入图片描述

在这里插入图片描述

2、在URL中带查询参数

在URL中带查询参数:/组件名?参数名=参数值;在组件中通过’$route.query.参数名’获取参数

3、通配符匹配

通配符匹配:'*'表示匹配所有路径。通常用于匹配前端的404页面

四、嵌套路由

嵌套路由:在组件中包含子组件的情况.vue官方提供children属性来定义这种嵌套关系。该属性是 一个数组,本质就是路由表

演示:

1、图书列表组件:显示图书标题,每个标题都是链接组件,当用户点击链接组件(一级路由组件Books.vue)时,跳转到二级路由组件(Book.vue)

2、图书组件:显示图书的详细信息

Book.js文件:

export  default[
    {
        id:1,
        title:'Vue.js无难事',
        desc:'前端框架经典图书'
    },
    {
        id:2,
        title:'React.js工程师宝典',
        desc:'前端框架经典图书'
    },
    {
        id:3,
        title:'Go语言程序设计',
        desc:'最流行的脚本语言'
    }
]

Books.vue代码段:

<template>
<div>
<h2>图书的列表</h2>
  <ul>
    <li v-for="book in booksList" :key="book.id">
      <router-link :to="'/books/book/'+book.id">{{ book.title }}</router-link>
    </li>
  </ul>
</div>
  <hr/>
  <div>
    <router-view></router-view>
  </div>
</template>

<script>
import books from "../assets/books.js"
export default {
  name: "Book",
  data(){
    return{
      booksList:books
    }
  }
}
</script>

<style scoped>
li{
  list-style-type: none;
  margin-top: 5px;
}
</style>

Book.vue代码段:

<template>
  <div>
    <p>图书ID{{book.id}}</p>
    <p>图书名:{{book.title}}</p>
    <p>简要描述:{{book.desc}}</p>
  </div>

</template>

<script>
import books from "../assets/books.js"
export default {
  name: "Book",
  data(){
    return{
      book:{}
    }
  },
  created() {
    this.book =books.find((item)=>item.id == this.$route.params.id);
  },
  watch:{
    '$route':{
      handler:function (to){
        this.book =books.find((item)=>item.id == this.$route.params.id);
      }
    }
  }
}
</script>

<style scoped>

</style>

router.js文件:

import {createRouter,createWebHashHistory,createWebHistory} from "vue-router";
import Home from "../components/Home.vue"
import About from "../components/About.vue";
import user from "../components/user.vue";
const routes = [
    {
        path:'/home',
        component:Home,
        name:'home'
    },
    {
        path:'/about',
        component:About,
        name:'about'
    },
    {
        path:'/user/:name',
        component: user,
        name:'user'
    },{
    path:'/books',
        name:'books',
        component:() => import ('../components/Books.vue'),
        children: [{
            path: '/books/book/:id',
            component: ()=>import('../components/Book.vue')
        }]
    }
]

//定义路由器

const router = createRouter({
        routes,
        history:createWebHistory()
    }

)

//导出路由器

export default router

在这里插入图片描述

五、命名路由

命名路由:有时通过一个名称来标识路由会更方便,特别是在链接到路由,或者是执行导航时。可以创建Router实例时, 在routes选项中为路由设置名称

六、命名视图

命名视图:给路由视图()一个名称,可以将组件渲染到指定名称的路由视图中

1、给路由视图添加name属性。例如:

<template>
<div>
<h2>图书的列表</h2>
  <ul>
    <li v-for="book in booksList" :key="book.id">
      <router-link :to="'/books/book/'+book.id">{{ book.title }}</router-link>
    </li>
  </ul>
</div>
  <hr/>
  <div>
    <router-view name="test"></router-view>
  </div>
  <hr/>
  <div>
    <router-view name="bookDetail"></router-view>
  </div>

</template>

<script>
import books from "../assets/books.js"
export default {
  name: "Book",
  data(){
    return{
      booksList:books
    }
  }
}
</script>

<style scoped>
li{
  list-style-type: none;
  margin-top: 5px;
}
</style>

2、在路由表中,指定components属性的值,例如:

  {
        path: '/books',
        name: 'books',
        component: ()=>import('../components/Books.vue'),
        children: [{
            path: '/books/book/:id',
            //component: ()=>import('../components/Book.vue')
            components:{
            test:()=>import('../components/Book.vue')
            }
        }]
    }

因为指定的路由视图是test,所以将会渲染到视图name为test上,也就是第一个 横线的下方,第二个横线的上方。(如果为bookDetail,则在第二条线的下方)

在这里插入图片描述

七、导航守卫

1、路由导航的方式

(1)、标签导航:<router-link to=“url”></router-link>

(2)、编程式导航:this.$router.push(url)

2、导航守卫

导航守卫:在导航过程中由权限验证、数据的获取等业务的需要,会出现页面的重定向。

每个导航守卫都有三个参数(to,from,next):‘to’:到哪里去; 'from’:从哪里来; ‘next’:下一步去哪儿

2.1、全局前置守卫:使用router.beforeEach注册,当一个导航触发时,前置守卫就会按路由规则进行匹配调用。保证next函数能够正常运行

<template>
<div>
  <h2>用户登录</h2>
<div>
  <label>
    用户名:
    <input type="text" v-model.trim="username" />
  </label>
  <br/><br/>
  <label>&nbsp;&nbsp;&nbsp;码:
    <input type="password" v-model.trim="password" />
  </label>
  <br/><br/>
  <button type="button" @click.prevent="login">登录</button>
  </div>
  <h3>{{info}}</h3>
</div>
</template>

<script>
export default {
  name: "Login",
  data() {
    return{
      username: '',
      password: '',
      info: ''
    }
  },
   methods:{
    login(){
      if("lisi"==this.username && "123456"==this.password){//合法用户将用户信息写入页面缓存中
        sessionStorage.setItem("isAuth",true);
        this.info="";
        if(this.$route.query.redirect){ //表示合法用户请求的页面参数存在
          let redirect = this.$route.query.redirect
          this.$router.replace(redirect);
        }else {
          this.$router.replace('/home')
        }
      }else{
        sessionStorage.setItem('isAuth',false)
        this.username=''
        this.password=''
        this.info='用户名或密码错误'
      }
    }
   }
}
</script>

<style scoped>

</style>

Home.vue:

<template>
<h2>我是首页</h2>
</template>

<script>
export default {
  name: "Home"
}
</script>

<style scoped>

</style>

main.js:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './routers/index.js'
const app = createApp(App)
app.use(router)
app.mount('#app')

router.js文件:

import {createRouter,createWebHistory } from "vue-router";

import Login from "../components/Login.vue"

import Home from "../components/Home.vue"

const rs = [
    {
        path:'/home',
        name:'home',
        component:Home
    },
    {
        path:'/login',
        name:'login',
        component: Login
    }
]

const router = createRouter({
    routes:rs,
    history:createWebHistory()
})
//创建导航守卫

router.beforeEach((to,from,next)=>{
    if(to.path == '/login'){
        next();
    }else {
        if(sessionStorage.getItem('isAuth')){ //若用户已登录,则放行
        next()
        }else {
            //用户未登录,并且要访问受保护的资源,则将登录组件的地址告诉给next函数
            next({
                path:'/login',
                query:{
                    redirect:to.fullPath
                }
            })
            console.log(to.fullPath)
        }
    }
})

export default router

App.vue:

<script setup>
// This starter template is using Vue 3 <script setup> SFCs
// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
import HelloWorld from './components/HelloWorld.vue'
import Login from "./components/Login.vue";

</script>

<template>
  <div>
    <a href="https://vitejs.dev" target="_blank">
      <img src="/vite.svg" class="logo" alt="Vite logo" />
    </a>
    <a href="https://vuejs.org/" target="_blank">
      <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
    </a>
  </div>
<router-link :to="{name:'login'}" class="login">登录</router-link>
  <router-view></router-view>
</template>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

在这里插入图片描述

当用户名和密码为空时,点击登录就会显示用户名或密码错误

在这里插入图片描述

当用户名和密码都输入正确后,就会出现下面的界面

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue的路由 的相关文章

  • React-native:将场景绑定到导航栏

    我正在整理这个提问 回答应用程序 并遇到了这个障碍 我想从导航栏触发场景中的功能 与登录应用程序类似 我在导航栏中有一个用于提交答案的按钮 RightButton route navigator index navState if rout
  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • Angular 2 链式 Promise 并传递拒绝

    应该是一个简单的问题 但是我找不到有关如何做到这一点的文档 像这样链接一个承诺 Making a promise no problem let promise new Promise resolve reject gt let data d
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • 使用 moment.js 检查输入日期是否为星期一

    好吧 我想检查日期是否是星期一 例如 var myDate new Date moment myDate DD MM YYYY dayIs monday 在我的国家 一周的第一天是星期一 所以 我真的想检查输入日期是否是一周的开始 我尝试使
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • vue-test-utils:如何测试 Mounted() 生命周期挂钩中的逻辑(使用 vuex)?

    我正在尝试为 Vue 中的逻辑编写一个单元测试mounted 生命周期钩子 但运气不太好 问题似乎是这样的mounted 使用 vue test utils 安装组件时永远不会被调用mount 这是我要测试的 Vue 组件
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗

随机推荐

  • 网络综合布线七大子系统详解(图解)

    根据 GB50311 2007 综合布线系统工程设计规范 国家标准规定 网络综合布线七大子系统包括 1 工作区子系统 2 水平子系统 3 垂直子系统 4 管理间子系统 5 设备间子系统 6 进线间子系统 新加的 7 建筑群子系统 工作区子系
  • Unity 2017.3针对相机的DynamicResolution (比如UI分辨率不变,改变3D场景分辨率 来提高性能)

    在之前一种优化方式是改变 屏幕分辨率 https docs unity3d com 2017 3 Documentation ScriptReference Screen resolutions html 在 Unity 2017 3 中增
  • 爬虫实战1-批量获取公开政策文本

    本文未展示图片 可以跳转到我的博客园浏览代码和操作流程 博客园 艽野尘梦 目标 爬取北京市公开发布的所有人才引进相关的政策文本 准备 1 环境 Python 3 7 2 使用 selenium 库中的 webdriver 3 安装对应版本的
  • MAVEN 私有仓库搭建与配置

    一 nexus 下载安装 1 下载 官网地址 https www sonatype com nexus repository oss 由于XXX原因 官网地址可能无法下载 百度网盘 百度网盘 请输入提取码 提取码 ogjf 2 安装 lin
  • docker部署lnmp环境介绍

    lnmp 一 部署lnmp 二 测试nginx和php连接 三 测试php和mysql的连接 一 部署lnmp 1 网络规划 172 16 10 0 24 nginx 172 16 10 10 mysql 172 16 10 20 php
  • C++到底还能做什么?

    嗯 这是一位朋友发到我邮箱里面的 很奇怪 发到了gmail邮箱 而不是我常用的hotmail邮箱哈 我呢 试着回答一下 如果回答得不好 叫做肖某人学艺不精 回去重新学习再来过哈 呵呵 一家之言哈 欢迎拍装 原文如下 肖老师您好 我现在是一名
  • AngularJS 通过事件实现跨作用域传值

    跨作用域传值 跨作用域传值 可以通过 子作用域共同使用父作用域的变量或者使用 单例的service实现 这两种方式 在父级作用域或者 Service 单例的变量值改变的时候 无法实现把值再自动处理赋值给作用域 但是通过事件链 的方式就可以实
  • 页表项长度的计算方法

    Frame Number It gives the frame number in which the current page you are looking for is present The number of bits requi
  • 信息安全概念

    1 信息安全定义 国际标准化组织 lntemational Organization for Standardization IS0 息安全的定义为 为数据处理系统建立和采取技术 管理的安全保护 保护计算机硬件 软件 数据不因偶然的或恶意的
  • 创建一个报表服务器项目,创建报表服务器项目

    创建报表服务器项目 10 17 2017 本文内容 Azure DevOps Server 2020 Azure DevOps Server 2019 TFS 2018 TFS 2013 Azure DevOps Server 以前名为 V
  • 电影下载地址大集合,只要是电影就能找到

    看到很多人都想找一些奇葩 或者国内很少见的电影 你们还在百度 微盘上搜索么 还在人人影视上溜达么 以下收集各大电影网站 绝对能满足你们 如果你不是那么热爱电影 只是闲暇之余看看热门的新片 美剧 不求画质与速度的话 那么下面这几个网站已经能满
  • VB

    文章目录 变量定义 Sub过程 函数定义 控制台输入输出 switch case语句 IF语句 FOR循环语句 不等于 逻辑运算符 控制台输入回车不崩溃函数 获取外部库指针内容放到自定义类中 读ini文件 变量定义 int Dim 变量名
  • 深度学习学习率的调整

    20220626 0 引言 最近在做实验的时候 由于结果一直都不怎么好 我就在想是不是过拟合了 那就算不是过拟合 是不是根本没有学习到数据集中的信息呢 想到了这些事情 我就直接把测试集的效果跟随着训练过程直接打印出来了 当然 实际过程中 肯
  • 1.Linux命令-删除

    Linux的删除命令 在Linux下删除文件 我们使用rm命令 还有搭配相应的参数 具体的选择我们看下面看说明 rm 参数 文件名 参数说明 1 f force 忽略不存在的文件 强制删除 无任何提示 2 i interactive 进行交
  • windows下qtmqtt模块的编译安装-Qt5.12.12

    windows下qtmqtt模块的编译安装 Qt5 12 12 代码获取及编译环境 代码获取 方式1 方式2 配置编译环境 编译安装 代码获取及编译环境 代码获取 方式1 直接git拉取至本地 git clone https github
  • PyTorch显存机制简要分析

    显存开销 显存占用约为element个数的4倍 注意不会将空闲的显存释放 模型参数 模型参数的梯度 优化器状态 跟踪每个权重参数 比如记录动量 中间结果 前向传播时计算的中间结果 显存分析方法 No Nvidia smi PyTorch中即
  • 《JavaScript设计模式》初次笔记——wsdchong

    JavaScript设计模式 初次笔记 前言 设计模式一直久仰大名 但是没有去花时间去了解 于是今天特意花时间去看 JavaScript设计模式 2013年6月出版 和w3cschool上的设计模式 然后做了一些笔记 以 JavaScrip
  • 随机游走序列平稳吗_【问答】时间序列系列(一)—— 平稳序列

    编写 果壳屋 什么是平稳 非平稳序列 如果时间的变化不会导致分布的变化 我们谈论的是分布统计属性 如均值 方差和协方差 我们就把时间序列称为为平稳的 stationary 这并不意味着序列不会随时间而变化 只是它的变化方式本身不会随时间而变
  • mybatis实现继承映射

    ORM 框架的优势在于能让我们利用面向对象的思维去操作数据库 hibernate 作为重量级的 ORM 框架对面向对象的支持很强大 作为半自动化的 mybatis 对面向对象的支持也是很完备的 这篇文章就来讨论一下如何利用 mybatis
  • Vue的路由

    一 Vue的路由 1 路由 路由 从源页面到目的页面的决策过程 2 前端路由 前端路由 在前端页面中维护的路由规则 1 hash 在地址中以 分隔页面 2 history 在地址中以 分隔页面 3 VueRouter路由 VueRouter