一、什么是VUE?
   它是一个构建用户界面的JAVASCRIPt框架
   vue不关心你页面上的是什么标签,它操作的是变量或属性

为什么要使用VUE?

   在前后端分离的时候,后端只返回json数据,再没有render方法,前端发送ajax请求(api=url)得到数据后,要在页面渲染数据,如果你js+css实现就太麻烦了,这时候VUE就出现了。
二、怎么样使用VUE

1)引入vue.js
<script src=vue.js></script>
2) 展示html
<div id="app">
<input type="text" v-model="msg">
<p>{{msg}}</p>
</div>
3)建立vue对象
new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
msg: ""
}
})

三、VUE指令

1.   v-model:实现了数据和视图的双向绑定
 分成了3步:
 1)把元素的值和数据相绑定
 2)当输入内容时,数据同步发生变化,视图  --->数据的驱动
 3)当改变数据时,输入内容也会发生变化,数据--->视图的驱动

<body>
<div id="app">
<input v-model="msg">
<p>{{msg}}</p>
<input type="button" value="变化" @click="change">
</div>
<script>
new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
msg: "aaaaa"
},
methods: {
change: function () {
this.msg = 8888888;
}
} })
</script> </body>

2.  v-on:监听元素事件,并执行相应的操作; @是对v-on的简写

<style>
    ul li{
        list-style: none;
        display: inline-block;
        border: 1px solid cornflowerblue;
        height:40px;
        line-height: 40px;
        width: 120px;
        text-align: center;
    }
</style> <body>
<div id="mybox">
<ul>
<li>
<span v-on:click="qh(true)">二唯码登录</span>
</li>
<li>
<span v-on:click="qh(false)">邮箱登录</span>
</li>
</ul> <div v-show="temp">
<img src="erma.jpg">
</div>
<div v-show="!temp">
<form action="http://mail.163.com" method="post">
<p><input type="email"></p>
<p><input type="password"></p>
<p><input type="submit" value="登录"></p>
</form>
</div>
</div>
<script>
new Vue({
el: "#mybox",
data: {
temp: true
},
methods: {
qh: function (t) {
this.temp = t
}
}
})
</script>
</body>

补充:display=none 时 如果你的盒子没有宽高,那它就不占位

3.   v-bind:绑定元素的属性来执行相应的操作;    : 是对v-bind的简写

<style>
.bk_1{
background-color: cornflowerblue;
width: 200px;
height: 200px;
}
.bk_2{
background-color: red;
width: 200px;
height: 200px;
}
.bk_3{ border: 5px solid #000;
}
</style> <body>
<div id="app">
<a href="http://www.qq.com" v-bind:title="msg">腾讯</a>
<div :class="bk"></div>
<div :class="bk2"></div> <div :class="{bk_2:temp}">fdjjdjdkdkkeedd</div>
<div :class="[bk2,bk3]">8888888888</div>
</div>
<script>
var vm = new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
msg: "我想去腾讯公司上班",
bk:"bk_1",
bk2:"bk_2",
bk3:"bk_3",
temp: false
}
})
</script>
</body>

4.    v-for:根据变量的值来循环渲染元素

<body>
<div id="app">
<ul>
<li v-for="(item,index2) in arr">
{{item}}: {{index2}}
</li>
</ul> <ul>
<li v-for="(item,key,index) in obj">
{{item}}: {{key}}:{{index}}
</li>
</ul>
<ul>
<li v-for="item in obj2">
{{item.username}}
{{item.age}}
{{item.sex}}
</li>
</ul> <div v-for="i in 8">
{{i}}
</div> <input type="button" value="点我吧!" @click="show()"> <a :href="url">我想去百度</a> </div>
<script>
new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
arr: [11,22,3344,55],
obj: {a:"张三",b:"李四",c:"王大拿",d:"谢大脚"},
obj2:[
{username: "jason"},
{age: 20},
{sex: "male"}
],
str: "我来了",
url: "http://www.qq.com"
},
methods: {
show: function () {
this.arr.pop();
}
}
}) </script> </body>

5.   v-if / show

v-if: 根据表达式的真假值来动态插入和移除元素
v-show:根据表达式的真假值来隐藏和显示元素

<body>
<div id="app">
<p v-if="pick">我是刘德华</p>
<p v-else>我是张学友</p> <p v-show="temp">我是赵本山</p> <p v-show="ok">你喜欢我吗?</p> </div>
<script>
var vm = new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
pick: false,
temp: true,
ok: true
}
}) window.setInterval(function(){
vm.ok = !vm.ok;
},1000) </script> </body>

6.   v-html:在元素中不仅可以插入文本,还可以插入标签

<body>
<div id="app">
<ul>
<li>
<input type="checkbox">苹果
</li>
<li>
<input type="checkbox">香蕉
</li>
<li>
<input type="checkbox">香梨
</li>
<li>
<input type="checkbox" v-on:click="create()">其它
</li>
<li v-html="htmlstr" v-show="test">
</li>
</ul>
</div>
<script>
var vm = new Vue({
el: "app", //表示在当前这个元素内开始使用VUE
data:{
htmlstr: "<textarea></textarea>",
test: false
},
methods: {
create: function () {
this.test = !this.test;
}
}
})
</script>
</body>

7.    模板对象

<body>
<div id="app">
<p>{{msg}}</p>
<p>{{80+2}}</p>
<p>{{20>30}}</p>
{{msg}}
我是:<h1 v-text="msg">{{str}}</h1>
你是:<h1 v-text="msg">2222222222222</h1> <h2 v-html="hd"></h2>
<h2 v-html="str"></h2>
</div>
<script>
new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
msg: "我是老大",
hd: "<input type='button' value='你是小三'>",
str: "我要发财!"
}
})
</script>
</body>

8.    计算属性

<body>
<div id="app">
<p>{{msg}}</p>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
temp: 1001
},
computed: {
msg: function () { if(this.temp > 1000){
return parseInt(this.temp/10)-1
} else {
return this.temp-1
}
}
}
}) </script>
</body>

9.    小综合练习

 对数组的操作:
push 数组中最后添加一个值
pop    数组中删除最后一个值
shift   删除数组头一个元素
unshift  向开头添加一个或多个元素
splice  删除其中一个对象
reverse  反转
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
ul li{
list-style: none;
}
</style>
</head>
<body>
<div id="app">
<div>
<input type="text" placeholder="姓名" v-model="username">
<input type="text" placeholder="年龄" v-model="age">
<input type="button" value="增加" @click="add">
</div>
<div>
<table cellpadding="" border="">
<tr v-for="(item,index) in arr">
<td><input type="text" class="txt" v-model="item.username"> </td>
<td>{{item.age}}</td>
<td>{{index}}</td>
<td><input type="text" class="txt"></td> <td><input type="button" value="删除" @click="del(index)"></td>
</tr>
</table>
</div>
</div>
<script>
new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{
username: "",
age: "",
arr: []
},
methods: {
add: function () {
this.arr.push({username:this.username,age: this.age});
console.log(this.arr);
},
del: function (index) {
this.arr.splice(index,1);
}
} }) </script> </body>
</html>

10.   自定义指令:相关网址   https://cn.vuejs.org/v2/guide/custom-directive.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
ul li{
list-style: none;
}
</style>
</head>
<body>
<div id="app">
<input type="text" v-focus>
</div>
<script>
new Vue({
el: "#app", //表示在当前这个元素内开始使用VUE
data:{ },
directives: {
focus: { //指令的名字
//当被绑定的元素插入到 DOM 中时
inserted: function (tt) {
tt.focus();
tt.style.backgroundColor = "blue";
tt.style.color = "#fff"
}
}
} }) </script> </body>
</html>

前端VUE框架的更多相关文章

  1. 前端vue框架 脚手架

    1.安装node.js最新版本2.cmd下输入 1.node -v得到版本号检测是否安装成功 版本号要在6.9以上 2.npm -v 版本号要在3.10以上3.安装脚手架 1.npm install ...

  2. 前端--vue框架

    1.下载 查看已安装好的版本 -------渐进式的JS框架--------- vue是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架 ...

  3. ABP实践(4)-abp前端vue框架之简单商品增删改查(帮助刚入门的新手快速了解怎么才能加入自己的功能并运行起来)

    提示:如有不明白的地方请先查看前3篇ABP实践系列的文章 1,下载及启动abp项目前后端分离(netcore+vue) 2,修改abp数据库为mysql 3,商品系列api接口(本文主要依赖在这个商品 ...

  4. 前端vue框架 路由的安装及使用

    安装: 1.cmd下输入: npm install vue-router --save //安装路由 2.npm run dev //重新启动 使用: 1.在mian.js下引入路由 import V ...

  5. 前端Vue框架-vuex状态管理详解

    新人报道!多多关照-多提宝贵意见 谢谢- vuex理解 采用集中式存储管理模式.用来管理组件的状态,并以自定义规则去观测实时监听值得变化. 状态模式管理理解 属性 理解 state 驱动应用的数据源 ...

  6. 前端vue框架 父组件与子组件之间的相互调用

    子组件调用父组件东西: 1.在父组件与子组件契合的标签的的template模板中绑定 v-bind:自定义一个名字=“要调用的名字” 2.在子组件的script中props:["自定义的名字 ...

  7. 前端VUE框架-es6

    EMCAScript 6 又叫 es2015 1.常量和变量 常量: const a = "hello" 常量不能修改和重复定义 变量: let:定义一个块级作用域的变量 需要先定 ...

  8. Vue 浅谈前端js框架vue

    Vue Vue近几年来特别的受关注,三年前的时候angularJS霸占前端JS框架市场很长时间,接着react框架横空出世,因为它有一个特性是虚拟DOM,从性能上碾轧angularJS,这个时候,vu ...

  9. 前端mv框架下(目前写的是vue),对组件抽象的思考

    前沿: 抽象是门大学问.前端mv框架中,以组件化的概念为主.经常会考虑抽象到组件级别,进行复用.合理的抽象,能提高效率,减少业务逻辑视图的耦合程度.不合理的抽象,则会增加代码的复杂程度. 遇到的问题 ...

随机推荐

  1. 题解——Codeforces Round #508 (Div. 2) T2 (构造)

    按照题意构造集合即可 注意无解情况的判断 #include <cstdio> #include <algorithm> #include <cstring> #in ...

  2. 题解——HDU 4734 F(x) (数位DP)

    这道题还是关于数位DP的板子题 数位DP有一个显著的特征,就是求的东西大概率与输入关系不大,理论上一般都是数的构成规律 然后这题就是算一个\( F(A) \)的公式值,然后求\( \left [ 0 ...

  3. (转载)C#工具箱Menustrip控件中分割线的设置方法

    最近编C#程序,因为初学,不是太清楚,碰到了toolstripMenu中分割线设置的问题.遍寻中文网页,都是语言不详的,甚是呕人. 上网找了个外文网站,给的答案甚是详细,先贴在下面. http://w ...

  4. System.ServiceProcess与System.Configuration.Install命名空间的介绍

    System.ServiceProcess 命名空间提供用于实现.安装和控制 Windows 服务应用程序的类.服务是长期运行的可执行文件,其运行没有用户界面 System.ServiceProces ...

  5. usart2 重映射

    今天拾起闲置很久的灰机,测试发现nrf2401坏掉,重新淘宝.还发现机上搭载的usart1坏掉,换成usart2,发现端口被电机占用,重映射到PD5,PD6 关键是后面两句不要忘记了 RCC_APB1 ...

  6. Execl矩阵如何转化成Pajek的net文件

    在科研中我们有时会把把execl矩阵利用Ucinet.Pajek等可视化软件进行画图,而想要把execl矩阵转化为 Pajek可识别的文件-->net文件令很多初学者头疼不已,本文将做详细介绍. ...

  7. 实现一个简单的flux

    前言 众所周知,React跟Flux是一对好基友. 其中,市场流行的Flux有Redux,Mobx,Reflux. 其中,用法最简单的是Reflux. 其数据流思路如下: +---------+ +- ...

  8. 【BZOJ】3143: [Hnoi2013]游走

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3143 显然如果一条边期望被走过的次数越多,我们就应该给它的编号越小. 所以问题变为如何求每 ...

  9. 关于python的基础知识

    一,编程语言的类型: 1.编译型 2.解释型 3.静态语言 4.动态语言 5.强类型定义语言 6.弱类型定义语言 编译型vs解释型 编译型: 优点:编译器一般会有预编译的过程对代码进行优化.因为编译只 ...

  10. 深入JVM对象引用

    在jdk 1.2以前,创建的对象只有处在可触及(reachaable)状态下,才能被程序所以使用,垃圾回收器一旦发现无用对象,便会对其进行回收.但是,在某些情况下,我们希望有些对象不需要立刻回收或者说 ...