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

Vue学习历程一

一、vue入门简单回顾

1、指令修饰符

@keyup.enter     →  键盘回车监听

v-model.trim         → 去除首尾空格

v-model.number   →转数字

@事件名.stop        →阻止冒泡

@事件名.prevent   →阻止默认行为

2、v-bind的增强

操作class:
<div class="box" :class="{ 类名1: 布尔值, 类名2: 布尔值 }"></div>    //对象形式
<div class="box" :class="[ 类名1, 类名2, 类名3 ]"></div>        //数组形式操作style:
div class="box" :style="{ CSS属性名1: CSS属性值, CSS属性名2: CSS属性值 }"></div>

3、v-model 应用于其他表单元素

<template><div>姓名:<input type="text" v-model="username"> 姓名是:{{username}}<br><br>文本域:<input type="textarea" v-model="textareaValue"> 文本域值是:{{textareaValue}}<br><br>复选框:<input type="checkbox" v-model="isSingle"> 是否单身:{{isSingle}}<br><br>单选框:<input type="radio" v-model="gender" name="sex" value="male"> 男 <input type="radio" v-model="gender" name="sex" value="female"> 女性别是:{{gender}}<br><br>下拉菜单<select v-model="selectId"><option value="13">小米13</option><option value="14">小米14</option><option value="15">小米15</option><option value="16">小米16</option></select>下拉框选中的是:{{selectId}}   </div>
</template><script>
export default {data(){return {username:'',textareaValue:'',isSingle:false,gender:'',selectId:''}}
}
</script><style>
</style>

实现:

4、计算属性computed

对比methods的优势:计算属性会对计算出来的结果缓存,再次使用直接读取缓存,
依赖项变化了,会自动重新计算 → 并再次缓存

4.1 日常使用

computed:{totalAge(){console.log(this.userList)return this.userList.reduce((sum, item)=>sum + item.age,0)}}<p>总年龄:{{totalAge}}</p>

4.2、计算属性完整写法

<template><div><span>{{firstName}} + {{lastName}} = {{fullName}}</span><br><button @click="changeFullName">改名卡</button></div>
</template><script>
export default {data(){return {firstName:'孙',lastName:'悟空'}},methods:{changeFullName(){this.fullName = "猪八戒"}},computed:{// 简写 → 获取,没有配置设置的逻辑// fullName () {//   return this.firstName + this.lastName// }fullName:{get(){return this.firstName + this.lastName},set(newValue){this.firstName=newValue.slice(0,1)this.lastName=newValue.slice(1)}}}
}
</script><style>  
</style>

实现:

点击改名卡后

5、监听watch

<template><div>{{user.name}}<button @click="changeName">点击我改name为kawa1</button></div>
</template><script>
export default {data(){return {user:{id:1,name:'kawa',age:18}}} ,methods:{changeName(){this.user.name="kawa1"}},watch:{user:{deep:true,//深度监视immediate:true,// 立刻执行,一进入页面handler就立刻执行一次handler(newValue){//newValue是改变的新值console.log(newValue.name)//把kawa1打印在控制台上}}}
}
</script><style>  
</style>

6、Vue生命周期的四个阶段

二、组件开发

1、前期准备

使用步骤:需要先安装yarn、npm、nodejs
1. 全局安装 (一次) :yarn global add @vue/cli 或 npm i @vue/cli -g
2. 查看 Vue 版本:vue --version
3. 创建项目架子:vue create project-name(项目名-不能用中文)
4. 启动项目: yarn serve 或 npm run serve(找package.json)

安装高亮插件:Vetur

2、组件相关

2.1组件注册

局部注册:App.vue

<script>
import MySon from './components/MySon.vue'//导入export default {name:'app',data(){return {msg:'kawa'}},components:{//在components注册MySon}
}
</script>

全局注册:main.js

//全局组件注册
import MySon from './components/MySon.vue'
Vue.component('MySon',MySon)

2.2、scoped

默认组件中的style样式会作用到全局,可以给组件加上 scoped 属性, 可以让样式只作用于当前组件

<style scoped>  
</style>

2.3、ref和$refs

特点:查找范围是当前组件内

2.3.1 获取dom组件

2.3.1 获取组件实例

2.4、$nextTick

等DOM更新后,才会触发此方法里面的函数体

3、组件通信

3.1、父传子 

父组件通过 props 将数据传递给子组件

3.2、子传父

子组件利用 $emit 通知父组件修改更新

4、自定义指令

4.1、简单注册

局部注册

全局注册

4.2、自定义指令--指令的值

实现一个color指令,传入不同的颜色,给标签设置文字颜色

5、插槽slot

5.1、默认插槽

外部传了kawa2,内部的slot会被替换掉。界面显示kawa2。但如果App.vue不key kawa2,界面就显示kawa1,kawa1其实是个默认值

5.2、具名插槽

多个slot使用name属性区分名字

template配合v-slot:名字(或#名字)来区分对应标签

5.3、作用域插槽

作用域插槽使用步骤?
(1)给 slot 标签, 以 添加属性的方式传值
(2)所有属性都会被收集到一个对象中
(3)template中, 通过 ` #插槽名= "obj" ` 接收,或者具体的变量比如 ` #插槽名= "{row, msg}" `

三、路由router

1、使用路由步骤

VueRouter 的 使用 (5 + 2)

①下载:下载VueRouter模块到当前工程,版本3.×.×

yarn add vue-router@3.6.5

②③④⑤

import VueRouter from 'vue-router'//2.引入
Vue.user(VueRouter)//3.安装注册
const router = new VueRouter()//4.创建路由对象new Vue({render: h => h(App),router //5.注入,将路由对象注入到new Vue实例中,建立关联
}).$mount('#app')

⑥创建需要的组件(views目录下),在main.js中配置路由规则

import MyFriend from './views/MyFriend.vue'const router = new VueRouter({routes:[{path:'/myfriend',component:MyFriend}]
})

⑦配置导航,配置路由出口(App.vue)

<template><div class="App">   <a href="#/myfriend">我的朋友们</a>  <div><!-- 路由出口 → 匹配的组件所展示的位置 --><router-view></router-view></div>   </div> 
</template>

界面呈现,点击我的朋友们后

注意:views和components文件夹的区别?

范围大的组件放在views,具体组件放在components


http://www.mrgr.cn/news/78321.html

相关文章:

  • 并发编程1.0
  • 活着就好20241128
  • 麒麟系统x86安装达梦数据库
  • linux实战-黑链——玄机靶场
  • 嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点
  • 手机无法连接服务器1302什么意思?
  • 圆域函数的傅里叶变换和傅里叶逆变换
  • Jenkins的使用
  • npm库xss依赖的使用方法和vue3 中Web富文本编辑器 wangeditor 使用xss库解决 XSS 攻击的方法
  • VLLM 格式化LLM输出
  • sed
  • 1、SpringBoo中Mybatis多数据源动态切换
  • Tomcat(36)Tomcat的静态资源缓存
  • docker-compose文件的简介及使用
  • C++虚函数面试题及参考答案
  • 【vue2】封装自定义的日历组件(一)之基础的组件结构
  • Educator头歌:离散数学 - 图论
  • 【机器学习】机器学习的基本分类-监督学习(Supervised Learning)
  • Swift——自动引用计数ARC
  • Javascript Insights: Visualizing Var, Let, And Const In 2024
  • Hbase2.2.7集群部署
  • 【不定长滑动窗口】【灵神题单】【刷题笔记】
  • 【拥抱AI】RAG如何通过分析反馈、识别问题来提高命中率
  • 探索.NET世界的无限可能——带你轻松了解.NET
  • Scala—Map用法详解
  • 图元交互设计