vue.js 基础复习

vue基础复习

1.vue简介

	1.JavaScript框架

​	2.用于构建用户界面的**渐进式框架**(自底向上逐层应用)

​	3.简化DOM操作

​	4.响应式数据驱动

​	5.第三方库:网络通信(axios(实现ajax))、页面跳转(router)、状态管理(vuex)

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:下面为HTML和js的一般写法。

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

el: 挂载
可以使用 id class 和普通元素选择器,但是推荐使用 id 。因为id不像class和元素选择器有其他的样式修饰,所以 id 可以唯一标识,这样可以明确vue的作用域。

data:数据对象

1.vue中用到的数据定义到data中 。
2.data可以写复杂数据类型。
3.在渲染复杂数据类型时,遵守js语法。

vue 指令

1.内容绑定。事件绑定
v-text (标签文本值(textContent)innerText)
v-html  (innerHTML)
v-on 基础( :clic=" "     ,@clic="    " )

2.显示切换,属性绑定
v-show   (通过 true或false   来替换显示状态(操纵的是样式(display)))
v-if   ((操纵的是DOM))
v-bind   (设置元素属性:src,title,class)(:title=' ' ,鼠标悬停显示title='    '内容 )

3.列表循环、表单绑定
v-for
v-on 补充
v-model (双向数据绑定)

MVVM模式

M:model 数据模型
V:视图模板
VM:视图模型
VM层是中间层,连接数据模型和视图模板,由Vue实现。由vm代替以前的dom操作,只操作vm层

Vue实例

数据绑定  (data)
计算属性与侦听器(computed)(watch)
属性绑定   v-on   v-bind
条件渲染 v-if v-show
列表渲染 v-for
过滤器  filers
组件  components
绑定事件 事件修饰符 表单
<!DOCTYPE html>
<html>
<head>
	<title>Vue</title>
</head>
<body>

	<div id="demo">
		{{name}}   <!-- 数据绑定 -->
		{{changeName}}     <!-- 绑定计算属性的changeName -->
		<!-- 通过v-bind:命令绑定属性名 -->
		<!-- 其中class和style比较特殊,要使用数组形式:v-bind:class="[class1]" -->
		<!-- 也可以通过对象的形式:v-bind:class="{class1:classBoolean}",其中class1是class名,而classBoolean才是绑定的变量,为true时才将class1绑定上  (实现添加或删除class) -->
		<span v-bind:data="message" v-bind:id="id">{{name}}</span>
		<!-- v-show 控制节点显示或隐藏,ifshow是绑定的数据,为true时显示,false时内部设为display:none -->
		<!-- v-if也是控制节点显示隐藏,但v-if为false时,是删除节点 -->
		<!-- 频繁切换时,考虑重拍重绘,v-if会更浪费性能 -->
		<div v-show='ifshow'>条件渲染演示</div>
		<!-- items是一个数组,会被v-for遍历,item就是遍历的结果 -->
		<span v-for="item in items">{{item.title}}</span>
		<!-- v-on绑定事件,click为事件名,click1为回调函数,写在methods内 -->
		<button v-on:click="click1">点击</button>
		<!-- 事件修饰符,在事件的回调函数后添加一个.enter,代表只有按下回车键才会触发该事件 -->
		<input type="text" name="" v-on:keyup.enter="keyup1">
		表单,初始化时,会将value的值默认填入input框
		<input type="text" name="" v-model="value">

	</div>		

	<script type="text/javascript" src="https://vuejs.org/js/vue.js"></script>
	<script type="text/javascript">
		//在vue当中,需要一个dom节点挂载Vue,并且vue语法只在此节点内生效
		var vm = new Vue({
			el: "#demo",   // el对应dom节点的id,就把Vue挂载在了dom节点上了
			data:{   // 数据绑定   所有数据都会绑定到实例vm上
				name:"tanjw",
				message : 123,
				id:"demo1",
				ifshow:false,
				items:[{
					title:"18"
				},{
					title:"20"
				}],
				value:123
			},
			//  当name变化时,就会在computed内找一些相关属性
			computed:{  //   计算属性,内部写一些函数
				changeName: function(){  //  当通过控制台改变vm实例name时,changName也会随着变化,监控name的变化
					return "my name is " + this.name;
				}
			},
			methods:{
			// 专门处理异步回调函数
				click1:function(){
					console.log(this);
				},
				keyup1:function(){
					console.log(this.value);
		})
	</script>
</body>
</html>

methods
其中使用到的各种事件方法都写在methods中。

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },methods:{
  
  }
})

模板 templata

1.html模板
2.字符串模板
3.render函数

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>

	<div id="demo">
		{{message}}
		<!-- 双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,需要使用 v-html 指令: -->
		<div v-html="message"></div>  <!-- 这是两层div -->
		<!-- 当使用message时,{{id}}并没有被当做一个绑定数据,而是一个字符串,这就是v-html模板的不足 -->
		<div v-html="message1"></div>  <!-- 这是两层div -->
		<!-- 为弥补次不足,Vue又引入了字符串模板,写在template中 -->
		<!-- 但template的内容会覆盖掉整个被挂载的div -->
	</div>
	
	<!-- 一般会把template单独拿出来,如下 -->
	<script type="x/template" id="template1">
		<div>hello Vue{{id}}</div>
	</script>

	<script type="text/javascript" src="https://vuejs.org/js/vue.js"></script>
	<script type="text/javascript">
		 var vm = new Vue({
		 	el:"#demo",
		 	data:{
		 		message:"<div>hello Vue</div>",  //当绑定的数据是一个节点时,在浏览器并没有被解析成为一个节点,而是一个字符串
		 		//  显而易见,我希望<div>hello Vue</div>要被解析成为一个节点
		 		message1:"<div>hello Vue{{id}}</div>",
		 		id:"true"    
		 	},
		 	template:"#template1",
		 	//  render()函数模板,创建一个虚拟节点
		 	render(creatElement){
		 		var dom = creatElement("",{},[]);
		 		// 或者写成
		 		creatElement("div",{  
		 			attrs:{id:"1"},  
		 			class:{     // class特殊,所以单独拿出来写
		 				vue1:true
		 			},
		 			domProps:{   // 会覆盖掉第三位的[]参数,优先级最高
		 				innerHTML:"任意"
		 			}
		 		},["任意"]);
		 		return dom;     //return dom 就相当于调用了render函数,会将此节点渲染到页面
		 		//  不管以何种方式底层都是调用了render函数
		 		// 但直接使用虽然会增加性能,但无法使用v-if v-for等指令,但可以通过原生JavaScript的if-else和map重写render函数
		 	} 
		 });
	</script>
</body>
</html>

参考文献:https://blog.csdn.net/qq_39403733/article/details/89741946?biz_id=102&utm_term=vue&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-89741946&spm=1018.2118.3001.4187

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

洛心尘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值