vue基础入门
<body>
<!-- 在angularJS中用ng-model -->
<!-- {{mseeage?message:11}}支持三元表达式 -->
<!--{{*}} 可以 只绑定一次 视图变化时不进行改变 -->
<!--{{{}}} 绑定html标签 识别html标签 -->
<div class="app">
<input type="text" v-model='message'>
<!-- {{message}} -->
<!-- <br> {{message?message:1}} -->
<br> {{*message}} {{{message}}} </div>
</body>
<script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({ //实例 MVVM
el: ".app",
data: {
// message: "333"
message: "<h1>hello</h1>"
}
})
</script>
<body>
<div id="app">{{message.age}}</div>
<script src="vue1.0.28.js"></script>
<script>
var mess = {
age: 18
}
var vm = new Vue({
el: "#app",
data: {
message: mess
}
})
// vm.message.age = 100;
//我们当前实例vm和mess这个对象指向的是同一内存空间
//在实例创建后挂载以前不存在的属性是不会刷新视图的
console.log(vm.message == mess)
</script>
</body>
<body>
<div id="app">
{{message}}
<input type="text" v-model='message'><br> {{age}}
</div> <script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
message: "aaaa"
}
})
//vm.$el 不能更改绑定数据的元素
console.log(vm.$el == document.getElementById("app")) //vm.$data 就是data对应的这个对象
console.log(vm.$data);
// vm.$data = { age: 200 } //可以直接更改对象指定
// console.log(vm.$data);
//vm.$watch 监听数据变化
vm.$watch('message', function(newValu, oldVlue) {
console.log(newValu, oldVlue)
})
</script>
</body>
构建 new Vue()实例
观察数据 (observe Data)
初始化方法 (Init Events)
没有问题,开始创建,调用 created 方法
没发现有el元素,看是否有vm.$mount(el)方法 (这个方法的作用是就是告诉我们初始化开始,可以挂载数据了)
发现el元素,看是否有模版,开始编译模版
若有模版就替换,若没有模版就直接插进去
编译完成
插入文档中,然后调用ready()方法
调用vm.$destroy()就销毁了
先进行销毁,然后把事件、属性、子组件 去掉
最后销毁掉,完全死亡
<body>
<div id="app">{{message}}</div>
<script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({
data: {
message: "sss"
},
created() {
alert("1:创建实例")
},
beforeCompile() {
alert("2:编译前")
},
compiled() {
alert("3:编译完成")
},
ready() {
alert("4:准备好了")
},
beforeDestroy() {
alert("5:销毁前")
},
destroyed() {
alert("6:销毁了")
}
})
//手动挂载 el
vm.$mount("#app");
//销毁需要调用$destroy
vm.$destroy();
</script>
</body>
<body>
<div id="app">
{{pages}}
<input type="text" v-model="page">
</div>
<script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
page: 1,
num: 2
},
computed: {
pages: function() { //默认的方法是获取
//在vm中所有的this指向的都是当前实例
return this.page * this.num
}
}
})
</script>
</body>
computed 的 set get 方法
<body>
<div id="app">
{{pages}}
<input type="text" v-model="num">
</div>
<script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
page: 1,
num: 2
},
computed: {
pages: {
get() { //默认的方法是获取
//在vm中所有的this指向的都是当前实例
return this.page * this.num
},
set(val) {
//在设置方法去更改data中数据
this.num = val;
}
}
}
}) vm.pages = 9;
</script>
</body>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
[v-cloak] {
display: none;
}
</style>
</head> <body>
<div id="app">
{{message}}
<!-- 在ng中 ng-bind可以解决单个标签闪烁问题 -->
<!-- v-text 只能解决单个闪烁问题 -->
<!-- 在ng中 ng-cloak 可以解决多级数据闪烁问题 -->
<!-- v-cloak 可以解决多级数据闪烁问题 -->
<div v-text="message"></div>
<div v-cloak>
{{message}}
</div>
</div> <script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
message: "涉及到极点拉萨警方立即as啊打算减肥阿道夫啊"
}
})
</script>
</body>
<body>
<div id="app">
<div v-if="false">
我是内容
</div>
<div v-show="false">
我是内容
</div> <!-- template标签是不会被渲染的 解决无意义的空标签问题 template一般配合v-else使用 -->
<!-- 在 v-show上不支持template语法 -->
<template v-if="true">
<div>1</div>
<div>2</div>
</template> <!-- v-else要跟在v-if后面,也可以跟在v-show后面 -->
<div v-else>
如果template中 v-if的条件不成立 就显示 v-else
</div>
</div> <script src="vue1.0.28.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
message: "涉及到极点拉萨警方立即as啊打算减肥阿道夫啊"
}
})
// v-show/v-if的区别
//v-show => ng-show 操作的是样式 (display:none) (一般作用于样式切换)
//v-if => ng-if 操作的是DOM (如果条件不成立 就移除dom了) (一开始知道存在与否,不会去切换的时候用)
//区别:v-if有更高的切换消耗 而v-show有更高的初始渲染消耗
</script>
</body>
<body>
<!-- 在angularjs中,用ng-repeat vue中用 v-for -->
<div id="app">
<template v-for=" (key,m) in datas">
{{$index}}-{{key}}:{{$key}},{{m}}<br/>
</template>
<!-- $index 表示当前第几个 (在vue中 $odd $even $fist $last 都没有 -->
</div>
<script src="https://cdn.bootcss.com/vue/1.0.28/vue.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
datas:{
name:"test",
age:"12"
}
}
})
</script>
</body>
<body>
<div id="app">
<!-- track-by 强制通过索引去遍历 -->
<!-- 如果在数组中取到的值为相同的值 那么需要用到track-by 防止报黄报错 -->
<ul v-for="(key,m) in datas" track-by="$index">
<li>{{key}}:{{$index}}-{{m.name}}:{{m.price}}</li>
<!-- 没有$key -->
</ul>
</div>
<script src="https://cdn.bootcss.com/vue/1.0.28/vue.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
datas:[
{name:"苹果",price:"90"},
{name:"香蕉",price:"91"},
{name:"橘子",price:"92"}
]
}
})
</script>
</body>
<body>
<div id="app">
<div v-for="(key,mess) in datas">
<div>{{$index}}:
{{mess.name}}:{{mess.price}}
<div v-for="mess2 in mess.type">
<!-- 在父级写上索引 儿子可以拿到父亲的索引值 -->
{{key}}:{{mess2}}
</div>
</div>
</div>
</div>
<script src="https://cdn.bootcss.com/vue/1.0.28/vue.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
datas:[
{name:"苹果",price:"90",type:["red","blue"]},
{name:"香蕉",price:"91",type:["black"]},
{name:"橘子",price:"92",type:["pink"]}
]
}
})
</script>
</body>
<body>
<div id="app">
<!-- v-bind绑定动态属性 (把src绑定到v-bind上后,等待数据加载完成,才去渲染数据,不用{{}} ) -->
<!-- 可以直接使用:的方式直接进行绑定 动态去data上的值 -->
<!-- <img v-bind:src="imgUrl" alt="">
<a v-bind:href="href">{{href}}</a> -->
<img :src="imgUrl" alt="">
<a :href="href">{{href}}</a>
</div>
<script src="https://cdn.bootcss.com/vue/1.0.28/vue.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
imgUrl:"https://blog.zachchan.com/wp-content/uploads/2017/12/201711071936012.png",
href:"https://blog.zachchan.com"
}
})
</script>
</body>
<body>
<div id="app">
<!-- v-on 绑定事件 :事件名字 -->
<!-- v-on 执行方法的时候需要传递参数的时候添加(),
如果不需要传递参数就不要写了,如果需要传递参数,我们要手动传递事件源 -->
<!-- 我们可以通过@符号 取代 v-on: --> <!-- <div v-on:click="add(1,$event)">hello Vue</div> -->
<div @click="add(1,$event)">hello Vue</div>
</div>
<script src="https://cdn.bootcss.com/vue/1.0.28/vue.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
imgUrl:"https://blog.zachchan.com/wp-content/uploads/2017/12/201711071936012.png",
href:"https://blog.zachchan.com"
},
methods:{
//我们在vue中把方法都定义在methods对象中
add:function(num,e){
//e是事件源
console.log(num,e)
alert(100)
}
}
})
</script>
</body>
vue基础入门的更多相关文章
- vue基础入门(2.1)
2.vue基础用法 2.1.事件处理 2.1.1.监听事件 使用v-on:事件名称 = '事件处理函数'的形式来监听事件,事件处理函数要写在methods后面的对象中 <!DOCTYPE htm ...
- vue基础入门(4)
4.综合实例 4.1.基于数据驱动的选项卡 4.1.1.需求 需求说明: 1. 被选中的选项按钮颜色成橙色 2. 完成被选中选项下的数据列表渲染 3. 完成选项切换 4.1.2.代码实现 <!D ...
- vue基础入门(3)
3.组件基础 3.1.什么是组件? 3.1.1.理解组件 前端组件化开发是目前非常流行的方式,什么是前端组件化开发呢?就是将页面的某一部分独立出来,将这一部分的数据.视图.以及一些控制逻辑封装到一个组 ...
- vue基础入门(2.3)
2.3.样式绑定 2.3.1.绑定class样式 1.绑定单个class <!DOCTYPE html> <html lang="en"> <head ...
- vue基础入门(2.2)
2.2.基础指令 2.2.1.什么是指令 指令 (Directives) 是带有 v- 前缀的特殊特性,指令特性的值预期是单个 JavaScript 表达式,指令的职责是,当表达式的值改变时,将其产生 ...
- Vue学习笔记-Vue基础入门
此篇文章是本人在学习Vue是做的部分笔记的一个整理,内容不是很全面,希望能对阅读文章的同学有点帮助. 什么是Vue? Vue.js (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式 ...
- Vue基础入门笔记
不是面向DOM进行编程,而是面向数据去编程.当数据发生改变,页面就会随着改变. 属性绑定(v-bind)和双向数据绑定(v-model) 模板指令(v-bind:)后面跟的内容不再是字符串而是: js ...
- vue基础入门(1)
1.vue初体验 1.1.vue简介 1.1.1.vue是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架,什么叫做渐进式呢?通俗的讲就是一层一层的,一步一 ...
- vue 基础入门(一)
app-1 :声明式渲染 app-2 :绑定元素特性 v-bind 特性被称为指令.指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性. app-3 app-4 :条件与循环 app-5 ,ap ...
随机推荐
- Struts1.2,struts2.0原理分析
struts1原理: 1.首先我们表单提交到action 2.进入到web.xml 3.web.xml拦截*.do 4.交给ActionServlet 5.找到path属性,获得url 6.找到nam ...
- win10下Anaconda 2 和 3 共存安装,并切换jupyter notebook和Pycharm中的对应版本
win10下Anaconda 2 和 3 共存安装,并切换jupyter notebook和Pycharm中的对应版本 zoerywzhou@163.com http://www.cnblogs.co ...
- python3.5安装pyHook,解决【TypeError: MouseSwitch() missing 8 required positional arguments: 'msg', 'x', 'y', 'data', 'time', 'hwnd', and 'window_name'】这个错误!
为什么安装 pyHook包:为Windows中的全局鼠标和键盘事件提供回调. Python应用程序为用户输入事件注册事件处理程序,例如鼠标左键,鼠标左键,键盘键等 先要实时获取系统的鼠标位置或者键盘输 ...
- debounce去弹跳
通过返回闭包,来共用timer定时器,通过定时器的清除和设置来实现每次触发后重新计时. /** * * @param fn {Function} 实际要执行的函数 * @param delay {Nu ...
- 小白关于python 对象和内存的关系的一些感悟和疑惑,望大神指教
首先你输入了一个字符串,这个字符串是有大小的,电脑将其放在内存中,自动给其一个起始指针指向这个字符串的首位置,然后,你将这个字符串赋值给一个变量,这个对象又在内存中开辟出一个空间,这个变量会自动连接这 ...
- 项目实战6—Mysql实现企业级日志管理、备份与恢复实战
Mysql实现企业级日志管理.备份与恢复实战 环境背景:随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基.一旦公司的数据错乱或者丢失 ...
- CCF-201412-3-集合竞价
问题描述 试题编号: 201412-3 试题名称: 集合竞价 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定 ...
- 前端chrome浏览器调试
引言 "工欲善其事,必先利其器" 恩,这句话我觉得说的特别有道理,举个例子来说吧,厉害的化妆师都有一套非常专业的刷子,散粉刷负责定妆,眼影刷负责打眼影,各司其职,有了专业的工具才能 ...
- SQL Server Profiler的使用
最近一个项目,使用微软的Entity Framework的ORM框架的项目,部署到现场后,出现了系统缓慢,多个客户端的内存溢出崩溃的问题. 打开了SQL Server Profiler排查,发现有全表 ...
- Solr7.1---数据库导入并建立中文分词器
这里只是告诉你如何导入,生产环境不要这样部署你的solr服务. 首先修改solrConfig.xml文件 备份_default文件夹 修改solrconfig.xml 加入如下内容 官方示例:< ...