1. 生命周期
    
        beforeCreate :
                数据观测 和 初始化事件还未开始
 
        created : 
                完成数据观测 , 属性和方法运算 , 初始化事件 , $el属性还没有显示出来
 
        beforeMount : 
                render函数 首次被调用. 
                完成了 编译模板 , data中数据 结合 模板 生成了html虚拟对象.
                但未挂载到页面上
 
        mounted : 
                el属性 被 vm.$el 替换 , 并挂载到实例上之后调用.  
                使用内存中的html对象 替换掉 el属性指向的Dom对象.完成模板中的html渲染到html页面中.
                此过程可以进行ajax操作.
 
        beforeUpdate : 
                数据更新之前调用. 
                发生在虚拟dom重新渲染和打补丁之前.
                可以在该钩子中 进一步更改状态 . 不会触发重新渲染的过程
 
        updated :
                数据更新导致的虚拟dom重渲染之后调用.
                可以执行依赖于dom的操作.
                避免更新状态 , 也就是用到 dom时 , 最好时读操作 , 因为有可能导致更新无限循环.
                在服务器渲染期间不被调用.
 
        beforeDestroy : 
                实例销毁前调用 . 即 还可以操作实例.
 
        destroyed  :  
                实例销毁之后调用 . 
                调用后 所有的事件监听器会被移除.
                所有子实例被销毁.
                在服务器渲染期间不被调用.
 
  1. 双向数据绑定
        实现原理 : 
            数据劫持 + 发布者-订阅者 模式.
                通过 Object.defineProperty() 来劫持各个属性的setter/getter .
                在数据变动时,发布消息给订阅者,触发相应监听回调.
 
 
 
  1. 组件间参数传递
        父子组件传值
                父 -> 子 :  子组件通过props方法接受数据
                子 -> 父 :  $emit方法传递数据
 
        非父子组件传值
                eventBus : 事件中心 . 传递事件 , 接收事件 . 相当于中转站 .
                项目比较小的时候 推荐使用.
 
  1. 路由
        hash模式 和 history模式
        
        hash模式 : 
                符号"#"及其后面的字符 所构成的字符串.
                js通过 window.location.hash获取
                hash不会包含在请求中传递.
               
        history模式:
                采用HTML5的新特性.
                提供了 pushState() , replaceState() 对浏览器历史记录栈进行修改.
                提供了 popState() 来监听转台的变更.
                想用好 必须有后台的配置支持.
 
  1. 自定义指令
        局部指令:
                new Vue({
                    el:"#app",
                    data:{},
                    directives:{
                        dir_01:{
                            inserted(el){
                                console.log(el);
                                console.log(arguments);
                            }
                        }
                    }
                });
 
        全局指令:
                Vue.directive('dir2',{
                    inserted(el){
                        console.log(el);
                    }
                });
 
        指令的使用 : 
            <div id="app">
                <div v-dir_01 ></div>
                <div v-dir2 ></div>
            </div>
 
  1. 自定义过滤器
        <div id="app">
            <input type="text" v-model="msg" />
            {{ msg | capitalize }}
        </div>
 
        局部过滤器:
            new Vue({
                el:"#app",
                data:{
                    return {
                        msg : ''
                    }
                },
                filters:{
                    capitalize : function(value){
                        if(!value) return ''
                        return value.toString().charAt(0).toUpperCase() + value.toString().slice(1);
                    }
                }
            });
 
        全局过滤器:
            Vue.filter('capitalize' , function(value){
                if(!value) return ''
                return value.toString().charAt(0).toUpperCase() + value.toString().slice(1);
            });
 
  1. keep-alive
            keep-alive 是 Vue的一个内置组件 , 用以能避免重复渲染.
            包含两个属性 : include , exclude . 其中exclude的优先级更高.
            两个属性支持 正则,函数,数组等表达式. 
            多条件 用逗号 ',' 分隔.
 
  1. vue的计算属性
            在模板中放入太多的逻辑会让模板难以维护.
            对数据进行复制处理 , 且可能多次使用的时候 , 尽量采取计算属性方式.
            优点 : 
  • 数据处理结构清晰
  • 依赖于数据 , 数据更新 ,  处理结果自动更新
  • 计算属性内部this指向vm实例.
  • 在template调用时,直接写计算属性名即可.
  • 与methods相比:
    • 当依赖的数据不变时,computed会从缓存中获取
    • 而methods无论如何都会重新计算.
 
  1. 其他面试题
        v-if 与 v-show 区别
            v-if 条件判断 , v-show 操作css属性 display ( block 或 none).
            v-show 性能更好.v-if 适用的情况更广.
 
        vueJs的核心是 : 数据驱动 , 组件系统
 
        vue 常用指令
            v-if , v-for , v-bind , v-on , v-show , v-else 
 
        vue常用修饰符
            .prevent : 提交事件不再重载页面
            .stop : 阻止事件冒泡
            .self : 当事件发生在该元素本身而不是子元素的时候触发
            .capture : 事件监听, 当事件发生的时候调用.
 
        v-on可以绑定多个方法.
 
        vue等单页面应用的缺点:
  • 不支持低版本,最低支持IE9
  • 不利于SEO
  • 第一次加载页面耗时相对长一些
  • 不能使用浏览器导航按钮前进,后退. 需要自行实现逻辑.
 
 
 
 

Vue核心知识一览的更多相关文章

  1. 前端知识扫盲-VUE知识篇一(VUE核心知识)

    最近对整个前端的知识做了一次复盘,总结了一些知识点,分享给大家有助于加深印象. 想要更加理解透彻的同学,还需要大家自己去查阅资料或者翻看源码.后面会陆续的更新一些相关注知识点的文章. 文章只提出问题, ...

  2. Vue核心知识——computed和watch的细节全面分析

    computed和watch的区别 computed特性 1.是计算值,2.应用:就是简化tempalte里面{{}}计算和处理props或$emit的传值,computed(数据联动).3.具有缓存 ...

  3. Vue核心知识-computed和watch的使用场景和方法

    https://www.jianshu.com/p/bb7a2244c7ca

  4. Vuex核心知识(2.0)

    Vuex 是一个专门为 Vue.js 应该程序开发的状态管理模式,它类似于 Redux 应用于 React 项目中,他们都是一种 Flux 架构.相比 Redux,Vuex 更简洁,学习成本更低.希望 ...

  5. JavaScript ES6 核心功能一览(转)

    原文地址:Overview of JavaScript ES6 features (a.k.a ECMAScript 6 and ES2015+) 原文作者:Adrian Mejia 译文出自:掘金翻 ...

  6. Vue大概知识体系和学习参考

    Vue大概知识体系和学习参考文档 官方文档学习,参考,借鉴地址:https://cn.vuejs.org/v2/guide/installation.html 菜鸟教程:https://www.run ...

  7. 零基础的学习者应该怎么开始学习呢?Python核心知识学习思维分享

    近几年,Python一路高歌猛进,成为最受欢迎的编程语言之一,受到无数编程工作者的青睐. 据悉,Python已经入驻部分小学生教材,可以预见学习Python将成为一项提高自身职业竞争力的必修课.那么零 ...

  8. Unity3D核心类型一览

    Unity3D核心类型一览 本文记录了Unity3D的最基本的核心类型.包括Object.GameObject.Component.Transform.Behaviour.Renderer.Colli ...

  9. ES6,ES2105核心功能一览,js新特性详解

    ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...

随机推荐

  1. YTT的提问以及由此引出的未来规划之思考

    未来规划之思考 我已经很久没有考虑过未来的规划了,之所以没有规划,是因为我觉得现实是复杂的,我现在的认知还不够深刻,建立在肤浅认知上的规划是容易经受现实的冲击而轻易改变的,与其规划变来变去,还不如干脆 ...

  2. HTML有2种路径的写法:绝对路径和相对路径

    HTML有2种路径的写法:绝对路径和相对路径 2016年11月30日 17:51:20 Bolon0708 阅读数 21775   版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...

  3. 「NOIP2011」聪明的质监员

    传送门 Luogu 解题思路 第一眼肯定是没什么思路的 dalao勿喷,但我们仔细看一看式子就会发现 \(Y\) 是随着 \(W\) 的变大而变小的. 所以 \(Y\) 随 \(W\) 的变化是单调的 ...

  4. DotNetSpeech----文本转wave语音文件

    wav操作引入dll(DotNetSpeech.dll),引入以后需要选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False.不然会提示无法嵌入互操作类型"Spee ...

  5. sklearn中的多项式回归算法

    sklearn中的多项式回归算法 1.多项式回归法多项式回归的思路和线性回归的思路以及优化算法是一致的,它是在线性回归的基础上在原来的数据集维度特征上增加一些另外的多项式特征,使得原始数据集的维度增加 ...

  6. CodeForces - 876B Divisiblity of Differences

    题意:给定n个数,从中选取k个数,使得任意两个数之差能被m整除,若能选出k个数,则输出,否则输出“No”. 分析: 1.若k个数之差都能被m整除,那么他们两两之间相差的是m的倍数,即他们对m取余的余数 ...

  7. ZCGL项目解析——概述

    模块清单 微服务模块:routeservice.eurekaservice.configservice 数据服务模块:fdfsservice.hbaseservice 工具服务模块:common 系统 ...

  8. BVS安全检测之检查Linux是否口令生存周期

    口令生存周期的配置文件为 /etc/login.defs vim 打开该文件,命令模式下输入 /PASS_MAX_DAYS 找到该配置信息的位置 我的Linux操作系统默认显示的是99999,说明我当 ...

  9. SpringIOC初始化过程源码跟踪及学习

    Spring版本 4.3.2,ssm框架 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 web.xml <!--配置获取项目的根路径,java类中使用System.getProperty ...

  10. python 数据处理 对txt文件进行数据处理

    数据: 对txt文件进行数据处理: txt_file_path = "basic_info.txt" write_txt_file_path = "basic_info1 ...