1. 首页>
  2. 技术文章>
  3. vue学习第16天

vue学习第16天

12/10/23 11:20:04 AM 浏览 1124 评论 0

vue

1)修改默认的输出目录dist为staticweb,在vue.config.js中:

module.exports = defineConfig({
  outputDir: 'staticweb'
})

2)判断是不是手机:

if (/(iPhone|iPod|iOS|Android|Windows Phone)/i.test(navigator.userAgent)) {
  alert("手机");
}else{
  alert("不是手机");
}

3) 在 Vue 2 中,提示找不到 <router-view> 组件:
需要使用 Vue.use() 来注册 vue-router 插件

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import LxmMenu from './views/LxmMenu'
import LxmNews from './views/LxmNews'

Vue.config.productionTip = false

const router = new VueRouter({
  mode: 'history',
  routes:[
    {
      path:'/',
      name:'index'
    },
    {
      path:'/news',
      name:'news',
      component:LxmNews
    }
  ]
})

Vue.use(VueRouter)
Vue.component('lxm-menu',LxmMenu)

new Vue({
  render: h => h(App),
  router
}).$mount('#app')

4) @表示的是src的绝对路径

5) vue-router提供了一个全局组件 router-link(取代a标签),能高亮,默认就会提供高亮类名,比如:

<router-link to="/news">新闻</router-link>

高亮类名:router-link-active 模糊匹配,用的比较多;
高亮类名:router-link-exact-active 精确匹配;
也可以自定义,比如:

const router = new VueRouter({
    linkActiveClass:'act',
    linkExactActiveClass:'exact',
})

6) 查询参数传参,/search?key=test
在script中可以下面方式获取得到参数值

this.$route.query.参数名

7)动态路由传参,比如:/search/:words,接收:

$route.params.参数名

8)重定向,问题:url默认是/路径,未匹配到组件时,出现空白
语法:{path:匹配路径,redirect:重定向到的路径}
9)Vue路由,404,当路径找不到匹配时,给个提示页面。需要配在路由最后面,语法path:"*"
10) 编程式导航 - 基本跳转,path路径跳转,这里比7)的route多了个r:

this.$router.push('路由路径')
this.$router.push({path:'路由路径'})
this.$router.push({name:'路由名'})

用路由名的是必须在路由那里先定义了路由的名字,比如:

{
   path:'/news/:key?',
   name:'news',
   component:LxmNews
}

如果是query传参的话,且是多参数的话,可以这么写:

this.$router.push({
    path:'/路径',
    query:{
      参数名1:'参数值1',            
      参数名2:'参数值2'    
    }
})

11) 动态参数的写法: `传递值:${this.$route.params.key}`

12)返回上一页:this.$router.back();

13)组件缓存keep-alive,路由跳转后,组件被销毁了,返回回来组件又被重建了,所以数据重新被加载了。
keep-alive有3个属性:include ,组件名数组,只有匹配的组件才会被缓存;exclude,任何匹配的的组件都不会被缓存;

网友讨论