记录面试题(JS+Uniapp)

1、promise

promise就是一个状态机,用来解决异步问题:在es6之前,前端通过回调函数来执行,因为它是一个单线程的,那如果我们有多个异步操作的话,就会产生一个回调嵌套回调地狱的问题,那promise是一个状态机,它刚开始是一个pendding状态,然后通过resolve改成fulfilled,通过reject改成rejected,那我们可以在promise里面执行异步操作,当异步操作完成之后,掉resolve或者reject就可以了,然后在then里面就可以执行它后续的操作,把一个异步操作变成一个链式调用,在then里面再返回一个promise,后面还可以在接着一个then,这样我们可以把一些异步操作串起来,支持多个并发请求

2、普通函数和箭头函数

  • 写法不同
  • this指向不同:function中的this执行环境的不同而不同;箭头函数的this是它自己执行环境最近非箭头函数的this
  • function可以被new 实例化,箭头函数不可以(不能用作构造器)
  • function可以被声明提前,箭头函数不可以,必须先声明后使用不然会报错

3、defer和async的区别:

 4、跨域

协议+域名+端口必须一致,否则就会受到浏览器同源策略的影响

  • proxy
  • ngxin
  • window.name + iframe
  • jsonp
  • 跨域资源贡献(CORS)服务端设置Access-Control-Allow-Origin即可

 5、服务端渲染和客户端渲染区别

服务端渲染:

  • 页面的数据和渲染都是由服务器提供的,浏览器只用来展示页面内容
  • 容易被爬虫爬取数据,同时能被搜索引擎搜索到,能在搜索引擎中向用户展示数据

客户端渲染:

  • 页面的渲染工作都是由浏览器来完成的,服务器只是负责提供数据。
  • 客户端渲染能尽早的把页面展示给用户,用户体验好
  • 不容易被爬虫爬取数据,同时也无法被搜索引擎搜索到

6、import和require的区别

  • import编译时加载;require运行时加载
  • import只加载引入的方法,require先把整个文件加载再读取里面的方法
  • 3require默认非严格模式,import默认严格模式即使没有在顶部加上use strict

7、history和hash的区别

  • history没有#,URL发生变化,会向后端服务器发送请求
  • history是两个API pushState() + replaceState()和一个事件onpopstate监听URL变化;hash通过监听浏览器的onhashChange()事件监听变化,查找对应的路由规则

8、强制缓存和协商缓存

浏览器的缓存主要是为了提高访问效率

强制缓存,首次访问一个网站,里面的一些静态资源(eg.图片、css、js)实际上是从服务器上下载的,如果刷新页面的话,这个资源是没必要在服务器上重新去请求,因为他们没有变动,这种资源,浏览器默认是强制缓存,强制缓存,第二次访问的时候,不会去服务器上重新下载了,同样会返回200状态码,但是资源是从浏览器的本地的缓存里面获取的。

协商缓存,和后台去协商,如果是协商缓存,第一次返回的结果里面,返回一个200的状态码,同时会携带一个是否更新last modify 一个状态,还会返回一个唯一标识,etag,只要资源在服务端没有变化,下次访问的时候,后台对比这个etag唯一标识或者last modify的状态,如果没有变化,会返回一个304的状态,浏览器接受到304状态,浏览去会从本地把缓存的资源取出来,

uniapp

1、Uni-app就是用着vue的指令和小程序的组件和API

2、onPullDownRefresh可以监听到下拉刷新的动作

3、uniapp缓存

  • 同步uni.setStorageSync,获取:uni.getStorageSync
  • 异步uni.setStorage,获取:uni.getStorage

4、路由跳转方式

  • 标签:<navigator url="">
  • uni.navigate to({url:""}),保留当前页面,跳转到应用的某个页面
  •  uni.navigateBack(关闭当前页面,返回上一页面或多级页面)
  • uni.redirectTo({}) 关闭当前页面,跳转其它页面
  •  uni.reLaunch(关闭所有页面,跳转到其他页面),打开任意页面
  • uni.switchTab 关闭所有非tabBar页面,只能打开tabBar页面,不能url传参

5、应用生命周期

  • onLaunch——当uni-app 初始化完成时触发(全局只触发一次)
  • onShow——当 uni-app 启动,或从后台进入前台显示
  • onHide——当 uni-app 从前台进入后台
  • onError——当 uni-app 报错时触发
  • onUniNViewMessage——对 nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯
  • onUnhandledRejection——对未处理的 Promise 拒绝事件监听函数(2.8.1+)
  • onPageNotFound——页面不存在监听函数
  • onThemeChange——监听系统主题变化 

6、页面生命周期

  • onInit——监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad
  • onLoad——监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例
  • onShow——监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
  • onReady——监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
  • onHide——监听页面隐藏
  • onUnload——监听页面卸载
  • onResize——监听窗口尺寸变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值