vue鼓励将功能和局部页面封装到组件内吗?

注意:加粗的字体为速记的文本(核心点)

1、 响应式布局如何实现

响应式布局可以让网站同时适配不同分辨率和不同的手机端,让客户有更好的体验。
利用对属性设置百分比来适配不同屏幕,注意这里的百分比是相对于父元素; 能够设置的属性有 width、height、padding、margin,其他属性比如 border、font-size 不能用百分比设置的,先看一个简单例子:
顶部是利用设置图片 width: 50%来适应不同的分辨率,由于原始图片高度不同,所以第一张图片顶部会有空白,这种情况最好两张图片宽高保持一致,如果使用强制高度统一,会导致图片变形;
注意:当屏幕大于图片的宽度时,会进行拉伸;解决拉伸方法就是改为
max-width: 50%,但当屏幕大于图片的宽度时,两边会有空白。栏目是利用设置单栏目 width: 25%来适应不同的分辨率。
由于没办法对 font-size 进行百分比设置,所以用的最多就是对图片和大块布局进行百分比设置。
利用媒体查询设置不同分辨率下的css 样式,来适配不同屏幕,先看一个简单例子:
三个不同分辨率下显示对应的背景色。
媒体查询相对于百分比布局,可以对布局进行更细致的调整,但需要在每个分辨率下面都写一套 css 样式;分辨率拆分可视项目具体情况而定。
注意:IE6、7、8 不支持媒体查询。
方案三.rem 响应式布局
当前页面中元素的rem 单位的样式值都是针对于html 元素的font-size 的值进行动态计算的,所以有两种方法可以达到适配不同屏幕:
第一种利用媒体查询,在不同分辨率下给 html 的 font-size 赋值。第二种利用 js 动态计算赋值,缺点就是打开页面时候,元素大小会有一个变化过程
方案四.vw 响应式布局

  • modules:store 的子模块,为了开发大型项目,方便状态管理而使用的。这里我们就不解释了,用起来和上面的一样。
  • key 值:用于管理可复用的元素
    因为 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。这么做使 Vue 变得非常快,但是这样也不总是符合实际需求。 2.2.0+ 的版本里,当在组件中使用 v-for 时,key 是必须的。”

    43、 vue 自定义指令如何使用

    也可以注册局部指令,组件或 Vue 构造函数中接受一个 directives 的选项。

    钩子函数。指令定义函数提供了几个钩子函数(可选)。
    只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。

    使用了.stop 后,点击子节点不会捕获到父节点的事件
    .capture 与事件冒泡的方向相反,事件捕获由外到内,捕获事件:嵌套两三层父子关系,然后所有都有点击事件,点击子节点,就会触发从外至内父节点-》子节点的点击事件
    .self 只会触发自己范围内的事件,不包含子元素
    .once 只执行一次,如果我们在@click 事件上添加.once 修饰符,只要点击按钮只会执行一次。

    1、 在 vue 项目中,难免会有列表页面或者搜索结果列表页面,点击某个结果之后,返回回来时,如果不对结果页面进行缓存,那么返回列表页面的时候会回到初始状态,但是我们想要的结果是返回时这个页面还是之前搜索的结果列表,这时候就需要用到 vue 的 keep-alive 技术了.
    3、 有两个参数 include - 字符串或正则表达,只有匹配的组件会被缓存
    exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存

    2、定义:Object.defineProperty() 直接在一个对象上定义一个新属性,或者修改现有属性,并返回该对象。
    obj 要在其上定义属性的对象。
    prop 要定义或修改的属性的名称。
    descriptor 将被定义或修改的属性描述符。
    返回被操作的对象,即返回 obj 参数
    1)当把 configurable 值设置为 false 后,就不能修改任何属性了,包括自己本身这个属性
    2)想用访问器属性模拟默认行为的话,必须得在里面新顶一个属性,不然的话会造成循环引用

    1、虚拟 DOM 的最终目标是将虚拟节点渲染到视图上。但是如果直接使用虚拟节点覆盖旧节点的话,会有很多不必要的 DOM 操作。例如,一个 ul 标签下很多个 li 标签,其中只有一个 li 有变化,这种情况下如果使用新的 ul 去替代旧的 ul,因为这些不必要的 DOM 操作而造成了性能上的浪费。
    为了避免不必要的DOM 操作,虚拟 DOM 在虚拟节点映射到视图的过程中, 将虚拟节点与上一次渲染视图所使用的旧虚拟节点(oldVnode)做对比,找出真正需要更新的节点来进行 DOM 操作,从而避免操作其他无需改动的 DOM。
    简而言之主要做了两件事:
    提供与真实DOM 节点所对应的虚拟节点 vnode 将虚拟节点vnode 和旧虚拟节点 oldVnode 进行对比,然后更新视图
    2、diff 算法包括几个步骤:
    a.用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中
    b.当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异
    c.把所记录的差异应用到所构建的真正的 DOM 树上,视图就更新了

    49、 vue 中数组中的某个对象的属性发生变化,视图不更新如何解决

    问题原因:因为 vue 的检查机制在进行视图更新时无法监测 数组中的某个对象的属性值的变化。解决方案如下

    一句话简介:更小巧,更快速;支持摇树优化;支持 Fragments 和跨组件渲染;支持自定义渲染器。
    一句话介绍:除渲染函数 API 和 scoped-slot 语法之外,其余均保持不变或者将通过另外构建一个兼容包 来兼容 2.x。
    模板语法的 99% 将保持不变。除了 scoped slot 语法可能会有一些微调之外变动最大的部分将是渲染函数 (render) 中的虚拟 DOM 的格式。
    随着虚拟 DOM 重写,减少 运行时(runtime)开销。重写将包括更有效的代码来创建虚拟节点。

    1.vue2和vue3双向数据绑定原理发生了改变

    defineProperty只能监听某个属性,不能对全对象监听
    可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可)
    可以监听数组,不用再去单独的对数组做特异性操作 vue3.x可以检测到数组内部数据的变化

    在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者。当数据很大时,这可能会在页面载入时造成明显的性能压力。3.x 版本,只会对「被用于渲染初始可见部分的数据」创建观察者,而且 3.x 的观察者更高效。

    3. 更精准的变更通知。

    比例来说:2.x 版本中,使用 Vue.set 来给对象新增一个属性时,这个对象的所有 watcher 都会重新运行;3.x 版本中,只有依赖那个属性的 watcher 才会重新运行。

    (1)在父组件的子组件标签上绑定一个属性,挂载要传输的变量
    (2)在子组件中通过props来接受数据,props可以是数组也可以是对象,接受的数据可以直接使用 props:[“属性 名”] props:{属性名:数据类型}
    (1)在父组件的子组件标签上自定义一个事件,然后调用需要的方法
    (2)在子组件的方法中通过 this.$emit(“事件”)来触发在父组件中定义的事件,数据是以参数的形式进行传递的

    (1)在src中新建一个Bus.js的文件,然后导出一个空的vue实例

    52.Vue中双向数据绑定是如何实现

    vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。

    第一步: 需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter和getter
    这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化

    第二步: compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图

    1、在自身实例化时往属性订阅器(dep)里面添加自己
    2、自身必须有一个update()方法
    3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。

    keep-alive是Vue提供给我们一个内置组件,他可以用来保存我们路由切换时组件的状态

    js中首先有一个最外层的作用域,全局作用域;

    js中可以通过函数来创建一个独立作用域称为函数作用域,函数可以嵌套,所以作用域也可以嵌套;

    原型继承:父类的实例作为子类的原型

    构造函数继承:在子类中使用call方法调用父类的方法并将父类的this改成子类的this

    不能继承原型属性/方法,只能继承父类的实例属性和方法

    组合继承:既能调用父类的实例属性又能调用父类的原型属性

    由于调用了两次父类,所以产生了两份实例

    class中只能定义方法不能定义对象变量等

    class默认是严格模式

    在子类中调用extends方法可以调用父类的属性,用eat调用父类的方法

    浅拷贝只复制指向某个对象的指针,不复制对象本身(引用),新旧对象还是共享同一块内存。
    深拷贝会另外创造一个一模一样的对象(拷贝的是全部),新对象跟原对象不共享内存,修改新对象不会改到原对象。

    var 是不存在块作用域的,let和const有块作用域
    声明之前调用,就会把变量提升到最顶部。 let和const没有变量提升
    var允许重复声明 let和const在同一个作用域内不予许重复声明
    var没有暂时性死区 let和const存在暂时性死区:在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”,
    是否可以修改声明的变量
    var和let可以修改 ,const不可以,因为const声明的变量是一个常量,一旦定义必须赋值且不可改变

    58.Vue 自定义组件及组件封装

    引用组件 注册组件 使用组件
    Vue组件封装(以封装一个button组件为例)
    1/在components文件内创建一个button文件,文件内创建一个index.vue文件,在index.vue文件内写的是原型(包含组件的名字,应用的最底层的HTML标签,分别根据什么条件显示什么功能),同时该文件导出的数据为一个对象。
    2/在button文件下建立一个index.js文件,文件内对新构建组件的名字进行注册。
    3/ 与button文件同级建立一个index.js文件,对组件进行注册,同时也注册进install中,在导出时,不仅要引出全局的,而且单个的也要引出,便于局部或全局引用。
    5/到这里,组件便是封装完成了,在App.vue中可以进行使用了

    一、修改请求静态资源的路径

    防抖: 触发高频事件后 定时器内函数只会执行一次,如果定时器内高频事件再次被触发,则重新计算时间
    按钮提交场景:防止多次提交按钮,只执行最后提交的一次。

    节流 :高频事件触发,在定时器内只会执行一次,所以节流会稀释函数的执行效率。
    1.拖拽场景:固定时间内只执行一次,防止超高频次触发位置变动

    2.缩放场景:监控浏览器 resize

    3.动画场景:避免短时间内多次触发动画引起性能问题

    git branch -d 分支名称 删除分支(分支被合并后才允许删除)(-D 强制删除)

    将本地仓库推送到远程仓库: git push 项目链接

    -u 将推送地址和分支保存,下次推送输入git push即可

    63.什么是盒子模型?

    在我们HTML页面中,每一个元素都可以被看作一个盒子,而这个盒子由:内容区(content)、填充区(padding)、边框区(border)、外边界区(margin)四部分组成。

    程序的运行需要内存。只要程序提出要求,操作系统或者运行时就必须供给内存。
    对于持续运行的服务进程,必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。

    简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。

    1. join (将数组用 - 符号连接起来,原数组不受影响)
    2. split (指定的分隔符,将字符串分割成数组。)
    3.push 该方法可以在数组的最后面,添加一个或者多个元素结构: arr.push(值) 返回值:返回的是添加元素后数组的长度.
    4.pop 该方法可以在数组的最后面,删除一个元素 结构: arr.pop(值)返回值:返回的是刚才删除的元素.
    5. unshift 该方法可以在数组的最前面,添加一个或者几个元素 结构: arr.unshift(值) 返回值: 返回的是添加元素后数组的长度
    8. sort 该方法可以对数组进行排序.

    JS 中常用的数学方法:

    
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    
}

组件化就是将一个页面拆分成一个个小的功能模块,每个功能模块完成属于自己这部分独立的功能,使得整个页面的管理和维护变得非常容易。

  • 组件化是Vue中的重要思想,当我们对vue的基本知识有了一定的基础就要开始封装组件了

它提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构造我们的应用。组件树。

    1.在项目中充分利用组件化的思想
    2.尽可能的将也页面拆分成一个个小的可复用的组件
    3.好处:代码更加方便组织和管理,扩展性也更强

一.注册组件的基本步骤

下面我们用一个封装一个Element Ui 的输入框组件为例,贯彻全文

组件的使用分成三个步骤

注意:只能有一个根元素,否则警告报错
1 template 可以是字面量字符串,缺点是没有高亮,内置在 JavaScript 中,写起来麻烦
2 template 可以写在 script 标签中,虽然解决了高亮的问题,但是也麻烦
3 以上方式都不好,我们最终的解决方案是使用 Vue 的 .vue 单文件组件来写。(webpack)
但是要想使用这种方式必须结合一些构建工具

注册组件 分为 局部注册 与 全局注册,下一章再讲

  1. 组件是独立的作用域,就像我们 Node 中的 JavaScript 模块一样,独立的

  2. 组件的 data 必须是函数
    函数中返回一个对象作为组件的 data

父组件通过 props 向下传递数据给子组件

所以子组件要定义接收的参数

我们可以看到Element Ui 的输入框组件,有这些属性我们可以重新定义封装

子组件通过 events 给父组件发送消息,实际上就是子组件把自己的数据发送到父组件。

我们知道Vue的核心特性之一是双向绑定,

首先 props添加一个value,接收父组件的数据变化。 再添加一个 value的监听,监听父组件的数据变化。 而子组件数据变化的时候会出发这个事件 @input.native="",所以这个时间触发this.$emit('input', val),向父组件传递 子组件的数据变化

  • 插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性。
  • 插槽显不显示、怎样显示是由父组件来控制的,而插槽在哪里显示就由子组件来进行控制

在父组件引用的子组件中写入想要显示的内容(可以使用标签,也可以不用)

在子组件中写入slot,slot所在的位置就是父组件要显示的内容

在子组件中定义了三个slot标签,其中有两个分别添加了name属性header和footer

在父组件中使用template并写入对应的slot值来指定该内容在子组件中现实的位置(当然也不用必须写到template),没有对应值的其他内容会被放到子组件中没有添加name属性的slot中

我是作用域插槽的子组件

在子组件的slot标签上绑定需要的值

在父组件上使用slot-scope属性,user.data就是子组件传过来的值

}

(给前端日刊加星标,提升前端技能)

  • 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十 kb ;

  • 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;

  • 双向数据绑定:保留了 angular 的特点,在数据操作方面更为简单;

  • 组件化:保留了 react 的优点,实现了 html 的封装和重用,在构建单页面应用方面有着独特的优势;

  • 视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;

2.vue父组件向子组件传递数据?

3.子组件像父组件传递事件?

共同点: 都能控制元素的显示和隐藏;

元素,若初始值为 false ,就不会编译了。而且 v-if 不停的销毁和创建比较消耗性能。总结:如果要频繁切换某节点,使用 v-show (切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用 v-if(初始渲染开销较小,切换开销比较大)。

答: keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。

8.说出几种vue当中的指令和它的用法?

9. vue-loader是什么?使用它的用途有哪些?

答:需要使用 key 来给每个节点做一个唯一标识, Diff 算法就可以正确的识别此节点。作用主要是为了高效的更新虚拟 DOM。

13.请说出vue.cli项目中src目录每个文件夹和文件的用法?

  • computed : 当一个属性受多个属性影响的时候就需要用到 computed ,最典型的栗子:购物车商品结算的时候

15.v-on可以监听多个方法吗?

答:当你修改了data 的值然后马上获取这个 dom 元素的值,是不能获取到更新后的值,

17.vue组件中data为什么必须是一个函数?

的特性所导致,在 component 中,data 必须以函数的形式存在,不可以是对象。组建中的 data 写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的 data ,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个 data ,这样改一个全都改了。

18.渐进式框架的理解

答:主张最少;可以根据不同的需求选择不同的层级;

19.Vue中双向数据绑定是如何实现的?

答:vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;核心:关于VUE双向数据绑定,其核心是  Object.defineProperty() 方法。

20.单页面应用和多页面应用区别及优缺点

答:单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入,单页面的页面跳转,仅刷新局部资源。多应用于pc端。

多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整页刷新

单页面的优点:用户体验好,快,内容的改变不需要重新加载整个页面,基于这一点spa对服务器压力较小;前后端分离;页面效果会比较炫酷(比如切换页面内容时的专场动画)。

单页面缺点:不利于seo;导航不可用,如果一定要导航需要自行实现前进、后退。(由于是单页面不能用浏览器的前进后退功能,所以需要自己建立堆栈管理);初次加载时耗时多;页面复杂度提高很多。

答:相同点: assets 和 static 两个都是存放静态资源文件。项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点

不相同点:assets 中存放的静态资源文件在项目打包时,也就是运行 npm run build 时会将 assets 中放置的静态资源文件进行打包上传,所谓打包简单点可以理解为压缩体积,代码格式化。而压缩后的静态资源文件最终也都会放置在 static 文件中跟着 index.html 一同上传至服务器。static 中放置的静态资源文件就不会要走打包压缩格式化等流程,而是直接进入打包好的目录,直接上传至服务器。因为避免了压缩直接进行上传,在打包时会提高一定的效率,但是 static 中的资源文件由于没有进行压缩等操作,所以文件的体积也就相对于 assets 中打包后的文件提交较大点。在服务器中就会占据更大的空间。

建议: 将项目中 template需要的样式文件js文件等都可以放置在 assets 中,走打包这一流程。减少体积。而项目中引入的第三方的资源文件如iconfoont.css 等文件可以放置在 static 中,因为这些引入的第三方文件已经经过处理,我们不再需要处理,直接上传。

  • .capture :与事件冒泡的方向相反,事件捕获由外到内;

  • .self :只会触发自己范围内的事件,不包含子元素;

答:数据驱动、组件系统

数据驱动: ViewModel,保证数据和视图的一致性。

组件系统: 应用类UI可以看作全部是由组件树构成的。

答:jQuery是使用选择器( $ )选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容:$("lable").val(); ,它还是依赖DOM元素的值。Vue则是通过Vue对象将数据和View完全分离开来了。对数据进行操作不再需要引用相应的DOM对象,可以说数据和View是分离的,他们通过Vue对象这个vm实现相互的绑定。这就是传说中的MVVM。

26. 引进组件的步骤

28.SPA首屏加载慢如何解决

答:安装动态懒加载所需插件;使用CDN资源。

答:简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示、不显示、在哪个地方显示、如何显示,就是slot分发负责的活。

31.你们vue项目是打包了一个js文件,一个css文件,还是有多个文件?

答:根据vue-cli脚手架规范,一个js文件,一个CSS文件。

32.Vue里面router-link在电脑上有用,在安卓上没反应怎么解决?

转换请求数据和响应数据;

axios中的发送字段的参数是data跟params两个,两者的区别在于params是跟请求地址一起发送的,data的作为一个请求体进行发送

36.请说下封装 vue 组件的过程?

  1. 建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑。(os:思考1小时,码码10分钟,程序猿的准则。)   

  2. 准备好组件的数据输入。即分析好逻辑,定好 props 里面的数据、类型。  

  3. 准备好组件的数据输出。即根据组件逻辑,做好要暴露出来的方法。  

  4. 封装完毕了,直接调用即可

38.vue初始化页面闪动问题

答:使用vue开发时,在vue初始化之前,由于 div 是不归 vue 管的,所以我们写的代码在还没有解析的情况下会容易出现花屏现象,看到类似于 {{message}} 的字样,虽然一般情况下这个时间很短暂,但是我们还是有必要让解决这个问题的。首先:在css里加上 [v-cloak]

39.vue更新数组时触发视图更新的方法

41.vue修改打包后静态资源路径的修改

cli3版本:在根目录下新建vue.config.js 文件,然后加上以下内容:(如果已经有此文件就直接修改)

### 42.什么是 vue 生命周期?有什么作用?

答:每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做 生命周期钩子 的函数,这给了用户在不同阶段添加自己的代码的机会。(ps:生命周期钩子就是生命周期函数)例如,如果要通过某些插件操作DOM节点,如想在页面渲染完后弹出广告窗,

43.第一次页面加载会触发哪几个钩子?

44.简述每个周期具体适合哪些场景

beforeCreate: 在new一个vue实例后,只有一些默认的生命周期钩子和默认事件,其他的东西都还没创建。在beforeCreate生命周期执行的时候,data和methods中的数据都还没有初始化。不能在这个阶段使用data中的数据和methods中的方法

create: data 和 methods都已经被初始化好了,如果要调用 methods 中的方法,或者操作 data 中的数据,最早可以在这个阶段中操作

beforeMount: 执行到这个钩子的时候,在内存中已经编译好了模板了,但是还没有挂载到页面中,此时,页面还是旧的

mounted: 执行到这个钩子的时候,就表示Vue实例已经初始化完成了。此时组件脱离了创建阶段,进入到了运行阶段。如果我们想要通过插件操作页面上的DOM节点,最早可以在和这个阶段中进行

beforeUpdate: 当执行这个钩子时,页面中的显示的数据还是旧的,data中的数据是更新后的, 页面还没有和最新的数据保持同步

updated: 页面显示的数据和data中的数据已经保持同步了,都是最新的

beforeDestory: Vue实例从运行阶段进入到了销毁阶段,这个时候上所有的 data 和 methods , 指令, 过滤器 ……都是处于可用状态。还没有真正被销毁

destroyed: 这个时候上所有的 data 和 methods , 指令, 过滤器 ……都是处于不可用状态。组件已经被销毁了。

答:created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

46.vue获取数据在哪个周期函数

47.请详细说下你对vue生命周期的理解?

答:总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。

销毁前/后: 在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在。

答:vue是实现了双向数据绑定的mvvm框架,当视图改变更新模型层,当模型层改变更新视图层。在vue中,使用了双向绑定技术,就是View的变化能实时让Model发生变化,而Model的变化也能实时更新到View。

51.怎么定义 vue-router 的动态路由? 怎么获取传过来的值?

第二种: 组件内的钩子

第三种: 单独路由独享组件

第一种: vue异步组件技术 ==== 异步加载,vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件。

56.vuex是什么?怎么使用?哪种功能场景使用它?

答:vue框架中状态管理。在main.js引入store,注入。

场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车

答:如果请求来的数据是不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入vuex 的state里。

如果被其他地方复用,这个很大几率上是需要的,如果需要,请将请求放入action里,方便复用。

以上面试题仅供个人学习,如有错误请指正。谢谢。

}

我要回帖

更多关于 vue调用子组件的方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信