小程序热启动及冷启动?
冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动,会调用onLoad
热启动 :如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
什么时候销毁小程序:如果小程序占用的内存过高或者小程序切入后台超过5分钟以上没有操作,那么微信会销毁小程序
onShow()不管冷启动还是热启动都会调用
小程序如何统一处理登陆?
blog.csdn.net/yyjjyysleep… 重写onShow方法
如何保持代码风格统一?
Eslint 代码规范检查
pitter 代码格式化插件
husky git钩子,可以执行自己的操作,防止一些问题commit
commitlint commit规范
用过哪些eslint插件?
| 名称 | 作用 |
|---|---|
| eslint-plugin-import | 这个插件意在提供对ES6+ import/export语法的支持,有助于防止你写错文件路径或者引用的变量名。 |
| eslint-plugin-import-helpers | 在模块导入顺序中强制执行可配置约定 |
| eslint-plugin-promise | 这个插件意在通过代码风格检测让开发者养成较好地使用promise的方式(最佳实践,best practices)。比如在对promise使用了then之后会要求你加一个catch捕获下异常, |
| eslint-plugin-react | www.npmjs.com/package/esl… www.jianshu.com/p/339bdb463… |
| eslint-plugin-jsx-a11y | 一些 jsx 的 rules 规范 github.com/jsx-eslint/… |
| eslint-plugin-react-hooks | 不要在循环,条件或嵌套函数中调用 Hook 只在 React 函数中调用 Hook |
| eslint-plugin-vue | eslint.vuejs.org/rules/ |
首屏及白屏时间优化?
白屏时间 = 地址栏输入网址后回车 - 浏览器出现第一个元素
首屏时间 = 地址栏输入网址后回车 - 浏览器第一屏渲染完成
首屏时间优化:
服务端渲染 缓存
图片懒加载
图片大小
js大小
可以使用工具,也可以在chrome中输入Performance.timing
react-router模式及原理
- createHashHistory: 主要通过hash来实现,监听hashchange方法
- createBrowserHistory: 通过
html5里面的history,监听popstate方法,只有浏览器会触发 - createMemoryHistory:
node环境下:,主要存储在memeory里面
export和commonjs的区别
IM聊天
// Preload
preloadImage() {
const imgList = [
require('@/assets/imgs/error.png'),
require('@/assets/imgs/ticket_bg.png')
];
for (let i = 0; i < imgList.length; i++) {
const newIMG = new Image();
newIMG.src = imgList[i];
}
}
//Prefetch
<link rel="prefetch" href="static/img/ticket_bg.a5bb7c33.png">
图片上传进度交互
// 设置请求头
let config = {
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: (e) => {
console.log('原生获取上传进度的事件: ', e);
// 原生获取上传进度的事件
if (onUploadProgress) onUploadProgress(e);
},
};
对文件进行切片断点上传,失败重传, file.slice(i, 1024*50)
BFC
http1.0和http2.0的区别
-
新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
-
多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。
-
header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
-
服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。
作者:code小生助手
链接:juejin.cn/post/684490…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
setState发生了什么
小程序中白屏问题
1、使用webview组件打开h5页时,需要先在b端平台配置域名
2、为了监测域名的合法性,需要下载一个校验文件,并放到域名的根目录下。这样,开放平台才能校验这个域名是不是属于你的。如果web-view组件中不使用配置好的域名,则web-view组件不会生效。
3、如果web-view使用的网页中如果使用了iframe,iframe的src中使用的域名也需要配置到域名白名单中
4、h5页必须是https的
setTimeout和requestAnimationFrame
如何使a==1&&a==2&&a==3为true
重写valueOf segmentfault.com/a/119000001…
0.1+0.2!=0.3
二进制,相加溢出,四舍五入 zhuanlan.zhihu.com/p/95318421
浏览器缓存
涉及状态码304和504
cache-control(http1.1)
expires
etag
If-None-Match
Last-Modified
If-Modified-Since
mp.weixin.qq.com/s/r-sTmNpft… www.jianshu.com/p/b5188d6dc…
xss 攻击
cookie跨站
跨子域
跨站:cookie+ticket
跨域
vue2.0与vue3.0区别
-
Object.defineProperty 对数组和对象的表现一致,并非不能监控数组下标的变化,vue2.x中无法通过数组索引来实现响应式数据的自动更新是vue本身的设计导致的,不是 defineProperty 的锅。
-
Object.defineProperty 和 Proxy 本质差别是,defineProperty 只能对属性进行劫持,所以出现了需要递归遍历,新增属性需要手动 Observe 的问题。
-
Proxy 作为新标准,浏览器厂商势必会对其进行持续优化,但它的兼容性也是块硬伤,并且目前还没有完整的polyfill方案。
vue的mixin
websocket 握手
chrome版–新版 blog.csdn.net/QQ729533020…
必须是有效的http request 格式;
HTTP request method 必须是GET,协议应不小于1.1 如: Get / HTTP/1.1;
必须包括Upgrade头域,并且其值为”websocket”;
必须包括”Connection” 头域,并且其值为”Upgrade”;
必须包括”Sec-WebSocket-Key”头域,其值采用base64编码的随机16字节长的字符序列;
如果请求来自浏览器客户端,还必须包括Origin头域 。 该头域用于防止未授权的跨域脚本攻击,服务器可以从Origin决定是否接受该WebSocket连接;
必须包括”Sec-webSocket-Version” 头域,当前值必须是13;
可能包括”Sec-WebSocket-Protocol”,表示client(应用程序)支持的协议列表,server选择一个或者没有可接受的协议响应之;
可能包括”Sec-WebSocket-Extensions”, 协议扩展, 某类协议可能支持多个扩展,通过它可以实现协议增强;
可能包括任意其他域,如cookie.
nginx 匹配优先级
nginx 重定向
- redirect - 返回302临时重定向,如果替换字段用http://开头则被使用。
- permanent - 返回301永久重定向。
keep-alive原理
webpack相关面试题
module\chunk\bundle关系
typeof原理
原理是这样的, 不同的对象在底层都表示为二进制, 在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0, 自然前三位也是 0, 所以执行 typeof 时会返回“object”。
-----------------------知乎-------------
webpack流程,jsx编译,vue 编译。
style-loader\css-loader的区别
promise.all、promise.race的实际应用
promise.all 提交表单时调用多个接口 www.cnblogs.com/coderzzw/p/…
promise.race 超时情况设置超时时间提示 www.zhihu.com/question/67…
promise then的第二个参数和catch的区别
reack hooks用到了哪些
window上的i
ssr选型
样式题
头像遮盖 ( () () ) 第一个头像层级最高
BFF
微前端
----------字节---------------
跨域时携带cookie
withCredential = true blog.csdn.net/chjj0904/ar…
组件库
dumi+mdx zhuanlan.zhihu.com/p/196758730 zhuanlan.zhihu.com/p/110381664 www.mdxjs.cn/