props其他-混入mixin-插件-elementui使用-localStorage系列-vueRouter-vuex

今日内容概要

  • 1 props其他
  • 2 混入mixin
  • 3 插件
  • 4 elementui使用(重要)
  • 5 localStorage
  • 6 vue Router
  • 7 vuex

今日内容详细

1 props其他

# 安装依赖
cmp install---> 删除了node_modules可以下载回来 # 做成纯净的vue项目
在router的index.js 中删除about的路由
删除所有小组件和about页面组件
App.vue只留
<template>
<div id="app">
<router-view/>
</div>
</template>
// 自定义属性 在子组件中接收传入的数据

<script>
export default {
name: 'HelloWorld',
// 方式一:使用数组
// props:['name']
// 方式二:使用对象
// props: {name: Number}
// 方式三:使用对象 默认值和必填
props: {
name:{
type: String, // 类型
required: true, // 必要性
default: '老王' // 默认值
}
}
}
</script>

2 混入mixin

# 可以把多个组件共用的配置提取成一个混入对象

# 使用步骤:
1 定义混入对象,新建mixin包,下新建index.js
2 在 index.js中写 代码(组件中会用到的,data,methods。。。配置项)
export const lqz = {
methods: {
showName() {
alert(this.name); // 没有this.name
},
},
mounted() {
console.log("你好啊!,页面挂在执行");
},
}
3 局部使用(只在当前组件中使用)
import {lqz} from '@/mixin'
# 配置项
mixins: [lqz] 4 全局使用(所有组件都可以用) main.js中
import {lqz} from '@/mixin'
Vue.mixin(lqz)
// Vue.mixin(lqz2)
// Vue.mixin(lqz3) 5 在组件中,直接使用即可

3 插件

功能:用于增前Vue,
本质:包含install方法的一个对象 install的第一个参数数Vue,第二个以后的参数是插件使用者传递的数据 # 使用步骤
1 新建包plugins 新建index.js import Vue from "vue";
import axios from "axios"; export default {
install(vue, name){
console.log('插件使用中', vue)
// 可以做的事
// 1 了解 自定义指令(不了解没关系)
Vue.directive("fbind", {
//指令与元素成功绑定时(一上来)
bind(element, binding) {
element.value = binding.value;
},
//指令所在元素被插入页面时
inserted(element, binding) {
element.focus();
},
//指令所在的模板被重新解析时
update(element, binding) {
element.value = binding.value;
},
}) // 2 定义全局变量 以后在任何组件中都可以使用到 借助于Vue.prototype往里放 以后所有组件只要this.$ajax 就是axios对象
Vue.prototype.$name = '彭于晏'
Vue.prototype.$add = (a,b)=>{
return a+b
}
Vue.prototype.$ajax = axios // 3 使用全局混入
Vue.mixin({
data(){
return{
name:'柳泉镇',
age:19
}
}
}) // 4 自定义全局组件 定义完成之后再任意地方都能用
// Vue.component('child',{
//
// })
}
} 2 想要使用插件需要在配置里设置
# 使用自定义插件
import plugin from '@/plugins'
Vue.use(plugin)

4 elementui使用(重点)

# 在vue上 css样式 用的最多的是elementui 但是还有其他的
elementui 做网页端 样式用的多 vue2的 饿了么团队开发的
elementui-plus 第三方团队继续基于vue3写的
vant 做app的样式
iview pc端用www.iviewui.com # elementui的使用
1 安装
cnpm i element-ui -S
2 配置完整引入 在main.js 中写入以下内容
// elementui的使用
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI); // 以后咱们组件中直接使用elementui提供的全局组件即可
3 在组件中使用
去官网看到好的 复制粘贴到你的项目中即可

5 localstorage系列

# 都是在浏览器存储数据的--》存数据有什么用?
-登录成功 token存在本地
-不登录加入购物车功能,迪卡侬存在了localStorage中
-组件间通信----》 跨组件 # localStorage
-永久存储,除非清空缓存,手动删除,代码删除
-localStorage.setItem('userinfo', JSON.stringify(this.userInfo))
-localStorage.getItem('userinfo')
-localStorage.clear() // 清空全部
-localStorage.removeItem('userinfo')
# sessionStorage
-关闭浏览器,自动清理
-sessionStorage.setItem('userinfo', JSON.stringify(this.userInfo))
-sessionStorage.getItem('userinfo')
-sessionStorage.clear() // 清空全部
-sessionStorage.removeItem('userinfo')
# cookie
-有过期时间,到过期时间自动清理
-借助于第三方 vue-cookies
-cookies.set('userinfo', JSON.stringify(this.userInfo))
-cookies.get('userinfo')
-cookies.delete('userinfo')

6 vue Router

# 第三方插件 用来实现SPA的vue插件
单页面应用---> 实现在一个index.html中有页面跳转效果的插件
路由控制
<router-link> 跳转用
<router-view/> 替换页面组件用 # 1 基本使用
1 创建vue项目时加入了 直接用即可
如果之前没装:先下载 在项目中创建router包 写个index.js 代码cope过来 main.js写一下 2 配置路由的跳转(跳转页面组件) 只需要在routes数字中写对象即可
const routes = [
{
path: '/',
name: 'index',
component: Index
}, path: '/home',
name: 'home',
component: Home
}
] # 2 点击跳转路由两种方式
-js控制
this.$router.push('路径')
-标签控制
<router-link to="/home">
<button>点我跳转到home页面</button>
</router-link> # 3 路由跳转,携带数据的两种方式
-1 /course/?pk=1 带在路径中使用 ? 携带
-2 /course/1/ 路径中分割的 -1 第一种方式:/course/?pk=1
this.$route.query.pk
-2 第二种方式:/course/1/
- router/index中路径得改
{
path: '/login/:id',
name: 'login',
component: Login
},
-this.$route.params.id # 4 区分this.$route this.$router
this.$router # new VueRouter对象 实例 可以实现路由的跳转
this.$route # 是当前路由对象 内部有传入的参数 # 5 两种跳转方式,使用对象方式
-this.$router.push({
name: 'login',
// query: {
// name: 'lqz',
// age: 19
// },
params: {
id: 88
}
}) # 这里可以写个对象 -标签形式跳转,传对象形式
<router-link :to="{name: 'login', query: {name: 'lqz'}, params: {id: 999}}">
<button>点我跳转到home页面</button>
</router-link> # 6 路由守卫---> 类似于验证 全局守卫
-前置路由守卫:在进路由前,执行代码
-后置路由守卫:路由跳转走,执行代码 如何用:router/index.js 加入 // 全局前置路由守卫---> 任意路由跳转都会触发它的执行
router.beforeResolve((to, from, next) => {
// to是去哪 哪个路由对象
// from 是来自哪 是哪个路由对象
// next 是函数 如果加括号执行 就会真正的过去
// console.log('前置路由守卫' , to, from, next)
// next() // 真正跳转到 要去的路径,没有执行到这一步就会被拦截,不会跳转页面
var res = localStorage.getItem('userinfo')
if (to.name == 'login'){
console.log('走了')
next()
}else if(res){
next()
}else {
alert('您没有登录')
// 跳转到login
router.push({name: 'login', params:{id:888}})
}
})

7 vuex

# 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信

# 使用步骤
1 安装 新建store/index.js 2 在index.js中写
export default new Vuex.Store({
state: {
# 放数据
}, mutations: {
# 放方法,正常是让actions中来调用
# 组件也可以直接调用 },
actions: {
# 放方法,正常组件调用
}
}) 3 在组件中
html中:
{{$store.state.变量名}}
js中:
this.$store.state.变量面
改state中的值 4 步骤:组件给主页面传一个需要计算的值---> 主页面中调用点击方法调用actions中的方法this.$store.dispatch('actions中的方法',参数)---> actions中的方法调用 context.commit('mutations',参数)---> 在mutations中直接修改state的值 # 可以跨过任意一步
this.$store.commit()
this.$store.state.变量名

最新文章

  1. JSP导入EXCEL样式
  2. tfs 分支
  3. 《Java中的不可变类》
  4. Android 自动朗读(TTS)
  5. Verilog杂谈
  6. POJ 3421
  7. ListBox控件的操作与实现
  8. 20150706 js之定时器
  9. 最详细的JavaWeb开发基础之java环境搭建(Windows版)
  10. cannot update the cursor rep,since it is read-only
  11. 2018-2019 20165235 网络对抗技术 Exp0:kali的安装
  12. vue中的路由
  13. springboot配置文件(.yml)中自定义属性值并在controller里面获取
  14. /bin/bash^M: bad interpreter: No such file or directory 解决办法
  15. day2_抓包_python基础
  16. 初始Java
  17. db2 解锁表
  18. T-SQL 错误状态
  19. 【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt
  20. Jquery常用正则验证

热门文章

  1. JAVA虚拟机18---方法调用
  2. 【亲妈教学】配置Gzip压缩,含前后端步骤
  3. python_添加中文编码和脚本
  4. 微信小程序自定义导航栏机型适配
  5. 安卓逆向 ARM基础篇
  6. 代码随想录算法训练营day13
  7. ABP微服务学习系列-修复System.Text.Json不支持序列化Exception
  8. AD域
  9. LeetCode-357 统计各位数字都不同的数字个数
  10. Ubuntu命令安装默认支持的Qt5版本