前端框架

Vue.js2.5  2018-05-12

Vue官网:https://cn.vuejs.org/

基础语法+案例实践+TodoList+Vue-cli构建工具+TodoList

Vue基础语法

创建Vue实例

下载后直接在<head>中<script >引入

<head>
<meta charset="UTF-8">
<title>Vue 入门</title>
<script src="./vue.js"></script>
</head>

引用CDN:

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

挂载点、模板与实例

挂载点:指页面标签,挂载Vue

模板:挂载点下的内容

实例:JavaScript中new Vue()实例对象

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue 入门</title>
<script src="./vue.js"></script>
</head>
<body>
<!--挂载点、模板、实例之间的关系
div为挂载点,通过ID绑定
模板可以写到挂载点内部和实例中-->
<div id="root">{{msg}}
<!--挂载点内部的内容为模板-->
<p>这里是挂载点内部的模板{{temMsg}}</p>
</div>
<script>
// vue实例
new Vue({
//指定实例的挂载点,Vue去接管哪个元素内容,绑定DOM节点
el: "#root",
// 模板也可以写到实例中,但是这样挂载点中的内容就不会被显示
template:'<i>这里是实例中的模板{{temMsg}}</i>',
// 数据内容
data: {
msg: "hello world",
temMsg:"template"
}
});
</script>
</body>
</html>

    

Vue实例中的数据

数据对象: data

页面引用实例中的数据:

{{}}、v-text、v-html
<body>
<div id="root">
<!--{{}}为插值表达式语法
v-text:Vue中的指令,只能输出文本,会转义
v-html:Vue中的指令,可以输出标签,不会转义
-->
<ul>
<li>{{msg}}</li>
<li v-text="vText"></li>
<li v-html="vHtml"></li>
<li v-text="content"></li>
<li v-html="content"></li>
</ul>
</div>
<script>
// vue实例
new Vue({
el: "#root",
data: {
msg: "{{}}双括号插值表达式",
vText: "v-text是Vue指令",
vHtml:"v-html是Vue指令",
content:"<i>测试v-text和v-html之间的不同</i>"
}
});
</script>
</body> 

    

Vue中的事件和方法

给元素绑定事件 v-on:也可以简写为@

函数对象:methods

Vue的特点:面向数据编程,不需要操作DOM,数据改变,页面改变

<body>
<div id="root">
<!--
v-on:Vue绑定事件,
改变挂载点中的内容不要操作DOM,应该修改实例中的数据
-->
<ul>
<li v-on:click="()=>{alert('绑定了点击事件 v-on:click')}">{{msg}}:箭头函数有问题</li>
<li v-on:click="handleClick">{{msg}}:引用实例中methods对象下的方法</li>
<li @click="changeData">{{changeMsg}}</li>
</ul>
</div>
<script>
// vue实例
new Vue({
el: "#root",
data: {
msg: "v-on:click 点击事件",
changeMsg: "点击改变内容"
},
methods: {
handleClick: function () {
alert("绑定了点击事件 v-on:click")
},
changeData: function () {
// this指向data 修改数据
this.changeMsg="内容被改变";
}
}
})
;
</script>
</body>

   

属性绑定

属性绑定 v-bind:title='变量名',可以写成 :title='变量名',模板指令
变量名是Vue数据data对象的一个属性,
=号后面是一个js表达式,可以='输入汉字+title'

<div id="root">
<ul>
<li title="title 的名字">鼠标移动过来显示</li>
<li v-bind:title="title">属性绑定</li>
<!-- =号后边为js表达式 title 是变量-->
<li :title="'这是一个'+ title">属性绑定</li>
</ul>
</div>
<script>
// vue实例
new Vue({
el: "#root",
data: {
title: "实例中的数据"
}
})
</script>

    

双向数据绑定

单向绑定:数据决定页面的显示,页面无法决定数据中的内容

双向绑定:模板指令v-model,页面和数据内容任何一个改变,另一个也改变

<div id="root">
<ul>
<li><input :value="content"/></li>
<li><input v-model="content"/></li>
<li>{{content}}</li>
</ul>
</div>
<script>
// vue实例
new Vue({
el: "#root",
data: {
content: "this is content!"
}
})
</script>

      

计算属性与侦听器

computed对象中的属性由其它属性计算而来,

其它依赖属性没有变化会使用缓存值,不重新计算

watch:侦听器对象;监听数据变化,数据被改变则触发

<div id="root">
<ul>
<li>姓:<input v-model="firstName"/></li>
<li>名:<input v-model="lastName"/></li>
<li>{{firstName}}{{lastName}}</li>
<li>fullName 属性计算:{{fullName}}</li>
<li>侦听姓名修改次数:{{count}}</li>
<li>侦听fullName数据变化:{{fullCount}}</li>
</ul>
</div>
<script>
// vue实例
new Vue({
el: "#root",
data: {
firstName: "",
lastName: "",
count: 0,
fullCount: 0
},
// 计算属性:由其它属性计算而来
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName;
}
},
// 侦听器:监听数据变化
watch: {
// 侦听数据属性
firstName: function () {
this.count++;
},
lastName: function () {
this.count++;
},
// 侦听计算属性
fullName: function () {
return this.fullCount++;
}
}
})
</script>

  

v-if、v-show、v-for指令

v-if:控制DOM的存在与否,false直接删除DOM

v-show:控制DOM的显示与否,隐藏标签DOM

v-for:遍历数据,循环展示数据,增加 :key=‘item’ 提升效率,但是key值不能相同

<div id="root">
<ul>
<li><p v-if="show">hello world</p></li>
<li><p v-show="show">hello world</p></li>
<li>
<button @click="handleClick">toggle</button>
</li>
</ul>
<ul>
<li v-for="item of list">{{item}}</li>
</ul>
<ul>
<li v-for="(item,index) of list" :key="index">{{item}}</li>
</ul>
</div>
<script>
// vue实例
new Vue({
el: "#root",
data: {
show: true,
list: [1, 2, 3]
},
methods: {
handleClick: function () {
this.show = !this.show;
}
}
})
</script>

    


参考菜鸟驿站《Vue.js 入门教程》:http://www.runoob.com/w3cnote/vue-js-quickstart.html

01慕课网《vue.js2.5入门》——基础知识的更多相关文章

  1. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  2. Vue 2.0入门基础知识之全局API

    3.全局API 3-1. Vue.directive 自定义指令 Vue.directive用于自定义全局的指令 实例如下: <body> <div id="app&quo ...

  3. Vue 2.0入门基础知识之内部指令

    1.Vue.js介绍 当前前端三大主流框架:Angular.React.Vue.React前段时间由于许可证风波,使得Vue的热度蹭蹭地上升.另外,Vue友好的API文档更是一大特色.Vue.js是一 ...

  4. 04慕课网《vue.js2.5入门》——Vue-cli开发todolist

    主要文件目录: 文件代码: 根实例,初始化vue: <!--index.html,网站入口页面,和main.jsp组成一套.vue文件,包含--> <!DOCTYPE html> ...

  5. 10慕课网《进击Node.js基础(一)》初识promise

    首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...

  6. 07慕课网《进击Node.js基础(一)》HTTP小爬虫

    获取HTML页面 var http = require('http') var url='http://www.imooc.com/learn/348' http.get(url,function(r ...

  7. USB入门基础知识(转)

    源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...

  8. Linux入门基础知识

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...

  9. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  10. Greenplum入门——基础知识、安装、常用函数

    Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709    版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...

随机推荐

  1. vue---class和style的基本用法

    不多BB了 直接上代码了 通俗移动易懂总结了5种常用改变样式 的形式 <style> .actived2{ color:red; } </style> </head> ...

  2. html-html简介

    一.什么是HTML? HypeText Markup Language:超文本标记语言,网页语言 超文本:超出文本的范畴,使用HTML可以轻松实现这样的操作 标记:HTML所有的操作都是通过标记实现的 ...

  3. 动态链接库 —— Dll 基础

    1. DLL 的初识 在 windows 中,动态链接库是不可缺少的一部分,windows 应用程序程序接口提供的所有函数都包含在 DLL 中,其中有三个非常重要的系统 DLL 文件,分别为 Kern ...

  4. Centos7.5搭建Hadoop2.8.5完全分布式集群部署

    一.基础环境设置 1. 准备4台客户机(VMware虚拟机) 系统版本:Centos7.5 节点配置: 192.168.208.128 --Master 192.168.208.129 --Slave ...

  5. linux几个重要的组合键

    我们在用Windows系统时,有没有感觉快键键让我们工作更有效率,在Linux系统中仍有很好用的快捷键,这些快捷键可以辅助我们进行指令的编写与程序的中断呢,下面介绍几个经常用到的快捷键. 一.Tab- ...

  6. pip命令安装

    sudo su #切换root用户sudo apt-get install python-pip #安装pip sudo apt-get remove python-pip  #卸载pippip -- ...

  7. golang基础--Gocurrency并发

    Go并发特点 goroutine只是由官方实现的超级"线程池"而已,每个实例4-5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销. 并发不是并行(多CPU): Concu ...

  8. GD32F20x系列使用问题总结

    GD单片机近几年越来越火了,既有他自身相比与ST的价格优势,也有支持国货的信仰加成.然而一个新的东西,或者说一个相对较新的东西,在使用的友好性和资料的完整性方面还有很长的路要走. 现将个人使用过程中碰 ...

  9. Linux入门进阶第四天(下)——程序管理(补充内容)

    1.PID 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置. 同一个程序 ...

  10. 2017-2018-1 20155230 《信息安全技术》实验二——Windows口令破解

    2017-2018-1 20155230 <信息安全技术>一.Windows口令破解 1.字典破解 (1)为本机创建新用户.为了达到实验效果,用户口令不要设置得过于复杂,可以选择自己的生日 ...