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. Vue 项目开发

    目录 Vue 项目开发 项目目录结构解析 入口文件 main.js (项目入口) 根组件 app.vue index.html 文件入口 router 路由 components 子组件 项目初始化 ...

  2. 图片IO域 旋转画面的组态 图片是4个静止的风扇 PLC的MW6为风扇指针..

    图片IO域 旋转画面的组态 图片是4个静止的风扇 PLC的MW6为风扇指针.. Plc在循环中断组织块 OB35 中 将MW6 每100ms 加1 加到4 清0 图片[MW6] MW6 是图片指针 对 ...

  3. Linux命令(1)

    cd <directory> Short for "change directory". The shorthand name for the current dire ...

  4. vim学习--usr03 moving around

    Word movement 小写的"w""ge""e""b" w表示向后移动到一个单词开头 ge表示向前移动到一个单词末 ...

  5. java小项目之:抽奖系统!java初学者必备(内附源码)

    [Java]Java摇奖源码,Java抽奖源码,Java随机抽奖源码 任务描述 本次任务要求为某商场开发一套幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了.注册 用 ...

  6. 关于Tomcat部署项目的点点滴滴

    在给客户部署环境时,我们不可能想开发一样,在编辑软件部署一下tomcat就可以正常运行.我们也应该清楚java的运行机制**“先编译,后解释”**的原则.(如下图)![图片描述][1]那么在Tomca ...

  7. mac brew redis

    1.搜索brew search redis //出现如下 ==> Searching local taps... hiredis redis redis-leveldb redis@2.8 re ...

  8. NO18 linux开机自启动设置--开机流程--中文乱码--查看行数

    第八题:装完系统后,希望让网络文件共享服务NES,仅在3级别上开机自启动,该如何做? 解答:什么是开机自启动,在Linux下软件服务随系统启动而启动的配置. 方法一:文件配置法,可以把要启动的服务的命 ...

  9. 微软重制Windows 1.0系统:祖师爷出山了

    Windows官方推特在7月1日发布了一条很有趣的动态,“向大家介绍全新的Windows 1.0,带MS-DOS.时钟等”.配发的视频回顾了从Windows 1.0/3.1到Windows 10期间, ...

  10. endnote的使用

    下载网址: https://support.clarivate.com/Endnote/s/article/EndNote-Installer-download?language=en_US 关联of ...