首页 前端知识 vuejs从入门到精通(三)笔记,学习:尚硅谷Vue2.0 Vue3.0全套教程

vuejs从入门到精通(三)笔记,学习:尚硅谷Vue2.0 Vue3.0全套教程

2025-03-19 11:03:40 前端知识 前端哥 264 734 我要收藏

目录

一、表单输入绑定

二、过滤器

2.1、局部写法:

2.2全局过滤器语法:

三、内置指令汇总

四、自定义指令

4.1、布局定义、函数式:

4.2、第二种写法: 对象式:

4.3、全局自定义指令

4.4、总结:

五、生命周期

5.1、简介

5.2、八个阶段

5.3、生命周期图解

六、vue组件

6.1、传统方式编程

6.2、vue组件编程

6.3、组件使用

6.4、组件总结

七、vueComponent构造函数


 

一、表单输入绑定

        表单一般输入框、下拉、多选、单选、文本框, 都使用 v-model去绑定值;

<input v-model="message" placeholder="edit me">
<textarea v-model="message" placeholder="add multiple lines"></textarea>

// 复选框
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>

// 单选框
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>

// 选择
<select v-model="selected">
    <option disabled value="">请选择</option>
    <option>A</option>
    <option>B</option>
</select>

二、过滤器

数据处理的方式, 一般 computed、methods也能实现功能。

{{ 变量 | 过滤器1 | 过滤器2 }}

2.1、局部写法:

可以传参、可串联多个过滤器

{{ time | timeFormater}}
将日期格式化, timeFormater默认为函数, time默认是传入的值;

filters: {
    timeFormater(value){
        // 通过一系列方法处理value,并return输出
        return value;
    }
}

//timeFormater 函数也可以传参数
{{ time | timeFormater('YYYY-MM-DD')}}
// str设置默认值
timeFormater(value, str='YYYY年MM月DD日 HH:mm:ss'){
    // 通过一系列方法处理value,并return输出
    // return value;
    return dayjs(value).format(str)
}

2.2全局过滤器语法:

Vue.filter('过滤器名', function(value){
    // 任意处理代码, 符合需求即可
    return value.sploce(0,4);
})

三、内置指令汇总

v-text       给标签插入文本   类似于{{}}插值语法

{{}}           插值语法

v-bind      单向绑定解析表达式,简写成 :xxx

v-model   双向数据绑定,表单中多使用;

v-for        遍历数组、对象、字符串

v-on        绑定事件,简写为 @

v-if          条件渲染,动态控制节点是否存在

v-else     条件渲染,动态控制节点是否存在

v-show    条件渲染,动态控制节点是否展示

v-html     插入文本,支持html语法解析

v-cloak   等vue内容渲染好之后再显示, 避免出现{{}}这种内容;

v-once   加在标签上可以保留原始值不变,初始化一次后不会再改变

v-pre     不解析插值语法这些,写的什么样,显示的就是什么样

<h3 v-pre>初始化的n:{{n}}</h3>
显示: 初始化的n:{{n}}

四、自定义指令

4.1、布局定义、函数式:

directives:{
        big(element, binding){ //自定义的指令也是方法, 存在两个参数,element:DOM元素本身;
        }
}
<span  v-big="num"></span>

设置如下:

directives:{
    big(element, binding){ 
        element.innerText = binding.value * 10;
    }
}

 指令方法内部去控制html的一些修改:

element.className = 'demo'

element.value = 9

element.onclick = ()=>{}

element.focus()

element.parentElement.style.backgroundColor = 'red'

4.2、第二种写法: 对象式:

v-fbind='num'

directives:{
    fbind: {
        // 指令与元素成功绑定时
        bind(element, binding){
        }
        // 指令所在元素被插入页面时
        inserted(element, binding){
        }
        // 指令所在模板被重新解析时
        update(element, binding){
        }
    }
}

相当于,函数式,执行了对象式的 bind和update方法, 只是缺少了inserted

4.3、全局自定义指令

Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})

4.4、总结:

1、可以写局部指令 和 全局指令

2、配置对象中含3个回调

        1)、.bind:指令与元素成功绑定时调用

        2)、.inserted:指令所在元素被插入页面时调用

        3)、.update:指令所在模板结构被重新解析时调用。

3、备注:

        1)、指令定义时不加 v-,但是使用时要加 v-

        2)、指令名如果是多个单词。要使用 kebab-Case命名方式,不要用camelCase命名。

五、生命周期

5.1、简介

        1、又叫:生命周期回调函数,生命周期函数,生命周期钩子

        2、什么是声明周期:vue在关键时候帮我们调用的一些特殊名称的函数;

        3、生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求来编写的。

        4、生命周期函数中的this指向的是VM 或者 组件实例对象;

5.2、八个阶段

        beforeCreate、created、        解析

        beforeMount、mounted、       生成真实DOM

        beforeUpdate、updated、      数据变化更新DOM

        beforeDestroy、destroyed      组件、DOM注销,销毁

5.3、生命周期图解

六、vue组件

        vue组件化编程

6.1、传统方式编程

        1)、依赖关系混乱

        2)、不好维护代码复用率不高 

6.2、vue组件编程

       可以根据页面结构,把页面拆成几个模块, 每个模块包含一个部分;

        2.1、模块:

                理解:向外提供特定功能的js程序,一般就是一个js文件

                为什么:js文件很多很复杂

                作用:复用js、简化js的编写,提高js运作效率

        2.2、组件

                用来实现局部、特定 功能效果的代码集合(html、css、js、image),多用与有复杂、重复功能的页面;

                可以复用编码、简化项目编码、提高运行效率

6.3、组件使用

        6.3.1、定义组件:

Vue.component('button-counter', {
  data: function () {
    return {
      count: 0
    }
  },
  template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
})

        注意:组件的data必须是个函数。return要使用的数据

        6.3.2、全局注册组件:

new Vue({ el: '#components-demo' })

// 方法二:
Vue.components('使用名', 定义的组件名)

        6.3.3、局部注册组件:

        components: {

                使用名1: 创建的组件1,

                使用名2: 创建的组件2 ......

        }                  

        6.3.4、使用组件

        <使用名1></使用名1>

6.4、组件总结

        6.4.1、使用组件的三大步骤:

                定义组件(创建组件)、注册组件、使用组件(写组件标签)

        6.4.2、如何定义一个组件?

                使用Vue.extend(options)创建,其中options 和 new Vue(options) 时传入的options几乎一样,但也存在如下区别

                1、el不要写:最终所有的组件都要经过一个vm的管理,由vm中的el决定服务用哪个容器;

                2、data必须写成函数:避免组件被复用时,数据存在引用关系;

                3、使用template可以配置组件结构

const hello = Vue.extend({
    name: 'heoolComponent',
    template: `
        <div><h2>你好:{{name}}</h2></div>
    `,
    data(){
        return {
            name: 'TOM'
        }
    },
    methods: {},
    mounted: {},
    computed: {}
})

        6.4.3、如何注册组件?

                1)、局部注册:靠new vue的时候传入components选项

                2)、全局注册:靠Vue.component('使用组件名',  组件);

        6.4.4、编写组件标签

                <组件名></组件名>

        

七、vueComponent构造函数

        1、school组件本质是一个名为 vueComponent的构造函数,且是vue.extend生成的

        2、我们使用<school></school>或<school/>时,vue解析会帮我们创建school组件的实例对象;也就是执行 new VueComponent(options)

        3、注意:每次调用vue.extend返回的都是一个新的vueConponent

        4、this指向

                1)、组件配置: data、methods、watch、computed的this都是vueConponent实例对象

                2)、new Vue()配置中:data、methods、watch、computed的this都是vue 实例对象      

        5、vueComponent 的实力对象,以后建成vc(也可称:组件实例对象)

                vue的实例对象,简称vm

    

          

转载请注明出处或者链接地址:https://www.qianduange.cn//article/24097.html
标签
评论
发布的文章

动态规划感悟1

2025-03-20 12:03:52

华为NAS真实测评!

2025-03-20 12:03:52

Java设计模式之代理模式

2025-03-20 12:03:51

Linux 锁、线程同步

2025-03-20 12:03:48

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!