VUE学习记录(新结)

之前总结过一次,但是总结的太随便,这次复习基础知识重新好好理一遍!

一、起步内容总结

1.helloworld示例


el:接管区域
data:定义的变量
使用vue 不用再直接操作DOM 
如果想要setTimeout改变页面内容,不用再操作DOM啦 我们只需要把精力放在数据得管理上就好啦

2.开发todolist

todolist是最最最最基础的小功能,这个不会写就完犊子了
</head>
<body>
	<div id="app">
		<input type="text" v-model="inputValue"/>
		<button v-on:click="handleBtnClick">提交</button>
		<ul>
			<li v-for="item in list">{{item}}</li>
		</ul>
	</div>

	<script>
		var app = new Vue({
			el: '#app',
			data: {
				list: [],
				inputValue: ''
			},
			methods: {
				handleBtnClick: function() {
					this.list.push(this.inputValue)
					this.inputValue = ''
				}
			}
		})
	</script>
</body>
</html>
就是个小小的demo 所以就用script标签引入vue就得了
v-for:循环项目
v-on:事件=“xxx”   :绑定事件 指向xxx事件处理程序
v-model=“xxx" :双向绑定 input框发生内容和inputValue绑定后 一个变了 另一个也跟着变
methods:方法 定义函数
注意:当在methods理使用this的时候 this指的是整个app,不过在使用点操作符的时候,会默认先到data里面寻找

3.MVVM

传统的前端设计逻辑是MVP

M 模型 V 视图 P 控制器  核心是控制器 而控制器的主要内容又是进行DOM操作


而MVVM

核心是M层

说白了 MVP面向DOM操作 MVVM则面向数据操作

4.前端组件化

每个组件也都是vue实例
使用组件化思想修改一下todolist
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>TodoList</title>
	<script src="./vue.js"></script>
</head>
<body>

	<div id="root">
		<div>
			<input type="text" v-model="todoValue"/>
			<button @click="handleBtnClick">提交</button>
		</div>
		<ul>
			<todo-item v-bind:content="item" 
				    v-for="item in list">
			</todo-item>
		</ul>
	</div>

	<script>

		// Vue.component("TodoItem", {
		// 	props: ['content'],
		// 	template: "<li>{{content}}</li>",
		// })

		var TodoItem = {
			props: ['content'],
			template: "<li>{{content}}</li>"
		}

		var app = new Vue({
			el: "#root",
			components: {
				TodoItem: TodoItem
			},
			data: {
				todoValue: "",
				list: []
			},
			methods: {
				handleBtnClick: function() {
					this.list.push(this.todoValue)
					this.todoValue = ""
				}
			}
		})
	</script>
</body>
</html>
v-bind:向子组件传入一个绑定值的意思
template:模板 子组件的内容
props:接收父组件传来的值
但组件又分为全局组件和局部组件:
全局组件:
		 Vue.component("TodoItem", {
		 	props: ['content'],
		 	template: "<li>{{content}}</li>",
		 })
局部组件:
var TodoItem = {
            props: ['content'],
            template: "<li>{{content}}</li>"
        }
局部组件还需要在vue实例中注册一下
components: {
                TodoItem: TodoItem
            },
说完了组件
那不得不提组件间传值:
刚刚已经用到了父组件向子组件传值——使用v-bind 传递和props接收
那么如何从子组件向父组件传值呢——
  • 子组件使用 $emit 向外触发自定义事件 并传出参数 this.$emit("delete",this.index) 
  • 父组件使用v-on= 认真聆听 听到事件了 就进行相应的改变

二、VUE基础
vue生命周期函数:

样式绑定:
class对象绑定 也可以使用style
可以通过对象的形式绑定 也可以通过数组的形式绑定

条件渲染:
v-if:决定一个标签是否在页面展示
v-else
v-else-if:要和v-if紧贴在一起使用
v-show:和v-if类似 但是v-show哪怕是false 该标签的dom也在页面上存在

key值:加上key值就是唯一的元素 key值不一样就不会被复用

列表渲染:
可以循环数组和对象
v-for="(item,key,index) of list" 、
可以循环对象或数组 循环数组不用key
可以在循环上带上key值提高性能

只有以下几个方法 ,或者,改变引用对象 才能又改变数组,又改变页面显示:
pop push shift unshift splice sort reverse
如果只使用下标进行修改,则页面不会改变

对象如果也想做这种改动,就需要改动引用
template:可以包裹一些循环元素 但不会被真正的渲染到页面上

set:
Vue.set(vm.userInfo,1,5)
vm.$set(vm.userInfo,2,10)
也可以使用 set方法 改变对象内容 同时改变页面
set是对象的方法 也是实例的方法

事件绑定:
获取点击事件的详情 可以通过 handleClick 或者 handleClick($event)
一些事件修饰符:
prevent stop self (只有在e.target=e.currentTarget) once capture(事件捕获 从外向内)
还有按键修饰符
.enter .tap .esc …………只有按下这些键后才执行
系统修饰符 类似按键修饰符
.ctrl  .meta .shift .alt
鼠标修饰符
@click.right  .left  .middle

表单绑定:
v-model 可以实现双向绑定
<input v-model="value/>
{{value}}
可以绑定文本框 文本域 复选框 单选框 下拉选择菜单(select option)
v-model.lazy 偷懒 过一会 失去焦点以后再双向绑定
v-model.number:输入内容可以被转换为数字 就转换为数字 不然默认的是字符串。
v-model.trim:和ES6中的一样 去掉首位的空格

小结:
实例 new vue
模板语法 
计算属性 避免冗余
样式绑定:class style 通过对象或数组
条件渲染:v-if v-else-if v-else 
列表渲染:v-for
事件处理
表单绑定:v-model

组件部分:
is 属性 <tr is = "row")
在子组件中 定义data时  必须是一个函数 不能直接用data:{  }  需要用 data:function( ) { }
在vue中可以通过 ref 获取dom 节点 this.$refs.refname

父子组件传值:
有单向数据流 子组件只能使用父组件传过来的参数 不能修改 但是可以拷贝一个副本 修改副本
父组件向子组件传值  通过属性传递
子组件向父组件传值 (子组件不能随意修改父组件的值)通过触发事件 向父组件传值

组件参数校验:

给组件绑定原生事件:
@click.native

非父子组件传值:
总线机制/BUS/观察者模式:

vue中使用插槽:<slot> 可以更方便的向子组件传内容 可以给插槽起名字
<slot name="name">
作用域插槽 必须是<template slot-scope="props">

动态组件:<component :is="type">
v-once:只渲染一次

Vue 动画效果:<transition>
本章小结:


xxx.vue的文件就是一个单文件组件
路由就是根据网址不同,返回不同的内容给用户
 <router-view/>显示的是当前路由地址所对应的内容
 <router-view/>
header:
<style lang="stylus" scoped>
通过 设置 scoped 保证该部分的样式只对这个文件起作用





全部评论

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 17:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务