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——监听窗口尺寸变化