Vue2.0学习

VUE学习

简介

1.两个特性

  • 数据驱动视图

    数据的变化会导致视图的更新

  • 双向数据绑定

    数据源变化,视图也会更新

    视图中的数据变化也会同步到数据源

3.MVVM

  • 什么是mvvm

    model view viewmodel

    model数据源

    view当前页面的dom

    vuemodel表示vue的实例可以实现model和view的双向绑定

基本使用

1.基本实例化

  • 基本使用
<body>
    <div id="app">{{ msg }}</div>
    <!-- {{}}可以替换数据 -->
    <script>
        const vm = new Vue({
            el: "#app", //控制哪个dom
            data: {
                // 使用哪些数据
                msg: "hellovue"
            }
        })
    </script>
</body>
  • 需要创建一个根div app熟悉这习惯

2.调试

dev tool,谷歌插件

3.指令

1.内容渲染指令

  • 指令包含

    1.v-text 替换为文本
    2.{{}} 替换为文本
    3.v-html 可以解析html标签并替换
    
  • 基本使用

<body>
    <div id="app">
    	<p v-text="msg2">嗨嗨</p>
        <p >嗨嗨{{msg}}</p>
        <p v-html="msg2">嗨嗨</p>
    </div>
    <!-- {{}}可以替换数据 -->
    <script>
        const vm = new Vue({
            el: "#app", //控制哪个dom
            data: {
                // 使用哪些数据
                msg2:"<h1>hello</h1>"
            }
        })
    </script>
</body>
  • 差异对比
1.v-text 和{{}}
将值替代为普通文本
{{}}不会覆盖原有文本
v-text会覆盖原有的文本

2.v-html会解析值的html标签信息
谨慎使用,用户可能用它来进行攻击

2.属性绑定指令

  • 指令包含
v-bind:xxx=""  简写为  :
  • 可以在插值和属性中使用

    简单的js表达式,

    调用函数的返回结果,

    进行简单的字符串拼接等等

3.事件绑定指令

  • 指令包含
v-on:xxx=""  简写为  @
  • 函数的简写

    1.可以省略function
    2.可以使用箭头函数
    methods:{
    	hello:function(){return 1;},
    	hello2(){alert(2)},
    	hello3:()=>alert(3)
     }
    
  • 方法中访问当前对象

    1.通过this访问当前对象
    2.通过vm,实例化的对象名称访问当前对象
    countadd1(){this.count+=1},
    countadd2(){vm.count+=2;}
    
  • 绑定事件的时候可以选择传递参数,函数定义的时候定义了参数,绑定的时候必须传递参数

  • 不传参的情况下默认有个参数为event e

    <button @click="countadd(9)">+9</button>
    countadd(n){this.count+=n},
    
  • 源生事件绑定

    源生的dom事件如onclick,oninput,onkeup
    将on提前,v-on:click,v-on:input
    或者@click,@input
    
  • 事件参数event

    1.如果没有传入参数,可以使用形参e接受事件目标
    <button @click="countadd1">+1</button>
    countadd1(e){console.log(e)},
    2.如果传入了参数,需要接受源生事件dom参数,需要使用$event
    <button @click="countadd1($event)">+1</button>
    countadd1(e){console.log(e)}, 
    3.使用e.target获取事件的目标
    
  • 事件修饰符

    内外层绑定了同名函数
    .prevent组织标签默认行为,可以自定义事件
    .stop阻止事件冒泡传播
    .capture由当前向内冒泡反冒泡
    .self只在当前元素触发事件
    .once只触发一次
    .passive不想阻止事件的默认行为
    
  • 按键修饰符

    1.按键码

    在按键的时候判断按键是否是某个特殊的键
    替代原来的按键码,按键码被摈弃了,新的浏览器不在支持按键码
    字母的话有数字组成特定的按键码
    .enter
    .tab
    .delete (捕获“删除”和“退格”键)
    .esc
    .space
    .up
    .down
    .left
    .right
    

    2.系统修饰符

    在响应键盘和鼠标事件的时候必须同时按下系统按键才响应
    .ctrl
    .alt
    .shift
    .meta
    <!-- Alt + C -->
    <input v-on:keyup.alt.67="clear">
    
    <!-- Ctrl + Click -->
    <div v-on:click.ctrl="doSomething">Do something</div>
    

    .exact修饰符

    需要精准按键,仅仅按下某系统按键的时候才触发
    

    鼠标按键修饰符,鼠标左键,中键,右键的点击事件时候触发

    .left
    .right
    .middle
    

4.双向绑定指令

  • v-model 在不操纵dom的情况下操纵表单数据

  • v-model内部会判断input的类型,或者从属于哪一种表单元素

  • input,textarea,button等使用v-model,可以操纵值和变量事件

  • value的绑定是单向绑定,数据源变化可以致使视图变化,视图变化不会导致数据变化

  • v-model

    input  radio,checked都可以
    textarea  内容
    select option
    
  • v-model的修饰符

    .number 自动转换成数字  在字符串拼接时候数字化
    .trim   自动去掉两边空白
    .lazy 在change更新非input事件更新 比如输入、删除后失去焦点的时候
    

5.条件渲染指令

  • 条件渲染指令v-if和v-show

  • v-if和v-show对比

    v-if   默认为false,则不渲染,更省资源
    v-show 频繁切换的时候,使用,避免重复渲染
    
  • v-if的相关if else

    v-if
    v-else
    
    v-if 
    v-else-if
    ……
    v-else
    

6.列表渲染指令

  • v-for的基本使用

  • 遍历数组

    1.遍历数组
    <div v-for="it in list">
    	<p>{{it.id}}-{{it.name}}</p>
    </div>
    2.额外用index获得元素的下标0开始
    <div v-for="(it,index) in list">
    	<p>{{it.id}}-{{it.name}}-{{index+1}}</p>
    </div>
    data: {
    	list:[{id:"#1",name:"张三"},
    	{id:"#2",name:"王五"},
    	{id:"#3",name:"赵四"},]
    },
    
  • 遍历对象

    可以通过v-for遍历对象
    value表示值,name表示键,index表示下标
    <div v-for="(value, name, index) in object">
      {{ index }}. {{ name }}: {{ value }}
    </div>
    
  • v-for的时候可以访问父级区域的数据,根元素的Vue对象的data数据均可访问

  • 官方推荐绑定:key

    最好是绑定id,在.vue文件中使用v-for不绑定key报错,key只能是字符串或数字

    index和key绑定没有意义,因为index和数据不强制绑定

  • 数组变更的方法,会双向绑定渲染到v-for

    push()
    pop()
    shift()
    unshift()
    splice()
    sort()
    reverse()
    
  • 可以结合一些函数,和计算属性,对数据进行筛选等操作

    filter()`、`concat()` 和 `slice()
    
  • 列表渲染的小操作

    1.循环渲染
    

4.过滤器 侦听器 计算属性

1.过滤器filter

  • 基本使用和定义

     1.使用 | 过滤符号 加过滤器名进行过滤
     2.在filters(和methods同级)里定义过滤器函数
     3.过滤器必须需要有返回值
     4.过滤器会默认将|前的源数据作为参数,在过滤器函数中可以接受到
     {{msg | daxie}}
     filters:{
     	daxie(val){
     		console.log("guolv"+val);
     		return val;
        }
    },
    
  • 私有过滤器和全局过滤器

    1.基本概念
    在vue实例下filters定义的是私有过滤器,不可以被其他vue实例使用
    可以使用Vue.filter(name,function)定义注册一个全局过滤器给多个vue实例调用
    2.构造
    Vue.filter(name,function(val){})接受两个参数,第一个是过滤器的名称,第二个是过滤函数
    //可以简写
    3.作用域
    全局过滤器和私有过滤器重名,根据作用域,就近原则调用私有过滤器
    
  • 过滤器使用

    1.可以使用过滤器,格式化一些内容,比如将时间格式化年元日时分秒
    2.过滤器可以调用a|b|c,将a过滤b后再传入c再过滤
    3.过滤器可以传参数,第一参数位置默认为传入数据源|前的内容
    4.Vue3中摒弃了过滤器
    

2.侦听器watch

  • 侦听器的作用

    侦听数据的变化
    
  • 基本属性和用法

    1.在watch里面定义函数
    2.函数名和数据的名称相同
    3.有两个参数,一个新值,一个旧值
     <div id="app">
     	<input type="text" v-model="msg">
     </div>
     Vue.config.devtools = true
     const vm = new Vue({
     el: "#app", //控制哪个dom
         data: {
         // 使用哪些数据
        	 msg:"hello world"
         },
         watch:{
        	 msg(newval,oldval){
         		console.log(newval+":"+oldval);
         		}
     	},
    })
    
  • 对象形式的侦听器和immediate属性

    1.如果需要创建一个刷新页面就处理的侦听器需要使用对象形式创建
    2.将immediate属性设置为true就可以刷新页面就进入侦听状态
    3.使用immediate,没更新,获得的数据为undefined
    const vm = new Vue({
        el: "#app", //控制哪个dom
        data: {
            // 使用哪些数据
            msg:"hello world"
        },
        watch:{
            msg:{
                handler(newval,oldval){
                console.log(newval+":"+oldval); 
                console.log("启动了")  
        		},
        		immediate:true
        	}
        },
        
    })
    
  • deep深度监听

    1.为了方便使用方法定义法,如果需要特殊需求,则使用对象定义法定义watch
    2.侦听对象内部的数据变化,深度监听,需要使用对象定义法进行侦听,将对象定义法中的deep属性设置为true
    watch:{
        msg:{
            handler(newval,oldval){
                console.log(newval); 
                console.log(oldval)  
            },
            immediate:true,
            deep:true
        }
    },
    

3.计算属性computed

  • 计算属性作用

    1.本质上是一个属性,通过一系列的函数计算获得
    2.可以作为vue对象的属性直接使用
    

5.axios

  • 简介

    1.用于发起网络请求的库
    2.axios的返回值是一个Promise对象
    3.后端接口程序返回了一个data是真实数据
    4.axios除了真实数据之外套了壳,补充至config,data,headers,request,status,statusText
    
  • 基本语法

6.组件

7.vue声明周期

8.组件通信

9.ref操纵dom元素

10.数组方法

11.动态组件

12.插槽

13.自定义指令

14.vue路由

VUE案例

案例1 列表渲染

  • 循环渲染中的问题

    1.input checkbox等表单元素使用v-model进行双向绑定
    2.使用v-if v-else选择渲染动态切换的已启用已禁用的状态,考虑性能选择是否用v-show
    3.在插值里写简单的js表达式,不可以写复杂语句,最终是一个值,不要有多条语句
    
  • 动态生成checked

    1.使用label 和 label中的for属性绑定input的id,可以扩大复选框的操作区域
    2.使用v-for动态生成的时候会出现for绑定重名的情况,需要借用id动态生成for的绑定
      label :for="'cb'+item.id"
    
  • 删除操作

    1.除了后台,可以使用list+数组filter的方法,传入id并进行判断,重新绑定,进行重渲染,实现删除的效果
    
  • 添加操作

    1.可以使用.prevent组织默认行为并写自己定义的行为
    2.可以使用return ,终止函数的行为
    3.表单的默认提交行为会刷新页面
    4.
    

Vue-cli

创建

  1. 创建项目过程
使用vue create xxx创建项目
  1. 进入项目文件夹并启动项目
$ cd demoday01
$ npm run serve
  1. 浏览器中响应的端口中修改

src目录文件介绍

1.assets  静态资源,如图片等
2.components   封装的组件
3.main.js    项目的入口文件
4.app.vue   根组件,如果需要修改

项目的运行过程

同过main.js将app.vue渲染到html

Webpack

1.基础学习

1.基本使用

创建一个隔行变色的效果

1.新建目录,在目录下按cmd进入命令行,npm init -y命令,初始化配置文件package.json,
2.目录中新建src文件夹,新建一个index.html,index.js
3.初始化页面结构,创建无序列表
4.安装jquery,使用npm install jQuery -S,会安装到dependencies中
5.使用ES6导入jquery

2.安装webpack

  • 后缀介绍

    -S --save开发阶段和上线都要用

    -D --save-dev开发阶段使用仅仅

    npmjs.com中查询使用哪个后缀
    
  • 安装命令

使用
npm install webpack@5.42.1 webpack-cli@4.7.2 -D
  • 在项目中配置webpack

    1.项目根目录中创建webpack.config.js,初始化

    module.exports={
    //有development和production
        mode:'development'
    }
    

    2.package.json scripts节点下新建dev可以使用npm run dev

     "scripts": {
        "dev":"webpack"
      },
    

当前学习

vue2.0基础 p44

posted @ 2022-03-30 10:20  超安全  阅读(43)  评论(0)    收藏  举报