vue.js精讲01

笔记及源码地址 : 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>

?

时间: 2024-10-07 09:56:59

vue.js精讲01的相关文章

vue.js精讲02

2017-09-17 笔记及源码地址 : https://github.com/wll8/vue_note vue 中的事件深入. 事件: @click/mouseover…事件简写: @ 如 @clkck属性简写: : 如 :src传入原生事件对象: $event 事件冒泡:原生 ev.cancelBubble=true;vue .stop; 默认事件:原生 ev.preventDefault();vue .prevent; 键盘事件:keydown 文字没出现keyup 文字出现键码 .13

vue.js初级教程--01.简介

Vue特点 渐进式框架 采用自底向上增量开发的设计 核心库只关注视图层 轻量级 22kb min+gzip 高性能 渲染性能:支持条件.循环.服务端渲染方式 更新性能:数据驱动.响应式 特性 数据驱动,支持双向数据绑定,异步批量DOM更新 组件化,支持组件独立.组件复用以及异步加载 模块化,模板.数据.外数据.方法.生命周期函数.样式 指令,支持内置指令和自定义指令 虚拟DOM 为什么需要虚拟DOM DOM是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如

vue.js 精学记录

v-bind:class使用的方式: 1.对象与法::class="{'active':isActive}" 此时当isActive为true时,会拥有active 2.数组语法:需要应用多个class时,可以使用数组语法. :class = " [activeCls,errorCls ] ", var app = new Vue({ el:"#app", data:{ activeCls:'active', errorCls:'error' }

第三章、vue基础精讲

3.9.Vue中的set方法 数组-----改变数组页面也跟着改变 第一.直接改变引用 第二.用数组的的实例方法 第三.用vue的set方法 改变对象,页面也跟着改变 第一.直接改变引用 第二.用vue的set方法(Vue.set || vm.$set) 原文地址:https://www.cnblogs.com/qdwz/p/11429102.html

Vue.js 组件精讲

课程介绍:你会学到什么        了解 Vue.js 组件开发的精华        Vue.js 组件知识全覆盖        掌握多种 Vue.js 组件开发的模式        独立组件不依赖 Vuex 和 Bus 情况下,各种跨级通信手段(provide / inject.broadcast / dispatch.findComponents 系列)        7 个完整的 Vue.js 组件示例        如何做好一个开源项目        Vue.js 容易忽略的 API

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

VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多来自knockout.angularjs等大牌框架影响,但作者相信 vue 在性能.易用性方面是有优势.同时也自己做了和其它框架的性能对比,在这里.今天以版本 0.10.4 为准 入口 Vue 的入口也很直白: ? 1 var demo = new Vue({ el: '#demo', data: { message: 'Hello V

Webpack + React全栈工程架构项目实战精讲

详情请交流  QQ  709639943 01.Webpack + React全栈工程架构项目实战精讲 02.跨平台混编框架 MUI 仿豆瓣电影 APP 03.Node.js入门到企业Web开发中的应用 04.Python3 全网最热的Python3入门+进阶 比自学更快上手实际开发 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring

vue.js基础知识篇(2):指令详解

第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v-text,v-el,v-html,v-on,v-bind,v-ref,v-pre,v-cloak,v-if. 2.内部指令 (1)控制元素的显示与否:v-if,v-show.v-else v-if是真实的条件渲染,根据表达式的true/false在DOM中生成或移除一个元素. 第一,这个指令是惰性

使用vue.js仿一个链家

Vue全家桶+localstorage+socket.io简单仿一个链家 在线预览地址首先上项目和预览地址 https://luxroid.com/lianjia/#/Github地址 https://github.com/mixihome/lianjia 注意 如果要在本地运行安装完依赖之后如果报错请手动使用淘宝镜像安装node-sass和sass-loader 确保可以运行建议使用F12移动端模式预览???? 使用到的技能点Vue.js : 前端页面展示Vuex : 全局状态通信axios