当前位置: 首页 > article >正文

vue part 11

vuex的模块化与namespace

115_尚硅谷Vue技术_vuex模块化+namespace_1_哔哩哔哩_bilibili

116_尚硅谷Vue技术_vuex模块化+namespace_2_哔哩哔哩_bilibili

vue-router路由

很常见的很重要的应用:Ajax请求,将响应的数据替换掉原先的代码从而实现不跳转页面的情况下实现局部刷新

1.什么是路由?

1.一个路由就是一组映射关系(key—value)
2. key 为路径,value 可能是function 或 component

2.路由分类
1.后端路由:
1)理解:value 是function,用于处理客户端提交的请求。
2)工作过程:服务器接收到一个请求时,根据请求路径找到匹配的函数来处
理请求,返回响应数据。                                                                                                                  2.前端路由:
1)理解:value 是component,用于展示页面内容。
2)工作过程:当浏览器的路径改变时,对应的组件就会显示。

基本路由

npm i vue-rounter@3

 和原来那样相同,都是vue3更新版本会报错

 index.js

//该文件专门用于创建整个应用的路由器

import VueRouter from "vue-router";
import About from "@/components/About";
import Home from '@/components/Home';

//创建并默认暴露一个路由器
export default new VueRouter({
   routes:[
       {
           path:'/about',
           component: About
       },
       {
           path:'/home',
           component: Home
       }
   ]
});

App.vue

router-link的特殊标签,实现路由 切换

<template>
  <div>
    <div class="row">
      <div class="col-xs-offset-2 col-xs-8">
        <div class="page-header"><h2>Vue Router Demo</h2></div>
      </div>
    </div>
    <div class="row">
      <div class="col-xs-2 col-xs-offset-2">
        <div class="list-group">
          <!--原始使用a标签跳转多个页面,多页面应用-->
<!--          <a class="list-group-item active" href="./about.html">About</a>-->
<!--          <a class="list-group-item" href="./home.html">Home</a>-->
          <!--vue中借助router=link标签实现路由的切换-->
          <router-link class="list-group-item" active-class="active" to="/about">About</router-link>
          <router-link class="list-group-item" active-class="active" to="/home">Home</router-link>
        </div>
      </div>
      <div class="col-xs-6">
        <div class="panel">
          <div class="panel-body">
            <!--router-view确定视图的位置-->
            <router-view>
            </router-view>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "App",
}
</script>
<style lang="css" scoped>

</style>

main.js

//引入Vue
import Vue from "vue";
//引入App
import App from './App';
//引入vue-router
import VueRouter from "vue-router";
import router from './router';

//关闭Vue的生产提示
Vue.config.productionTip = false;

//应用vue-router插件
Vue.use(VueRouter);

new Vue({
    el: '#app',
    render: h => h(App),
    router
});

About.vue

<template>
  <h2>我是About的内容</h2>
</template>

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

<style scoped>

</style>

Home.vue两个很相似

<template>
  <h2>我是Home的内容</h2>
</template>

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

<style scoped>
</style>

嵌套(多级)路由

shift + Tab 是往前缩进 Tab是往后缩进

路由路径的变化

 路由传参

后端的问号传参,经典的,b站就使用了这个

传参的两种方式

命名路由

 params参数

两种写法

props写法

children:[
{
    name:'xiangqing',
    path:'detail',
    component:Detail,

    //props的第一种写法,值为对象,该对象中的所有key-value都会以props的形式传给Detail组件。
    // props:{a:1,b:'hello'}
   
    //props的第二种写法,值为布尔值,若布尔值为真,就会把该路由组件收到的所有params参数,以props的形式传给Detail组
    // props:true

    //props的第三种写法,值为函数I
    props($route){
        return{
            id:$route.query.id,
            title:$route.query.title
        }
    }    

router-link 

P125主要是什么?

编程式路由导航

缓存路由组件

如何在组件输入后,切换了不把组件销毁?

如果keep-alive 什么都不写,就代表此处展示的所有组件都保持活跃,因此include="News"来限定范围

 多个缓存

 <keep-alive :include="['News','Messages']">
    <router-view></router-view>
 </keep-alive>

两个新的生命周期钩子

提示: 这2个钩子函数需要配合 keep-alive 标签使用

128_尚硅谷Vue技术_两个新的生命周期钩子_哔哩哔哩_bilibili

路由守卫

保护路由安全,判断是不是的条件(权限)才能。

全局前置

前端把本地存储的jwt给安全框架认证,过了的话给一个返回值,根据返回值来跳转路由吧,编程式路由

 全局后置

因为你还是在让服务器控制页面的跳转。完全违背了前后端分离的初衷。这个已经超出了后端的工作范围,后端只保证数据安全:即让特定的人拿到特定的数据。而页面安全:即让特定的人访问特定的页面。是前端的工作。

 P130

独享路由守卫

P131

组件内路由守卫

P132

hash和history

hsah是不会发给服务器的,还有history模式

hash是由#,但是history只要/即可,但是他在ie中难以使用

npm run build

进行打包出来dist,(webpack)然后node express部署

npm init
然随便起个名字
atguigu_test_server

npm i express

写代码server.js
cli
node server

server.js

const express = require('express')

const app = express()
app.use(express.static(__dirname+'/static'))

app.get('/person',(req,res)=>{
    res.send({
        name:'tom',
        age:18
    })
})

app.listen(5005,(err)=>{
    if(!err) console.log('服务器启动成功!')
})

发现history模式更麻烦,不如hash,因为刷新就cannot GET

如何解决?什么java库阿,后端的某些配合,nginx阿

但是此库可以解决部分问题

 VUE UI组件库

最后两集懒得卡吗啊啊啊


http://www.kler.cn/a/307895.html

相关文章:

  • FlinkPipelineComposer 详解
  • 苦等三年!金克斯大人回来了!
  • 学习日志010--python异常处理机制与简单文件操作
  • 飞牛云fnOS本地部署WordPress个人网站并一键发布公网远程访问
  • UDP协议和TCP协议之间有什么具体区别?
  • JS 实现SSE通讯和了解SSE通讯
  • string的模拟实现and友元
  • Jacoco的XML报告详解
  • 链动321模式小程序开发源码
  • HTML 和 CSS
  • java项目之基于web的人力资源管理系统的设计与实现(源码+文档)
  • MySQL之安装与基础知识
  • R语言的基础知识R语言函数总结
  • reg和wire的区别 HDL语言
  • chapter14 数据结构与集合源码 知识点总结Note
  • Kotlin 极简小抄 P2(插值表达式、运算符、选择结构赋值)
  • SpringBoot的Web开发支持
  • AG32 MCU的引脚特点及功耗说明
  • 【python数据处理】保存网页
  • C/C++实现植物大战僵尸(PVZ)(打地鼠版)
  • Transformer-Adaboost多输入单输出回归预测神经网络【MATLAB】
  • Alinx MPSoC驱动开发第11章异步IO实验按下按键报IO Possibile后结束进程
  • 【运维】好用的线上项目运维命令
  • ASPICE培训:打造卓越的汽车软件开发能力
  • 比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程
  • 【网络原理】❤️Tcp 常用机制❤️ —— 延时应答,捎带应答, 面向字节流, 异常情况处理。保姆式详解 , 建议收藏 !!!