Vue学习笔记(一) P1~P12

hello, Vue.js!

<div id="app">
	<h2>{{message}}</h2>
</div>

<script>
	const vm = new Vue({
		el: "#app",
		data: {
			message: "hello world!",
		}
	})
</script>

在这里插入图片描述
注:

  1. 了解const let var 三者的区别
    const vm …
    let vm …
    var vm …
  2. el 根据 id [app]绑定元素 div
  3. data 填充数据, 如message
  4. {{ }} 可以直接使用 Vue里的变量

v-for 遍历

<body>
	<div id="app">
		<h2>{{message}}</h2>
		<h3>{{movies}}</h3>
		<ul>
			<li v-for="item in movies">{{item}}</li>
		</ul>
	</div>
</body>

<script>
	const vm = new Vue({
		el: "#app",
		data: {
			message: "hello world!",
			movies: ['柯南', '星际穿越', '大话西游', '盗梦空间']
		}
	})
</script>

在这里插入图片描述
注:

  1. v-for 就是一个遍历
  2. data 中不仅可以写普通的字段,还可以是数组

案例:计数器

<body>
	<div id="app">
		<h2>当前计数: {{counter}}</h2>
		<!-- <button v-on:click="counter++">+</button> -->
		<!-- <button @click="counter--">-</button> -->
		<button v-on:click="add">+</button>
		<button @click="sub">-</button>
	</div>
</body>

<script>
	const vm = new Vue({
		el: "#app",
		data: {
			counter: 0
		},
		methods: {
			add: function() {
				console.log("add ++");
				this.counter++;
			},
			sub: function() {
				console.log("sub --");
				this.counter--;
			}
		}
	})
</script>

在这里插入图片描述
在这里插入图片描述
注:

  1. v-on:click 简写为 @click,代码中注释部分也是可以使用的,只是没有log而已
  2. v-on:click 可以直接写变量(counter++) ,也可以直接写函数(add)
  3. methods 可以写多个函数
  4. this. 可以直接调用data中的数据字段, 这里使用了proxy代理的技术才能调用到
    例如,我们使用obj, this也能直接使用counter
<script>
	const obj = {
		counter: 0
	}
	
	const vm = new Vue({
		el: "#app",
		data: obj,
		methods: {
			add: function() {
				console.log("add ++");
				this.counter++;
			},
			sub: function() {
				console.log("sub --");
				this.counter--;
			}
		}
	})
</script>

MVVM

在这里插入图片描述
MVVM: Model View ViewModel
Model <=> ViewModel <=> View

Model >> JavaScript: Objects(data)
View >> DOM
ViewModel >> Vue

根据上面的案例计数器来看MVVM
在这里插入图片描述

Vue的options选项

1. el

// 1
el: "#app"
// 2
el: document.querySelector("#app")
// 也可以写成,两者都可以,但前者更简洁

2. data

3. functions

可以定义多个函数
在JS中有老师解释说, 在类或对象中定义的叫方法,其它的叫函数,这个观点对于我C++过来的人不赞成这个观点

Vue的生命周期

Vue生命周期图示
在这里插入图片描述

<script>
	const obj = {
		counter: 0
	}

	const vm = new Vue({
		// el: "#app",
		el: document.querySelector("#app"),	
		data: obj,
		methods: {
			add: function() {
				console.log("add ++");
				this.counter++;
			}
		},
		beforeCreate:function(){
				console.log("beforeCreated...");
		},
		created: function() {
			console.log("created...");
		},
		mounted: function() {
			console.log("mounted...");
		}
	})
</script>

在这里插入图片描述
注:

  1. created: 一般网络请求数据,然后将请求到的数据放到data中,data会将数据展示在我们的页面中
  2. 上面生命周期图流程中的红色方法都是可以调用,其代表每个阶段的完成前与完成后

模板

待补


Mustache

mustache不仅可以直接写变量, 也可以直接写简单的表达式

<div id="app">
	<h2>{{message}}</h2>
	<h2>{{message}}, 李银河!</h2>
	<h2>{{firstname + lastname}}</h2>
	<h2>{{firstname + ' ' + lastname}}</h2>
	<h2>{{firstname}} {{lastname}}</h2>
	<h2>{{counter * 2}}</h2>
</div>

<script src="js/vue.js"></script>
<script>
	const vm = new Vue({
		el: "#app",
		data: {
			message: "你好啊",
			firstname: "Kobe",
			lastname: "bryant",
			counter: 100
		}
	})
</script>

在这里插入图片描述

如果表达式太长,可以移到 Vue的计算属性 computed: 中计算,如下例:

<div id="app">
  <p>原始字符串: {{ message }}</p>
  <p>计算后反转字符串: {{ reversedMessage }}</p>
</div>
 
<script>
var vm = new Vue({
  el: '#app',
  data: {
    message: 'Runoob!'
  },
  computed: {
    // 计算属性的 getter
    reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  }
})
</script>

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值