Vue.js中的高级面试题及答案


Posted in Javascript onJanuary 13, 2020

Vue-loader 是 Webpack 的加载模块,它使我们可以用 Vue 文件格式编写单文件组件。

单文件组件文件有三个部分,(模板、脚本和样式)。 vue-loader 模块允许 webpack 使用单独的加载模块 (例如 SASS 或 SCSS 加载器) 提取和处理每个人部分。该设置使我们可以使用 Vue 文件无缝编写程序。

vue-loader 模块还允许把静态资源视为模块依赖性,并允许使用 webpack 加载器进行处理。 而且还允许还开发过程中进行热重装。

2、prop 如何指定其类型要求 ?

通过实现 prop 验证选项,可以单个 prop 指定类型要求。这对生产没有影响,但是会在开发段发出警告,从而帮助开发人员识别传人数据和 prop 的特定类型要求的潜在问题。

配置三个 prop 的例子 :

props : {
 accountNumber:{
  type : Number,
  required : true
 },
 name :{
  type : String,
  required : true
 },
 favoriteColors : Array
}

3、什么是虚拟 DOM ?

文档对象模型或 DOM 定义一个接口,该接口允许 JavaScript 之类的语言访问和操作 HTML 文档。 元素由树中的节点表示,并且接口允许我们操作它们。但是此接口需要付出代价,大量非常频繁的 DOM 操作会使页面速度变慢。

Vue 通过在内存中实现文档结构的虚拟表示来解决此问题,其中虚拟节点 (Node) 表示 DOM 树中的节点。当需要操纵时,可以在虚拟 DOM 的 内存中执行计算和操作,而不是在真实 DOM 上进行操纵。这自然会更快,并且允许 DOM 算法计算最优化算出计算出最优化的方式来更新实际 DOM 结构。

一旦计算出,就将其应用于实际的 DOM 树,这就提高了性能,这就是为什么基于虚拟 DOM 的框架 (例如 Vue 和 React) 如此突出的原因。

4、什么是 Vue 插件 ?

Vue 插件允许开发人员构建全局级别的功能并将其添加到 Vue。用于向程序添加可以全局访问的方法和属性、资源、选项,mixin 以及其他自定义 APl。 VueFire 是 Vue 插件的一个例子,该插件添加了 Firebase 特定的方法并将其绑定到整个程序。 之后 firebase 函数可在程序结构中的任何位置的 this 上下文中使用。

5、什么是 mixin ?

Mixin 使我们能够为 Vue 组件编写可插拔和可重用的功能。 如果你希望再多个组件之间重用一组组件选项,例如生命周期 hook、 方法等,则可以将其编写为 mixin,并在组件中简单的引用它。然后将 mixin 的内容合并到组件中。如果你要在 mixin 中定义生命周期 hook,那么它在执行时将优化于组件自已的 hook。

6、 什么是渲染函数 ?举个例子。

Vue 允许我们以多种方式构建模板,其中最常见的方式是只把 HTML 与特殊指令和mustache 标签一起用于相响应功能。但是你也可以通过 JavaScript 使用特殊的函数类 (称为渲染函数) 来构建模板。这些函数与编译器非常接近,这意味它们比其他模板类型更高效、快捷。由于你使用 JavaScript 编写渲染函数,因此可以在需要的地方自由使用该语言直接添加自定义函数。

对于标准 HTML 模板的高级方案非常有用。

这里是用 HTML 作为模板 Vue 程序

new Vue ({
 el: '#app',
 data:{
  fruits: ['Apples','Oranges','Kiwi']
 },
 template:
 `<div>
  <h1>Fruit Basket</h1>
  <ol>
  <li v-for="fruit in fruits">{{ fruit }}</li>
  </ol>
  </div>
 `
});

这里是用渲染函数开发的同一个程序:

new Vue({
 el: '#app',
 data: {
 fruits: ['Apples', 'Oranges', 'Kiwi']
 },
 render: function(createElement) {
 return createElement('div', [
  createElement('h1', 'Fruit Basket'),
  createElement('ol', this.fruits.map(function(fruit) { 
  return createElement('li', fruit); 
  }))
 ]);
 }
});

输出如下:

Fruit Basket

1、Apples 2、Oranges 3、Kiwi

在上面的例子中,我们用了一个函数,它返回一系列 createElement() 调用,每个调用负责生成一个元素。尽管 v-for 指令在基于 HTML 的模板中起作用,但是当时用渲染函数时,可以简单的用标准的 .map() 函数遍历 fruits 数据数组。

7、哪个生命周期 hook 最合适从 APl 调用中获取数据 ?

尽管这取决于组件的用途及,但是创建的生命周期 hook 内通常非常适合放置 APl 调用。这时可以使用组件的数据和响应性功能,但是该组件尚未渲染。

8、什么时候调用 "updated" 生命周期 hook ?

在更新响应性数据并重新渲染虚拟 DOM 之后,将调用更新的 hook。它可以用于执行与 DOM 相关的操作,但是 (默认情况下) 不能保证子组件会被渲染,尽管也可以通过在更新函数中使用 this.$nextTick 来确保。

9、在 Vue 实例中编写生命周期 hook 或其他 option/propertie 时,为什么不使用箭头函数 ?

箭头函数自已没有定义 this 上下文中。当你在 Vue 程序中使用箭头函数 ( => ) 时,this 关键字病不会绑定到 Vue 实例,因此会引发错误。所以强烈建议改用标准函数声明。

10、什么是异步组件 ?

当大型程序使用大量组件时,从服务器上同时加载所有组件可能是没有意义的。在这种情况下,Vue 允许我们在需要时定义从服务器异步加载的组件。在声明或注册组件时, Vue 接受提供 Promise 的工厂函数。然后可以在调用该组件时对其进行 "解析"。

通过仅加载基本组件并把异步组件的加载推迟到未来的调用时间,可以节省带宽和程序加载时间。

这是一个异步组件的简单示例。

new Vue({
 components: {
  'tweet-box': () => import('./components/async/TweetBox')
 }
});

当以这种方式使用时,Webpack的代码拆分将用于提供此功能。

总结

以上所述是小编给大家介绍的Vue.js中的高级面试题及答案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript cookies操作集合
Apr 12 Javascript
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
正则表达式搭配js轻松处理json文本方便而老古
Feb 17 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
May 12 Javascript
JavaScript对Json的增删改属性详解
Jun 02 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
Vue.js 2.x之组件的定义和注册图文详解
Jun 19 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 Javascript
Vue父子组件传值的一些坑
Sep 16 Javascript
深入理解redux之compose的具体应用
Jan 12 #Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 #Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
Jan 12 #Javascript
ES2020 新特性(种草)
Jan 12 #Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 #Javascript
es6 for循环中let和var区别详解
Jan 12 #Javascript
js 计数排序的实现示例(升级版)
Jan 12 #Javascript
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
使用PHP获取网络文件的实现代码
2010/01/01 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
农民工工资发放承诺书
2014/03/31 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书