笔记及源码地址 : 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. Spring源码阅读(八)

    摘要: 本文首先将举例说明如何使用BeanWrapper,然后根据例子中的结果分析BeanWrapper的源码.由于在spring中BeanWrapperImpl是BeanWrapper接口的唯一实现 ...

  2. python 闭包和装饰器

    python 闭包和装饰器 一.闭包闭包:外部函数FunOut()里面包含一个内部函数FunIn(),并且外部函数返回内部函数的对象FunIn,内部函数存在对外部函数的变量的引用.那么这个内部函数Fu ...

  3. Installing Android Studio

    To set up Android Studio on Windows: Launch the .exe file you just downloaded. Follow the setup wiza ...

  4. winscp中使用sudo的方法

    用截图了解如何在 WinSCP 中使用 sudo. 首先你需要检查你尝试使用 WinSCP 连接的 sftp 服务器的二进制文件的位置.你可以使用以下命令检查 SFTP 服务器二进制文件位置: [ro ...

  5. 将表单序列化为JSON对象

    将表单序列化为JSON对象的工具方法: $(function() { //工具方法,可以将指定的表单中的输入项目序列化为JSON数据 $.fn.serializeJson = function() { ...

  6. runltp&ltp-pan

  7. thinkphp 检测验证码

    /** * 检测验证码 * @param integer $id 验证码ID * @return boolean 检测结果 */function check_verify($code, $id = 1 ...

  8. mysql 汇总

    子查询:    select   a.id,a.hotelname,max(b.day) as day,a.hotelrankid,   c.hotelrank,min(b.basicprice) a ...

  9. pyqt5 界面切换

    QStackedWidget 只需要关联好对应的信号和槽,调用setCurrentIndex函数,想切哪个界面就切到哪个界面

  10. 百度uid-generator源码

    https://github.com/baidu/uid-generator snowflake算法 uid-generator是基于Twitter开源的snowflake算法实现的. snowfla ...