面试题 - vue/webpack

2019-08-17  本文已影响0人  唐井儿_

1.data为什么是个函数

2.props default为什么是个函数
3.computed watch区别

4.webpack loader写过吗
5.hash chunkhash contenthash

6.代码发布流程,nginx问题
7.npm包
8.父子通信的几种方式
9.router hash history区别
10.数组和对象改变,有时候视图不更新

11.资源文件不是cdn吗,还可以用自己的服务器?
12.vue双向绑定原理
参考https://www.cnblogs.com/wangjiachen666/p/9883916.html
13.如何进行webpack多环境配置
配置package.json文件的scripts,自定义命令行,并使用cross-env.NODE_ENV=production/development指定环境;配置文件中使用这个变量进行区分

JavaScript基础

  1. 怎么解决跨域?

  2. 怎么理解异步的发展过程,例如axios、ajax、promise、await、async、generator等?

    2.1 为什么需要异步?

    • JavaScript是单线程语言,同一时间只能做一件事情;
    • 同步任务进入主线程,按顺序执行,意味着阻塞,前一段代码必须执行完成了才能执行后边代码;
    • 异步是不会造成阻塞的。异步任务进入任务队列,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程。比如promose.then(...)、$nextTick(...)、setTimeout/setInterval的回调等。

    2.2 发展过程

    • 异步最早的解决方案是回调函数,如setTimeout/setInterval的回调、事件回调函数、ajax的回调等。缺点是回调嵌套难以维护,不能try catch错误和回调地狱;
    • 为了解决“回调地狱”,提出了Promise方案。但一定程度上又存在新问题:错误不能被try catch,只有通过catch回调捕获;使用promise的链式回调没从根本上解决回调地狱问题,而是换了种写法,比如后一个请求依赖于前一个的结果,仍然需要嵌套多个promise实例或者then(...);
    • Generator是es6提供的一种异步编程解决方案,遇到yield命令就暂停,等到执行权返回,再从暂停的地方继续向后执行。缺点是需要结合co函数,否则不能自动执行;
    • async是generator的语法糖,async/await使得异步代码看起来像同步代码;
    • 异步编程的目标是让异步逻辑的代码看起来像同步一样。

回调函数 --> Promise --> Generator --> async/await

3.async await promise区别 共同点

async function fn1 () {
  return 123;
}
function fn2 () {
  return 234;
}
console.log(fn1()) // Promise {<resolved: 123>}
console.log(fn2()) // 234 

4.js继承的几种方式

上一篇下一篇

猜你喜欢

热点阅读