Vue学习笔记-1

Vue的介绍

Vue是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动

Vue的引入

<script src="http://cdn.jsdelivr.net/npm/vue@2"></script>//Vue2
<script src="https://unpkg.com/vue@next"></script>//Vue3

Vue2的使用

Vue的接管

被接管的东西双大括号里的东西会被执行
变量和字符的区别为加不加引号
基本规则不变

  <div id="box">
       {{10+20}}//显示是30
   </div>
   <script>
       new Vue({
           el:"#box"
       })
   </script>

Vue拦截

var obj={

}
var obox=document.getElementById("box")
Obj.defineProperty(obj,"myname",{
	get(){//一旦被引用了就会输出个get
		console.log("get")
	},
	set(value){//一旦被设置(覆盖,重命名,新增)就会输出set
		console.log("set",value)
		obox.innerHTML=value//可以用作实时更新
	}
})

vue3的变化
Object.defineProperty有以下缺点
无法监听es6的Set、Map变化
无法监听Class类型的数据
属性的新家或者删除也无法监听
数组元素的增加和删除也无法监听

模板语法

绑定class的话,前面加个:,“:class名”

<div id="box">
{{myname}}-{{myage}}
	<button @click="handleChange()">change</button>
	</div>
<script>

var vm= new Vue({
    el:"#box",
    data:{
        myname:"kerwin",
        myage:100
    },
    methods:{//方法
        handleChange(){
            console.log("handleChange",this)
            this.myage=18
            this.myname="tiehchui"
        }
    }
})

动态显示隐藏,创建删除

v-show,v-if
v-show:真为显示,假为隐藏
v-if:真为创建,假为删除
区别:v-show是display,v-if是元素是否存在

列表渲染

v-for,列表渲染,遍历

<ul>
	<li v-for="(item,index) in list">
		{{item}}--{{index}}
	</li>
</ul>

简化命令

v-bind=>:src
v-οnclick=>@click

todolist

<div id="box" >
    <input type="text" v-model="mytext">
    <button @click="handleAdd()">add</button>
    <ul v-show="datalist.length">
        <li v-for="(data,index) in datalist">
            {{data}}
            <button @click="handleDel(index)">删除</button>
        </li>
    </ul>
    <div v-show="!datalist.length">代办事项空空如也</div>
</div>
<script>
    var vm= new Vue({
        el:"#box",
        data:{
            datalist:["111","222","333"],
            mytext:"aaaa"
        },
        methods:{
            handleAdd(){
                this.datalist.push(this.mytext)
                this.mytext=""
            },
            handleDel(index){
                this.datalist.splice(index,1)
            }
        }
    })
</script>

v-html

站点上渲染任意的HTML可能会非常危险,因为他很容易导致xss攻击.请只对可信内容使用HTML插值,绝不要对用户提供的内容使用插值

class&style

可以使用class数组来Vue调节属性的显示与隐藏
使用vue加的class是不会加入页面效果的
如果要强行加入的话可以使用Vue.set(对象,属性),Vue2解决时无法监听新增属性而Vue3可以

条件渲染

数组的条件状态码与判断引入
多为v-if,v-else,v-else-if

template

Vue中提供包装调整Vue元素的包装盒,不会真正显示出来
可以防止一些Vue操作而引发的破坏DOM操作或者div标签被破坏无法显示的问题

列表渲染

v-for里的in可以改成of,两种都可以,没有区别
数组值是值加索引值
对象则是属性值+属性名(item,key)

key
跟踪每个节点的身份,从而重用和排序现有元素
理想的key值是每项都有的且唯一的id,手动设置可以减少内部运算甚至减少报错可能

数组更检测
a.使用这些方法操作数组可以被检测到(push(),pop(),shift(),splice(),sort(),reverse())
b.filter(),concat(),slice(),map(),新数组替换旧数组
c.不能检测vm.items[indexOfltem]=new Value(拦截索引值)

模糊查询

change事件是失去焦点且内容发生改变才会触发
所有得使用input事件

事件处理器

监听事件-直接触发代码
方法事件处理器-写函数名,handleClick
内联处理器方法-执行函数表达式handleClick( e v e n t ) , event), event),event事件对象
事件修饰符https://cn.vuejs.org/v2/guide/events.htmlhttps://cn.vuejs.org/v2/guide/events.html

.stop
.prevent
.capture
.self
.once

案件修饰符

.esc
.up
.down
.left
.right
.space
.ctrl
.shift
.delete

表单控件绑定

通过v-model自己的保存,判断真假,从而实现记住用户名

计算属性

计算属性,负责逻辑,放在计算属性中写
难以维护:{{ myname.substring(0,1).toupperCase() + myname.substring(1) }}

computed{myComputedName(){
	return this.myname.substring(0,1).toUpperCase()+this.myname
}}

0.data=>被拦截
1.方法=>事件绑定,逻辑运算.可以不用return ,没有缓存
2.计算属性=>解决模板过重问题,必须有return,有缓存,同步
3.watch=>监听一个值的变化,不用返回值,异步同步

watch
fetch
get
post

组件定义

将DOM,Js,CSS封装在一起

Vue.compoonent("navbar",{
	temple:`<div style="background:red">
		<button>left</button>
		猫眼电影
		<button>right</button>
	</div>`
})

其中的属性值都是隔离的
只能在组件内部中使用

取名:js驼峰,html连接符1-
DOM片段没有代码提示没有高亮显示-vue单文件组件解决
css只能写成行内,-vue单文件组件解决
template包含一个根节点
组件无法直接访问外面的组件状态方法
自定义组件必须是一个函数

父传子

Vue.component("navbar",{
	props:["myname"],
	this.myname
	template:<div>
		<button>left</button>
		<span>{{myname}}</span>
		<button>right</button>
	<div>
})

属性验证,默认属性

props:["myname","myright"],
this.myname
props:{
	myname:String,
	myright:Blooean
}

子传父

Vue.component("navbar",{
	template:`
		<div style="background-color:red;">
			<button @click="handleClick()">点击</button>
		</div>
	`,
	method:{
		handleClick(){
			this.$emit("myevent")
		}
	}
})

时间的函数需要在父组件中定义好

New Vue({
	el:"#box"
	data:{
		isShow:true
	},
	methods:{
		handleEvent(data){
			console.log("父组件定义的事件",data)
			this.isShow=!this.isShow
		}
	}
})

Vue3

Vue3的使用

<script>
	var obj={
		data(){
			return {
				myname:"kerwin"
			}
		},
		methods:{
			
		}
	}
	Vue.creatApp(obj).moint("#box")

class&&style

动态添加可以直接完成,可以被拦截

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优降宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值