一、VUE 概述

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
注意:Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。

二、Vue.js

Vue.js 就是一个MVVM的实现者,他的核心就是实现了DOM监听与数据绑定。

按照惯例,先来一个 Hello,World!

<html>
<head>
<meta charset="UTF-8">
<title>test01</title>
</head> <body>
<!-- view层 模板 -->
<div id="app"> {{message}} </div> <!-- 1.导入Vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script> <script>
// 创建一个Vue 对象实例
var vm = new Vue({
//viewModel 实现与Model双向绑定,动态更新视图数据
el: "#app", //绑定元素的ID
// Model: 数据
data: {
message: "Hello,World!" // 定义一个名为 message 的属性,并设置了初始值
}
});
</script> </body>
</html>

三、Vue.js基础语法

1.模板语法

在数据绑定时使用的 {{}}(双大括号),即:插值表达式。
代码如下:

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

如果想要输出 html 代码,使用 v-html 。
代码如下:

<div id="app">
<div v-html="message"></div>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
new Vue({
el: "#app",
data: {
message: '<h1>TanYongJun</h1>'
}
});
</script>

html 属性中的值,使用 v-bind 绑定
代码如下:

<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.testClass{
color: red;
}
</style>
</head> <body>
<div id="app">
<div v-bind:class="{'testClass':use}">
<label>v-bind 绑定属性值</label>
</div> <br>
<!--<a v-bind:href="url">v-bind 完整语法 </a>-->
<br>
<!--<a :href="url"> v-bind 简写 </a>-->
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
use:true,
url:'www.baidu.com'
}
});
</script> </body>
</html>

  

Vue.js 支持JavaScript 表达式。代码如下:

<div id="app">
{{5+5}}<br>
{{ ok ? 'YES' : 'NO' }}<br>
{{ message.split('').reverse().join('') }}
<div :id="'list-' + id">测试</div>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
ok: true,
message: 'tanyongjun',
id : 1
}
});
</script>

Vue.js 允许自定义过滤器,用作一些常见的文本格式化。
代码如下:

 <div id="app">
<!-- 对输入的字符串第一个字母转为大写 --> <!-- 过滤器 在两个大括号中使用 -->
{{ message | capitalize }} <!-- 过滤器 在 v-bind 指令中使用 -->
<!--<div v-bind:id="rawId | formatId"></div> -->
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
message: 'tanyongjun'
},
filters:{
capitalize:function(value){
if(!value) return '';
value = value.toString();
return value.charAt(0).toUpperCase() + value.slice(1);
}
}
});
</script>

过滤器可以串联,例如:{{ message | filterA | filterB }}
过滤器是 JavaScript 函数,因此可以接受参数:
{{ message | filterA('arg1', arg2) }}
这里,message 是第一个参数,字符串 'arg1' 将传给过滤器作为第二个参数, arg2 表达式的值将被求值然后传给过滤器作为第三个参数。

Vue.js 中可以使用 v-model 来实现双向数据绑定
v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

<div id="app">
<p>{{ message }}</p>
<input v-model="message">
</div> <script>
new Vue({
el: '#app',
data: {
message: 'tanyongjun'
}
})
</script>

  

2. 条件语句 v-if & v-else

<div id="app">
<h1 v-if="type=='A'">A</h1>
<h1 v-else-if="type=='B'">B</h1>
<h1 v-else>C</h1>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
type: 'A'
},
});
</script>

  

3. 循环语句 v-for

<div id="app">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
new Vue({
el: "#app",
data: {
todos: [
{ text: 'tan' },
{ text: 'yong' },
{ text: 'jun' }
]
}
});
</script>

 

4. 计算属性 computed 

<div id="app">
<p>原始字符串: {{ message }}</p>
<p>计算后反转字符串: {{ reversedMessage }}</p>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
message: 'tanyongjun'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// this 指向 app 实例
return this.message.split('').reverse().join('')
}
}
});
</script>

  

上面的示例中声明了一个计算属性 reversedMessage 。提供的函数将用作属性 app.reversedMessage 的 getter 。
app.reversedMessage 依赖于 app.message,在 app.message 发生改变时,app.reversedMessage 也会更新。
我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

computed 属性默认只有 getter ,不过在需要时也可以提供一个 setter :
代码如下:

<div id="app">
<p>原始字符串: {{ message }}</p>
<p>计算后反转字符串: {{ reversedMessage }}</p>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
message: 'tanyongjun'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// this 指向 app 实例
return this.message.split('').reverse().join('')
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.name = names[0]
this.url = names[names.length - 1]
}
}
});
</script>

 

5. Vue.js 监听属性

Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化。

<div id="app">
千米 : <input type = "text" v-model = "kilometers">
米 : <input type = "text" v-model = "meters">
<p id="info"></p>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
kilometers : 0,
meters:0
},
watch : {
kilometers:function(val) {
this.kilometers = val;
this.meters = this.kilometers * 1000
},
meters : function (val) {
this.kilometers = val/ 1000;
this.meters = val;
}
}
}); app.$watch('kilometers', function (newValue, oldValue) {
// 这个回调将在 app.kilometers 改变后调用
document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
})
</script>

上面的代码实现了千米与米之间的换算。两个输入框用来接收用户输入的值,在 data 属性中把 kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。当输入框输入数据时,watch 会实时监听数据变化并改变自身的值。

6. 绑定事件

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

<div id="app">
<button v-on:click="sayHi">点我</button>
<!-- 简写 -->
<button @click="sayHi">点我(简写方式)</button>
</div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var app = new Vue({
el: "#app",
data: { },
methods: { //方法必须定义在Vue的methods对象中
sayHi: function () {
alert('Hello');
}
}
});
</script>

Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,Vue.js通过由点 "." 表示的指令后缀来调用修饰符。
例如: 

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- click 事件只能点击一次,2.1.4版本新增 -->
<a v-on:click.once="doThis"></a>

Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:
例如:

<!-- 只有在 keyCode 是 13 时调用 -->
<input v-on:keyup.13="submit">

为了方便使用,Vue 为最常用的按键提供了别名:  

<!-- 同上 -->
<input v-on:keyup.enter="submit">

全部的按键别名: .enter 、.tab 、 .delete (捕获 "删除" 和 "退格" 键) 、.esc 、.space、.up、.down、.left、.right、.ctrl、.alt、.shift、.meta 。  

vue学习笔记:vue.js基础语法的更多相关文章

  1. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  2. Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习

    一  使用环境: windows 7 64位操作系统 二  IDE:VSCode/PyCharm 三  Vue.js官网: https://cn.vuejs.org/ 四  下载安装引用 方式1:直接 ...

  3. Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明-Babel)

    五  Vue学习-vue-cli脚手架学习(创建只选一个选项:Babel) 1. 项目目录说明 node_modules : 包管理文件夹 public : 静态资源 src : 源代码 gitign ...

  4. Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)

    (五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二  Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...

  5. Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级

    (四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...

  6. Vue学习笔记-Vue.js-2.X 学习(五)===>脚手架Vue-CLI(PyCharm)

    Vue项目在pycharm中配置 退出运行: ctrl+c Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明)

  7. Vue学习笔记-Vue基础入门

    此篇文章是本人在学习Vue是做的部分笔记的一个整理,内容不是很全面,希望能对阅读文章的同学有点帮助. 什么是Vue? Vue.js (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式 ...

  8. 【Vue学习笔记】—— vuex的语法 { }

    学习笔记 作者:o_Ming vuex Vuex ++ state ++ (用于存储全局数据) 组件访问 state 中的全局数据的方式1: this.$store.state.全局数据 组件访问 s ...

  9. <学习笔记 之 JQuery 基础语法>

    jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaSc ...

  10. Vue学习笔记-Vue.js-2.X 学习(七)===>脚手架Vue-CLI(路由Router)

    脚手架Vue-CLI(路由Router) 一 按装(通过新创建脚手架按装),如果在原来的脚手架上按装直接进图型化界面vue ui的插件按装. 二 使用(上面按装下面步骤自动会生成) 第一步:导入路由对 ...

随机推荐

  1. a标签跳新链接,如果链接为空则不跳转

    a标签跳新链接,如果链接为空则不跳转 <el-carousel-item v-for="item in slideList" :key="item.id" ...

  2. PRIx64:uint64_t类型输出为十六进制格式

    #include <stdio.h> #include <stdint.h> #include <inttypes.h> int main(void) { uint ...

  3. Creator 2.x 升级 3.x 基础 API 差异总结

    上一篇我们介绍了 Cocos Creator 2.x 项目升级 3.x 的大流程. 但最后一步,还需要手动将之前 2.x 写的函数注释一处处的放开. 并将 2.x 的代码写法改成 3.x 的,下面我们 ...

  4. MySQL 索引的创建、删除

    MySQL中索引的创建有三种方法,索引的删除有两种方法. 一.创建索引 (1)使用create index # 1.创建普通索引 create index 索引名 on 表名 (列名[(限制索引长度) ...

  5. 「HNOI2019」校园旅行

    将相邻且颜色相同的点视作一个连通块,若该连通块是二分图,那么从连通块中一点\(x\)到连通块中一点\(y\)的路径的奇偶性确定 所以对于块外一点\(x\)到块内一点\(y\),可以将它们的路径在连通块 ...

  6. Docker快速部署Nacos

    前置 机器配置不能太低 ( 2c2g的轻量服务器直接崩掉了) Docker https://www.docker.com/ 开始安装 mysql 使用docker安装mysql (推荐8.0) 可以不 ...

  7. linux-基础及相关软件安装

    1.linux常见岗位 自动化运维.容器运维.DBA ps:会的越多给的就越多!!! """ IDC运维:机房运维员 不要做!!! """ ...

  8. Linux上安装jdk Tomcat mysql redis等

    1.安装JDk  1.1这里使用xshell中xfxp进行文件的上传,将jdk二进制包上传到Linux服务器上 下载地址:https://www.oracle.com/java/technologie ...

  9. Salesforce LWC学习(四十二) getRecordNotifyChange已弃用

    本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_get ...

  10. .Net 和 .Net Core 集成Swagger 以及配合JWT身份验证

    Swagger介绍 简单来说swagger是一款WebAPI的接口管理帮助文档,并且可以直接进行接口测试 我们来看一下官网介绍 https://swagger.io Swagger is a powe ...