笔记及源码地址 : https://github.com/wll8/vue_note


01

  • 2017-09-13

view
一个 mvvm框架(库),和 ag 类似。
比较小巧,容易上手。

mvc:
mvp
mvvm
mvx(mv*)

vue 和 ag 的区别。

不用纠结什么好,项目适合什么就用什么。
vue
简单
中文文档
指令: v-xxx
例子: html + json + vue实例
维护: 个人
适合: 移动

ag
上手难
英文文档
指令: ng-xxx
例子: 把所有属性和方法挂到 $scope 上
维护: 谷歌
合适: pc

共同点:
不兼容低版本ie

vue雏形

    <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">{{msg}}</div> <!-- html -->
<script>
var json={ /*json*/
el:'#box',
data:{
msg:'vue'
}
}
var c=new Vue(json); // vue实例
</script>

常用指令

指令: 扩展 html 标签功能,属性。
v-model 一般用表单元素 input 上。
注,教程失效部分:
v-repeat 已改为 v-for
$index 弃用,改为 `(value, index) in arr` 得到 index 变量。
$key 弃用,改为 `(value, key) in obj` 得到 key 变量。
    <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">
<input v-model="msg">
{{msg}} <br>
{{arr}} <br>
{{obj}} <br> 数组<hr>
<p v-for="value in arr">{{value}}</p> 下标,数组<hr>
<p v-for="(value, index) in arr">{{index}}{{value}}</p> 对象<hr>
<p v-for="value in obj">{{value}}</p> key,对象<hr>
<p v-for="(value, key) in obj">{{key}}{{value}}</p> </div>
<script>
var json={ /*json*/
el:'#box',
data:{
msg:'vue',
arr:[1,2,3],
obj:{a:1,b:2}
}
}
var c=new Vue(json); // vue实例
</script>

事件

所有事件都写在 methods 中。
    <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">
<button @click="show()">alert</button>
</div>
<script>
var json={
el:'#box',
methods:{
show:function(){
alert(1);
console.log(this.$el);
}
}
}
var c=new Vue(json); // vue实例
</script>

vue + bootstrap 实现 todolist

todolist也被认为是留言版。
在线 bootstrap ,引入 -alpha 或 -beta 版本js会报错。

    https://cdn.bootcss.com/bootstrap/4.0.0-beta/js/bootstrap.js
Uncaught Error: Bootstrap dropdown require Popper.js https://cdn.bootcss.com/bootstrap/4.0.0-alpha.4/js/bootstrap.js
Uncaught Error: Bootstrap tooltips require Tether https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js
正常使用。

相关源码

01.vue雏形

  <script src="https://unpkg.com/vue"></script>
<div id="box">{{msg}}</div> <!-- html -->
<script>
var json={ /*json*/
el:'#box',
data:{
msg:'vue'
}
}
var c=new Vue(json); // vue实例
</script>

02.常用指令

  <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">
<input v-model="msg">
{{msg}} <br>
{{arr}} <br>
{{obj}} <br> 数组<hr>
<p v-for="value in arr">{{value}}</p> 下标,数组<hr>
<p v-for="(value, index) in arr">{{index}}{{value}}</p> 对象<hr>
<p v-for="value in obj">{{value}}</p> key,对象<hr>
<p v-for="(value, key) in obj">{{key}}{{value}}</p> 事件<hr>
<button @click="show()">alert</button>
<button @click="add()">arr push</button> v-show <hr>
<button @click="show_btn=!show_btn">显示隐藏</button>
<p v-show="show_btn">显示隐藏</p> </div>
<script>
var json={ /*json*/
el:'#box', /*html元素*/
data:{ /*变量*/
msg:'vue',
arr:[1,2,3],
counter:0,
show_btn:true,
obj:{a:1,b:2}
},
methods:{ /*所有方法都放在里面,注意s*/
show:function(){
alert(1);
console.log(this.$el);
},
add:function(){
this.arr.push(1);
}
}
}
var c=new Vue(json); // vue实例
</script>

03.todolist

  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css">
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<script>
window.onload=function(){
new Vue({
el:'#box',
data:{
myData:[
],
username:'',
age:'',
nowIndex:-1, // 当前点击的数据
},
methods:{
add:function(){
this.myData.push({
name:this.username,
age:this.age
});
this.username='';
this.age='';
},
del:function(n){
if(n==-2){
this.myData=[];
}else{
this.myData.splice(n,1); // 删除数据中的第n位
}
}
}
})
}
</script>
<div class="conatiner" id="box">
<form role="form">
<div class="form-group">
<label for="username">用户名:</label>
<input v-model="username" type="text" id="username" class="form-control" placeholder="输入用户名">
</div>
<div class="form-group">
<label for="age">年 龄:</label>
<input v-model="age" type="text" id="age" class="form-control" placeholder="输入年龄">
</div>
<div class="form-group">
<input type="button" value="添加" class="btn btn-primary" @click="add()">
<input type="reset" value="重置" class="btn btn-danger">
</div>
</form>
<hr>
<table class="table table-bordered table-hover">
<caption class="h3 text-info text-center">用户信息表</caption>
<tr class="text-danger">
<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="(item, index) in myData">
<td>{{index+1}}</td>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td><button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=index">删除</button></td>
</tr>
<tr v-show="myData!=0">
<td colspan="4" class="text-right">
<button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=-2">删除全部</button>
</td>
</tr>
<tr v-show="myData.length==0">
<td colspan="4" class="text-center text-muted">
<p>暂无数据...</p>
</td>
</tr>
</table> <!-- 模态框,弹出框 -->
<div role="dialog" class="modal fade" id="layer">
<div class="modal-content">
<div class="modal-header">
<button class="close" data-dismiss="modal"><span>&times;</span></button>
<div class="modal-title">确认删除{{nowIndex==-2 ? '全部' : ''}}么?</div>
</div>
<div class="modal-body text-right">
<button data-dismiss="modal" class="btn btn-primary btn-sm">取消</button>
<button data-dismiss="modal" class="btn btn-danger btn-sm" @click="del(nowIndex)">确认</button>
</div>
</div>
</div>
</div>

vue.js精讲01的更多相关文章

  1. vue.js精讲02

    2017-09-17 笔记及源码地址 : https://github.com/wll8/vue_note vue 中的事件深入. 事件: @click/mouseover…事件简写: @ 如 @cl ...

  2. Vue 基础精讲

    Vue 基础精讲 Vue 官方文档:https://cn.vuejs.org/v2/guide/ VUE 实例 每个组件都是一个 vue 的实例. 一个 vue 项目是由实例组成的. vue 实例上有 ...

  3. vue.js插件使用(01) vue-resource

    本文的主要内容如下: 介绍vue-resource的特点 介绍vue-resource的基本使用方法 基于this.$http的增删查改示例 基于this.$resource的增删查改示例 基于int ...

  4. vue.js 精学组件记录

    组件需要注册后才可以使用. Vue.component('my-component',{ template:'<div>这是组件内容</div>' }): 局部注册组件 var ...

  5. vue.js 精学记录

    v-bind:class使用的方式: 1.对象与法::class="{'active':isActive}" 此时当isActive为true时,会拥有active 2.数组语法: ...

  6. Vue —— VueX精讲(1)

    大纲 这一讲我们最主要的就是学习vue中的数据管理VueX,这个是一个大杀器 一.回顾一些Promise相关的东西 Promise 有几个比较重要的方法,最重要的还是有一个叫做all的方法,这个也是非 ...

  7. 第三章、vue基础精讲

    3.1VUE实例 组件:全局组件,局部组件,vue的每个组件也是一个实例,有自己的实例属性和实例方法. 在console中调试vue,vm为vue的实例,凡是以$开头的都是vue的实例属性或者vue的 ...

  8. MVVM大比拼之vue.js源码精析

    VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多来自knockout.angularj ...

  9. vue.js源码精析

    MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多 ...

随机推荐

  1. python 安装pandas

    1.pandas有啥用 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pand ...

  2. Go语言专题

    基础语法 Go语言配置开发环境 Go语言语法基础 Go语言面向对象 Go语言并发编程 Go语言搭建开发环境 语言库 Go语言fmt包 Go语言字节处理 Go语言字符串处理 Go语言JSON处理 Go语 ...

  3. 在hue中使用hive

    一.创建新表 建表语句如下: CREATE TABLE IF NOT EXISTS user_collection_9( user_id string , seller_id string , pro ...

  4. mac电脑复制粘贴使用command+c command+v

    mac电脑复制粘贴使用command+c command+v系统偏好设置--键盘--修饰键(右下角),将ctrl键和command键的功能对换一下即可用ctrl+c ctrl+v复制粘贴缺点:所有的c ...

  5. TensorFlow 1.2.0新版本完美支持Python3.6,windows在cmd中输入pip install tensorflow就能下载应用最新tensorflow

    TensorFlow 1.2.0新版本完美支持Python3.6,windows在cmd中输入pip install tensorflow就能下载应用最新tensorflow 只需在cmd中输入pip ...

  6. log4j2笔记 #02# 启用异步日志

    索引 参考 Making All Loggers Asynchronous 第一步,添加相应的disruptor库 第二步,设置系统属性log4j2.contextSelector 第三步,检验! 参 ...

  7. vi/vim 命令速查手册

    vi 的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode).插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下: 1 ...

  8. rabbitmq heartbeat missing with heartbeat = N seconds原因总结

    一直以来,在我们大规模使用rabbitmq的服务端应用中,都没有出现rabbitmq心跳超时而造成的的影响,反倒是在rabbitmq-cpp客户端出现过很多次该问题,一直以为客户端lib实现的问题(不 ...

  9. 一条命令,根据进程名判断有进程输出up,无进程无输出

    这个研究了好一会, 由于开发需要,提供的命令. shell命令,可以按照分号分割,也可以按照换行符分割.如果想一行写入多个命令,可以通过“';”分割. a=`ps -ef | grep nginx | ...

  10. 把源码放到服务器部署webservice调用出错 MVC C#

    C# WebService在本地调用正常,同样的代码布睹到服务器上总是调用报如下错误 Server Error in '/' Application. The resource cannot be f ...