关于前阵子的文章错误有点多所以从新修改了并添加了一些在官方脚手架vue-cli开发时需要注意的事项, Vue.js是一个轻巧、高性能、可组件化的MVVM库。Vue 的核心库只关注视图层,并且非常容易学习,同时拥有非常容易上手的API(中英文都有提供),vue-router以及组件间的通信请使劲的敲这里:敲敲敲

Vue快速入门

准备:

  1. Vue.js 地址:http://cn.vuejs.org/
  2. Bootstrap.js 地址:http://v3.bootcss.com/getting-started/#download

没错就只需要这两个就可以开发了 vue是核心文件,bootstrap在这里只是为了提高开发效率而引用的,是可选的。 现在建个html文件引入刚下载好的两个文件这里我们只需要引用bootstrap的css样式文件即可,现在是这样的:

示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="col-md-6 col-md-offset-3">
<h1>Vue demo</h1>
<div id="app">
.......
</div>
</div>
</div>
<script src="./public/image/vue.js"></script>
</body>
</html>

现在我们来先看段代码:

<div id="app">
<div>{{message}}</div>
</div> new Vue({
el:'#app',
data: {
message:'hello vue.js.'
}
});

这个例子在浏览器解析时会输出hello vue.js。

我们先不管为什么,我们先理解他的逻辑。 在这个例子里我们的

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

就是视图层,而

new Vue({
el:'#app',
data: {
message:'hello vue.js.'
}
});

就是数据层,在使用Vue.js之前,我们都需要先像这样实例化一个Vue对象。 里面有四个常用的属性,el、data、methods、components。

  1. el:声明vuejs管理的边界,类似于angular的ng-app,把数据绑定给谁。 上面的例子中将数据绑定给了#app。
  2. data:专门存储一些数据的属性,数据一定是对象格式。 上面的例子中给message赋值hello vue.js!
  3. methods:专门放置我们的事件的方法
  4. components:创建组件

回到上面的例子el指定了#app,data存放了数据message,然后利用表达式{{}}将数据显示到页面。

接下来再看个例子:

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

这里用到了新的指令v-model,其作用就是接收用户输入的一些数据,直接就可以将这些数据 挂载到data属性里面,使得实现双向数据绑定更加容易。

接下来介绍一些常用的指令:

  1. v-if:通过判断加载内容,若为真加载,为假时删除元素
<div id="app">
<p v-if="seen">Now you see me</p>
</div> new Vue({
el: '#app',
data: {
seen: true
}
})
  1. v-for:控制html元素的循环,实现数据列表
<div id="app">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div> new Vue({
el: '#app',
data: {
todos: [
{ text: 'Learn JavaScript' },
{ text: 'Learn Vue' },
{ text: 'Build something awesome' }
]
}
})

  1. v-show:元素会始终渲染并保持在dom中,并且安全性没有v-if高,因为v-show 用法和v-if相同,只是v-show将元素display设置成none,并不是将元素直接移除
  2. v-else:元素必须紧跟在v-if或v-show元素的后面——否则它不能被识别。
<div v-if="a"></div>
<div v-else></div>
  1. v-bind:给页面中html属性进行绑定,拥有缩写“:”,也推荐使用缩写
<img v-bind:src="img" />
<div v-bind:style="styles">style</div> data:{
img:"img/logo.png",
styles:{color:'red',fontSize:'30px'}
}

可以缩写成这样

<img :src="img" />
<div :style="styles">style</div>
  1. v-on:对页面中的事件进行绑定,使用方法 v-on:click="函数名称",函数就是存放在methods属性里的方法名,例如
<button v-on:click="oclick()">点击</button>

methods:{
oclick:function(){
alert(1);
}
}

也有缩写“@”

<button @click="oclick()">点击</button>

效果是一样的

  1. $event:事件对象,如同我们原声js中的event
<div @click="show($event)">点我</div>

methods:{
show:function(ev){
alert(ev.clientX)
}
}

结果:

  1. stop:阻止事件冒泡
//原声:ev.cancelBubble=true;
@click.stop="show()"
  1. prevent:阻止默认事件
//原声:ev.preventDefault();
@click.prevent="show()"
  1. self:当事件在该元素本身触发时触发回调
@click.felf="show()"
  1. capture:添加事件侦听器时使用事件捕获模式
@click.capture="show()"
  1. 键盘事件:
//原声:ev.keyCode (13回车)
/*@keydown:任意键按下 @keyup:任意键抬起
//方向键:.up:上 .down:下 .right:右 .left:左 .enter:回车
//键码:.13:回车 <div @keydown="get()">啦啦啦~</div>
<div @keyup.enter="get()">啦啦啦~</div>

看上面例子就注意到vue支持键码

  1. 过滤器:
<p>{{ jiexige|uppercase }}</p>
//uppercase 大写、 lowercase 小写、 capitalize 首字母大写、currency 参数:"¥" 钱币

以上是vue基本使用,接下来讲讲vue-cli的需要注意的格式,最后做个经典例子“TODOLIST”

  1. vue对象里不能有缩进,一般缩进用两个空格代替
  2. 冒号后面要跟一个空格
  3. 逗号后面也要跟一个空格
  4. 存放链接需要使用require
  5. 数据只能用单引号包着
{
url: require('./assets/images/img4.png'),
}

目前只注意到这些,将不定期更新,下面来做个例子:我先前做好了可以点击此处看演示TODOLIST, 下面我来讲解下

我的数据层

window.onload = function(){
new Vue({
el: "#todu",
data: {
myData: [],
username: "",
ages: "",
nowindex: 1,
m: false
},
methods: {
addData:function(){
if(this.$refs.sele.value==""){
alert("请填满资料!")
}else{
this.myData.push({
name:this.username,
age:this.ages
});
this.username="",
this.ages=""
}
},
noindex:function(n){
if(n==-1){
this.myData = [];
}else{
this.myData.splice(n,1);
}
}
}
});
}

视图层

<div class="container" id="todu">
<h1 class="text-center">TODOLIST</h1>
<form role="form">
<label for="name">名称:</label>
<input type="text" class="form-control" name="name" id="name" ref="sele" placeholder="请输入名称" v-model="username">
<br>
<label for="sag">年龄:</label>
<input type="text" class="form-control" name="seg" id="seg" ref="sele" placeholder="请输入年龄" v-model="ages">
<br>
<div>
<button type="button" class="btn btn-primary" @click="addData()" value="添加">添加</button>
<input class="btn btn-danger" type="reset" value="重置">
</div>
</form>
<hr>
<h3 class="text-center text-muted">数据查询列表</h3>
<table role="table" class="table">
<tr>
<th class="text-center">#</th>
<th class="text-center">名称</th>
<th class="text-center">年龄</th>
<th class="text-center">操作</th>
</tr>
<tr class="text-center" v-for="(list,index) in myData">
<td>{{index+1}}</td>
<td>{{list.name}}</td>
<td>{{list.age}}</td>
<td>
<button class="btn btn-danger" data-toggle="modal" data-target="#layer" @click="nowindex=index,m=false">删除</button>
</td>
</tr>
<tr v-show="myData.length==0">
<td colspan="4">
<p class="text-center text-muted">暂无数据……</p>
</td>
</tr>
<tr v-show="myData.length!=0">
<td colspan="4" class="text-right">
<button class="btn btn-danger" @click="nowindex=-1,m=true" data-toggle="modal" data-target="#layer">删除全部</button>
</td>
</tr>
</table>
<!--模态框 弹出框-->
<div role="dialog" class="modal fade" id="layer" >
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">确定<span v-show="m">全部</span>删除吗?</h4>
<div class="text-right">
<button class="btn btn-primary" data-dismiss="modal">取消</button>
<button class="btn btn-danger" data-dismiss="modal" @click="noindex(nowindex)">确定</button>
</div>
</div>
</div>
</div>
</div>
</div>

我做的时候引用了bootstrap的js文件,所以有些弹框效果是基于bootstrap的。 关于html布局我就不说了,相信你们都是有基础的,我就从添加数据开始说。

data: {
myData: [],
username: "",
ages: "",
nowindex: 1,
m: false
}
<label for="name">名称:</label>
<input type="text" class="form-control" name="name" id="name" ref="sele" placeholder="请输入名称" v-model="username">
<br>
<label for="sag">年龄:</label>
<input type="text" class="form-control" name="seg" id="seg" ref="sele" placeholder="请输入年龄" v-model="ages">
<br>
<div>
<button type="button" class="btn btn-primary" @click="addData()" value="添加">添加</button>
addData:function(){
if( this.$refs.sele.value==""){
alert("请填满资料!")
}else{
this.myData.push({
name:this.username,
age:this.ages
});
this.username="",
this.ages=""
}
},

建两个变量username、ages用来存放input利用v-model传过来的名称和年龄,在通过点击添加触发addData()将收到值的两个变量添加到建的数组当中在清除两个变量。 这样就形成了添加数据,那该如何删除添加后的数据呢?

<tr class="text-center" v-for="(list,index) in myData">
<td>{{index+1}}</td>
<td>{{list.name}}</td>
<td>{{list.age}}</td>
<td>
<button class="btn btn-danger" data-toggle="modal" data-target="#layer" @click="nowindex=index,m=false">删除</button>
</td>
</tr>
<div class="modal-header">
<h4 class="modal-title">确定<span v-show="m">全部</span>删除吗?</h4>
<div class="text-right">
<button class="btn btn-primary" data-dismiss="modal">取消</button>
<button class="btn btn-danger" data-dismiss="modal" @click="noindex(nowindex)">确定</button>
</div>
</div>
data: {
myData: [],
username: "",
ages: "",
nowindex: 1,
m: false
}
noindex:function(n){
if(n==-1){
this.myData = [];
}else{
this.myData.splice(n,1);
}
}

其实很简单给个判断就好了,如果是删除单个的话,点击删除后将当前下标传给变量nowindex,再将变量当参数传给noindex(nowindex),最后noindex方法里面判断nowindex是多少,在使用splice(n,1)删除在数组中第n个值。

<button class="btn btn-danger" @click="nowindex=-1,m=true" data-toggle="modal" data-target="#layer">删除全部</button>

删除全部直接将变量值赋-1,判断如果-1就清空数组。

有公众号了,不定期推送热门前端技术文章!!!

Vue.js 快速入门的更多相关文章

  1. Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js快速入门(二)

    Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js快速入门(二) 前言 上篇文章对Vue.js有了初步理解,接下来我们把Vue.js基础语法快速的过一遍,先混个脸熟留个印象就 ...

  2. Vue.js快速入门

    Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们 ...

  3. Vue.js—快速入门

    Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目 ...

  4. Vue.js——快速入门

    Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...

  5. Vue.js—快速入门及实现用户信息的增删

    Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目 ...

  6. Vue.js——快速入门Vuex

    一. 什么是Vuex? Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. 上图中绿色虚线包裹起 ...

  7. .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用

    写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...

  8. Node.js快速入门

    Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架. 它的最新版本是:v0.12.7(在编写本教程时的版本).Node.js在官方 ...

  9. JS快速入门(二)

    目录 JS快速入门(二) 结构图 BOM window对象 open() window子对象 location对象 history对象(了解) navigator 对象 screen对象 BOM 定时 ...

随机推荐

  1. [个人论文]一种基于GPU并行计算的MD5密码解密方法

    求轻喷... [顺便get一份LaTeX论文模板....还是XeLaTex好用.珍爱生命远离CJK http://files.cnblogs.com/files/pdev/paper.zip

  2. springMVC的bean注入方式

    POJO是多例模式,并不是单例模式. servlet是单例的,同一个实例可以同时有多个用户访问 用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存:用多例,是为了防止并发问题:单 ...

  3. 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法

    本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...

  4. SCI英文论文写作- Latex 进阶

    SCI英文论文写作- Latex 进阶   1.设置行间距的方法: %\setlength{\baselineskip}{15pt} \renewcommand{\baselinestretch}{1 ...

  5. 百度地图JavaScript API [一]

    参考网址: http://developer.baidu.com/map/index.php?title=jspopular/guide/widget 1.申请密钥(ak) http://api.ma ...

  6. 第一章 Java多线程技能

    1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...

  7. CSS基础总结

    CSS基础总结链接地址:http://segmentfault.com/a/1190000002773955

  8. IOS原生地图与高德地图

    原生地图 1.什么是LBS LBS: 基于位置的服务   Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位  ...

  9. Struts2第一个入门案例

      一.如何获取Struts2,以及Struts2资源包的目录结构的了解    Struts的官方地址为http://struts.apache.org 在他的主页当中,我们可以通过左侧的Apache ...

  10. Easyui 设置datagrid 进入编辑状态,保存结束编辑

    在datagrid中如何实现让一行进入编辑状态,修改数据后,保存信息呢? //点击列表变成文本框,进入可编辑状态 $(function () { var doc = $(document), tabl ...