快速入门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 相关文章推荐
javascript 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
js AppendChild与insertBefore用法详细对比
Dec 16 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
jQuery中animate的几种用法与注意事项
Dec 12 Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 Javascript
Jqprint实现页面打印
Jan 06 Javascript
Node 自动化部署的方法
Oct 17 Javascript
深入浅析Node环境和浏览器的区别
Aug 14 Javascript
JavaScript常见事件处理程序实例总结
Jan 05 Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 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版
2006/10/09 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
JS模拟多线程
2007/02/07 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python实现ID3决策树算法
2017/12/20 Python
python语言中with as的用法使用详解
2018/02/23 Python
python实现烟花小程序
2019/01/30 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
.NET面试问题集
2015/12/08 面试题
学生周末回家住宿长期请假条
2014/02/15 职场文书
《雷雨》教学反思
2014/02/20 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年环卫工作总结
2015/04/28 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS