分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

Vue.js学习笔记总结1

发布时间:2023-09-06 01:47责任编辑:彭小芳关键词:js

一、vue介绍

  • vue类似于高级的模版引擎
  • vue的核心思想就是:数据驱动视图 MVVM

    <div id="app">{{ message }}</div>var app = new Vue({el: ‘#app‘,data: {message: ‘Hello Vue!‘}})
  1. 每一个vue程序都是以 new Vue()开始的
  2. 每一项vue实例都接收一个选项对象来配置vue应用
  3. 选项的 el 属性用来高数 vue的启动入口节点

    • 入口节点中所有的节点就可以使用vue的语法了,从某种意义上,vue就是一种高级的模版引擎
    • 入口id不能挂载到html,body 元素,只能是一个普通的元素,所以一般我们的页面一开始就来一个 div#app
  4. vue的模版对象数据通过data 选项来指定

    以前我们使用template(‘tpl‘,{f00: ‘bar‘ <%=foo %>},或者 {{ foo }})

  5. 创建vue程序之后可以通过返回值拿到我们的vue实例,我们可以通过vue实例直接访问data中的成员
  6. data中的数据是响应式的

    • data中数据发生改变,则所有绑定了data数据的DOM都会发生改变,这就是所谓的"数据驱动视图"模式mvvm
  7. 我们可以通过实例选项的methods来配置实例方法

    • 我们建议把数据放到 data 中
    • 把方法放到 methods 选项中
    • 在方法中我们可以通过 this 来访问 Vue 实例

    vue操作自增示例

    <!-- ????el: ‘#app‘ 这里节点是被 Vue 管理的模板 ??--> ?<div id="app"><h1>{{ num }}</h1><h2>{{ num }}</h2><p>{{ num + 1 }}</p><ul> ?<li>{{ num }}</li></ul><!-- 事件注册,绑定了 data 中的 increment 方法 --><button v-on:click="increment">点我让num+1</button> ?</div>var app = new Vue({ ?el: ‘#app‘, ?data: { // 模板数据对象,在模板中可以直接使用 ???foo: ‘bar‘, ???num: 10 ?}, ?methods: { ???increment: function () { ?????// 我们利用数据驱动视图的方式,改数据,从而改DOM ?????// 不建议直接使用实例的名称,因为一旦实例名称发生改变,这里都得修改 ?????// app.num++ ?????this.num++ ???} ?}})

    二、数据绑定

    属性绑定

     <h1>{{ message }}</h1><!-- {{}} 不能用于属性绑定 --><!-- 属性绑定使用 v-bind:属性名="数据成员" -->

    1.v-model 双向绑定 v-bind单向绑定 v-if 指令

  • 指令名称:v-model

    • 语法:v-model="绑定的成员"所谓的双向绑定只是针对表单控件的例如:文本框、单选框、复选框数据的改变会影响这个表单控件表单控件的改变会影响数据
    • 使用场景
    • 带有 value 的 input 都可以使用双向绑定
    • 复选框使用双向绑定

+<input type="checkbox" v-model="checkboxValue"> 复选框双向绑定需要给一个布尔值, 布尔值为真的时候,复选框被占用,布尔值为假的时候,复选框取消选中。当数据发生变化的时候会影响 checkbox,当 checkbox 发生变化的时候会影响数据

  • v-bind单向绑定

    • v-bind 是单向的,只能被数据影响,但是不会影响数据
  • v-if 指令

    • 给一个 Boolean 值,该指令会根据布尔值的真假来显示和隐藏 <div id="box" v-if="seen"></div>

    todo-list案例

 ???<style> ?????.done { ???????text-decoration: line-through; ???????color: #ccc; ?????} ???</style> ?</head> ?<body> ???<div id="app"> ?????<h1>Todo</h1> ?????<!-- {{ }} 中也可以调用方法,将方法的返回值渲染到这里 --> ?????<p> {{ calculate() }} of {{ array.length }} remaining <a href="#" v-on:click="clearAll">archive</a></p> ?????<ul> ???????<li v-for="item in array"> ???????<!-- ?因为 checkbox 是双向绑定,所以当 checkbox 发生变化的时候就把改变同步到数据中了 ???????????也就是 item.done 会随着 checkbox 的改变而改变--> ?????????<input type="checkbox" v-model="item.done"> ?????????<!-- ?class 比较特殊 ???????????如果是动态的 class 我们也是使用 v-bind 来绑定 ???????????但是我们需要给 class 一个对象 ???????????对象的 key 是类名,值是一个布尔值 ???????????当布尔值为真的时候,则作用这个类名 ???????????反之去除这个类名 ???????????同样的,也是响应式的,当数据发生改变的时候,class 绑定也会受影响 --> ?????????<span ?v-bind:class="{ done: item.done }">{{ item.title }}</span> ???????</li> ?????</ul> ?????<input type="text" placeholder="add new todo here" ??????v-model="inputText"> ?????<button v-on:click="addArray">add</button> ???</div> ???<script src="node_modules/vue/dist/vue.js"></script> ???<script> ???var array=[ ???????????{ ?????????????title: ‘吃饭‘, ?????????????done: true ???????????}, ???????????{ ?????????????title: ‘睡觉‘, ?????????????done: false ???????????}, ???????????{ ?????????????title: ‘写代码‘, ?????????????done: false ???????????}, ???????????{ ?????????????title: ‘吃饭‘, ?????????????done: true ???????????} ?????????] ???var app=new Vue({ ?????el:‘#app‘, ?????data: { ???????array, ???????inputText:‘‘, ?????}, ?????methods: { ???????addArray: function(){ ?????????this.array.push({title:this.inputText,done:false}) ?????????this.inputText=‘‘ //清空文本框 ???????}, ???????clearAll: function(){ ?????????//找到所有为done:true 的元素从数组中删除 ?????????var newArry=this.array.filter(function(item){ ???????????return !item.done ?????????}) ?????????this.array=newArry ???????}, ???????//计算剩余为执行的个数 返回done:fase的数组的lenght ???????calculate: function(){ ???????return this.array.filter(function(item){return !item.done}).length ???????????????} ?????} ???}) ???</script>

实例完

Vue.js学习笔记总结1

原文地址:https://www.cnblogs.com/zhtian/p/vue.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved