前端开发中疏漏知识点补充

1.导入异步组件

<1>使用工厂函数:

只有在需要渲染异步组件的时候才会被下载和编译

Vue.component('xxx',()=>import('./xxx...'))

需要使用大量数据时:比如仪表盘(有大量图标)

<2>错误处理:工厂函数的第二个参数

Vue.component('xxx',()=>import('./xxx...'),err=>{
    console.log('捕捉到了错误')
})

<3>缺点:

①多发网络请求;②多个异步组件会有加载顺序的问题;③异步组件嵌套通信

2.性能优化

<1>可以对图片进行优化,比如图片的格式,使用base64、CSSSprite或者iconfont、webP之类,刚进入页面的时候使用压缩的比较厉害的图片作为预览,

<2>组件的懒加载、路由懒加载,提高页面性能

<3>减少HTTP请求,将多个信息整合到一个请求中,也可以使用分页加载,每次只获取一部分数据;

<4>代码优化:比如使用事件委托、减少DOM操作次数

<5>获取到数据之后可以采用vuex和缓存,防止多次请求

3.webSocket的了解

一个全双工通信协议,服务器端也可以主动向前端发送消息

场景:家装小程序的联系客服、物流的实时追踪、家具仓储管理系统中的echarts的实时更新

难点

①连接的建立、断开、错误处理,定时发送心跳包

②消息具有不同的类型,需要匹配不同的解析方式

③跨域问题:代理服务器

④多并发处理,有可能同时收到多条数据,需要考虑顺序

4.购物车中登录token过期自动刷新

为了用户在进行某些操作的时候更加连贯,不会因为token过期导致体验感很差,当用户在那些页面当中时,使用fresh_token来进行token的自动刷新

5.uniapp中用到过哪些api

<1>uni.getPosition;uni.createMapContext;uni.setStorage;uni.getStorage;uni.connectSocket

6.有哪些场景使用到了扩展运算符

①计算当前商品所有样式中的最大值,因为得到的是一个数组,可以采用Math.max来获取;
②动态创建用户路由的时候,将用户路由追加到路由表

7.ssl协议

应用层通信协议

第一阶段确认SSL版本、加密算法压缩算法之类

第二阶段握手(服务器端单方面发送消息、客户端单方面发送消息)

服务器端获取证书和客户端密钥

第三阶段通信建立完成(通过加密的finished消息来确认)

通信过一次之后,采用会话恢复跳过整个握手阶段来减少开销

8.通常采用的布局方式

小程序移动端:弹性布局

网页端:自适应布局,媒体查询

布局中遇见的问题

①表格容器产生滚动条导致当前页面被撑开(打开弹窗组件):将那个滚动条禁用

②提示框的优先级比其他内容高,而且有一层遮罩,导致其他内容被压在提示框下:z-index

给默认大盒子设置一个长宽100%,还是不会充满整个视图:给这个盒子一个固定定位,然后将z-index降低

9.echarts大数据表格优化

1.非必要取消一切动画,减少不必要的触发事件

2.showSymbol属性不画数据点,不和tooltip一起使用

3.数据压缩

4.改成plotly.js

10.登录时,授权之后才提示没有勾选同意协议

可以用户点击登录之后,弹出一个窗口包含两个按钮(同意协议、取消),这样来间接勾选协议

11.如果内页跳转循环导致路由记录达到上限

<1>小程序的几种路由跳转方式:

①wx.switchTab关闭其他所有页面,打开一个tabbar页面

②wx.reLaunch关闭其他所有页面,重新打开一个页面

③wx.redirectTo关闭当前页面,打开一个新页面(除了tabbar)

④wx.navigateTo保留当前页面,新打开一个页面,可以使用wx.navigateBack回跳到这个页面

⑤wx.navigateBack回到前一个或前几个页面,可以使用getCurrentPages 决定返回几层

<2>步骤

getcurrentPages获取的页面栈是一个数组,遍历判断当前需要跳转的路径是否在这个数组中(每一个路由是’/'pages.route)

let route = ‘当前要跳转的路由地址’
// 获取当前所有页面路由
let pages = getcurrentPages()
// 判断路由是否重复的标志(1为不重复,2开始为重复)
let is_repeat = 1
// 判断重复的路由下表
let index = ''
pages.forEach((item, i) => {
	// 变为绝对地址
	const current = '/' + item.route
	if(route === current){
		// 往上加,判断重复的个数
		is_repeat++
		index = i
	}
}
// 通过判断当前重复的路由个数来决定路由跳转方式
if(is_repeat === 2){
	// 只重复一个
	wx.navigateBack(pages.length - index - 1)
} else {
	// 重复一个或重复多个,判断当前是否已经到达路由上限10
	if(pages.length !== 10){
		wx.navigateTo({
			url: route
		})
	} else {
		wx.redirectTo({
			url: route
		})
	}
}
12.输入框达到输入长度上限,却还能复制粘贴外文字符(半角)
13.普通表单输入提交有没有遇到过什么问题
14.vue项目跳转外部链接,怎么实现

有两种方法:

// 第一种:使用window.location.protocol来跳转
let path = window.location.protocol + '//' + url
window.location.href = path
// 第二种:使用window.open,target表示跳转的方式('_blank'在新窗口打开,'_self'在当前窗口打开)
window.open(url, target)

(持续补充中…)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值