快速入门Vue


Posted in Javascript onDecember 19, 2016

一、什么是Vue?

Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。如果你是有经验的前端开发者,想知道 Vue.js 与其它库/框架的区别,查看对比其它框架。

以上内容摘自http://cn.vuejs.org/v2/guide/,说实话,我是没看懂写的是个啥,如果你是来来搞懂这个问题的,那么你要失望了,请自行去百度,顺便百度下MVVM,再去了解下reactjs和angularjs,然后再了解下区别。

二、快速上手

对于码农来讲,别跟我扯那些有的没得,如何能让我在最小的学习代价下能快速使用,迅速掌握这个2016年前端最火的技术之一,才是每一个码农关心的问题好么,进入正题,不过在这之前,还是希望大家去了解一下有关前端框架的相关知识,包括有一定的javascript,html和css的相关经验再往下看。

vue官方提供了两种不同的安装方案,简单的来讲,就是简化版和完整版,其中的区别,我会在之后的文章里讲清楚,要快速上手,当然是选择简化版,对于简化版的使用,vue比react和angular简直是简单到爆,只需引入一个js文件,写入我们的html文件,我们就可以使用vue的所有基本功能,是不是听上去很牛逼的样子,可能还有很多jquery的童鞋会说,我大jquery不是也只需要引一个js文件嘛,请了解清楚,jquery只是一个javascript的工具库,而vue,是一款伟大的MVVM前端框架。

首先,新建一个html文件出来,然后添加下面的代码

<script src="https://unpkg.com/vue/dist/vue.js"></script>

好了,我们可以使用Vue了,第一件事,当然是打开Vue的API使用指南啊,看一眼,这个竟然有中文版的,好嘞,花个三十分钟左右的时间把基础的代码撸一遍。

下面是我撸的代码,简单注释已经加好:

<!DOCTYPE html>
<html>
<head>
 <title>Vue demo</title>
 <script src="./vue.js"></script>
</head>
<body>
<div id="app">
 {{message}}
</div>
<div id="app-2" v-bind:title="message">
 <span>
 Hover your mouse over me for a few seconds to see my dynamically bound title!
 </span>
</div>
<dir id="app-3">
 <p v-if="seen">Now you can see me</p>
</dir>
<div id="app-4">
 <ol>
 <li v-for="todo in todos">
 {{todo.text}}
 </li>
 </ol>
</div>
<div id="app-5">
 <p>{{message}}</p>
 <button v-on:click="reverseMessage">Reverse Message</button>
</div>
<div id="app-6">
 <p>{{message}}</p>
 <input v-model="message">
</div>
<div id="app-7">
 <ol>
 <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
 </ol>
</div>
</body>
<script type="text/javascript">
<!-- 声明式渲染 -->
var app = new Vue({
 el: '#app',
 data: {
 message: 'My first vue app'
 }
});
var app2 = new Vue({
 el: '#app-2',
 data: {
 message: 'You load this page on ' + new Date()
 }
});
<!-- if条件判断 -->
var app3 = new Vue({
 el: '#app-3',
 data: {
 seen: true
 }
});
<!-- for循环 -->
var app4 = new Vue({
 el: "#app-4",
 data: {
 todos: [
 {text: 'Learn javascript'},
 {text: 'Learn Vue'},
 {text: 'Build something awesome'}
 ]
 }
});
<!-- 处理用户输入 -->
var app5 = new Vue({
 el: '#app-5',
 data: {
 message: 'Hello Vue.js'
 },
 methods: {
 reverseMessage: function() {
 this.message = this.message.split('').reverse().join('')
 }
 }
});
var app6 = new Vue({
 el: '#app-6',
 data: {
 message: 'Hello Vue!'
 }
});
<!-- 组件的使用 -->
Vue.component('todo-item', {
 props: ['todo'],
 template: '<li>{{todo.text}}</li>'
});
var app7 = new Vue({
 el: '#app-7',
 data: {
 groceryList: [
 {text: 'Vegetables'},
 {text: 'Cheese'},
 {text: 'Whatever else humans are supposed to eat'}
 ]
 }
});
</script>
</html>

整体的页面显示效果如下:

快速入门Vue

在这里,有一个Vue中非常重要的概念——组件。因为它提供了一种抽象,让我们可以用独立可复用的小组件来构建大型应用。如果我们考虑到这点,几乎任意类型的应用的界面都可以抽象为一个组件树:

快速入门Vue

在 Vue 里,一个组件实质上是一个拥有预定义选项的一个 Vue 实例:

Vue.component('todo-item', {
 template: '<li>This is a todo</li>'
})

现在你可以另一个组件模板中写入它:

<ol>
 <todo-item></todo-item>
</ol>

但是这样会为每个 todo 渲染同样的文本,这看起来并不是很酷。我们应该将数据从父作用域传到子组件。让我们来修改一下组件的定义,使得它能够接受一个 prop 字段:

Vue.component('todo-item', {
 props: ['todo'],
 template: '<li>{{ todo.text }}</li>'
})

现在,我们可以使用 v-bind 指令将 todo 传到每一个重复的组件中:

<div id="app-7">
 <ol>
 <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
 </ol>
</div>
Vue.component('todo-item', {
 props: ['todo'],
 template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
 el: '#app-7',
 data: {
 groceryList: [
 { text: 'Vegetables' },
 { text: 'Cheese' },
 { text: 'Whatever else humans are supposed to eat' }
 ]
 }
})

这只是一个假设的例子,但是我们已经将应用分割成了两个更小的单元,子元素通过 props 接口实现了与父亲元素很好的解耦。我们现在可以在不影响到父应用的基础上,进一步为我们的 todo 组件改进更多复杂的模板和逻辑。

从代码上面来看,还是标准的javascript写法,只是定义了Vue这个对象,进行的所有操作都是通过Vue这个对象来实现的,这一部分的代码简单介绍了Vue的使用,相信大多数的项目中使用最多还是这些数据绑定,判断循环,用户输入,绑定事件。

不过话说回来,我们为什么要使用Vue?各位看官自行百度一下去吧,我这里不吹不黑,只是一个简单的上手系列文章,由浅入深,跟着官方指南走,加入一些我自己的理解,欢迎各位看官拍砖。

参考资料:

Vue.js操作指南

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jQuery ui插件的使用方法代码实例
May 08 Javascript
取消选中单选框radio的三种方式示例介绍
Dec 23 Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 Javascript
javascript面向对象之对象的深入理解
Jan 13 Javascript
用js判断是否为360浏览器的实现代码
Jan 15 Javascript
jQuery实现的漂亮表单效果代码
Aug 18 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
Feb 19 Javascript
原生javascript实现addClass,removeClass,hasClass函数
Feb 25 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
完美解决axios跨域请求出错的问题
Feb 05 Javascript
vue地址栏直接输入路由无效问题的解决
Nov 15 Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 Javascript
javascript中call,apply,bind函数用法示例
Dec 19 #Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 #Javascript
15个非常实用的JavaScript代码片段
Dec 18 #Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
Dec 18 #Javascript
简单实现node.js图片上传
Dec 18 #Javascript
Javascript计算二维数组重复值示例代码
Dec 18 #Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 #Javascript
You might like
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
关于js类的定义
2011/06/28 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
python查看数据类型的方法
2019/10/12 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
工厂厂长岗位职责
2013/11/08 职场文书
中学家长会邀请函
2014/02/03 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
Python编程编写完善的命令行工具
2021/09/15 Python