Zong
金三银四

《你不知道的JavaScript 中卷》 => 完成
《你不知道的JavaScript 下卷》 => 未开始
“春天来了,万物复苏,同事们又到了跳槽的季节……”
我也不例外,我也跳槽了新单位,开始了新的晋级之路。
待我工作交接完毕,下个月,我将前往新单位。

Ant Design Mobile 开发体验

React上一款不错的移动端UI库,但是开发过程中遇到了一些业务逻辑无法满足时,我们可以修改源码或者二次封装来修改它的功能。

在使用到Toast 轻提示 组件的时候,因为业务逻辑需要多次发送AJAX,导致显示多余的Toast,最终无法被关闭的情况。

那么我在这里采用的是在AJAX外层申明一个开关变量,来控制避免重复制造Toast,只不过方法并不那么优雅。

参见Modal 对话框组件会发现,每生成一次Modal,DOM结构是含有一个随机的id值,但是Toast并不是如此,所以也可以期待官方提供相应的解决方案(当然这并不是必须的)。

#2304

滑动验证码之初体验

出于项目安全性考虑,在部分业务逻辑环节需要加入验证码功能,那么此次在移动端,我将选用滑动验证码来实现,在阅读源码实现,总结几点核心如下:

  • 设置背景画布大小,依照背景画布大小随机生成滑块位置点坐标(TOP、LEFT)
  • 使用误差值来提升用户体验

由于源码是由纯前端实现的,那么在前后端分离的模式下,有关于滑动验证码的参数都由后端接口提供,除LEFT值

最后由前端回传LEFT值由后端进行校验(修改vue2-verify源码即可实现)。

Hibear/verify
trionfo1993/vue2-verify

微信浏览器<返回>按钮读取缓存的解决方案

/**
 * The pageshow event is fired when a session history entry is being traversed to.
 * (This includes back/forward as well as initial page-showing after the onload event.)
 */

const handlePageshow = (event) => {
  if (event.persisted) {
    window.location.reload();
  };
};

window.addEventListener('pageshow', handlePageshow);

// window.onpageshow = handlePageshow;

persisted:Persisted user state. (页面是否从浏览器缓存中加载)

pageshow - Event reference | MDN

谈谈中卷这本书

中卷并没有像上卷那样给我带来很多的惊喜,但是同样从中学习到了一些思考问题的方式,值得在使用过程中权衡。

强制类型转换是一个很有趣的话题,并且这是分显式和隐式的,那么如何定义这两种类型,书中也给出了自己的看法,用好强制类型转换可以让我们的代码更易阅读,更易合作开发,所以使用时需要权衡其利弊,而不是特意的去使用其中一种。

表达式的副作用也是很有趣的一章,仔细思考会发现自己的代码中会有很多副作用,有些则是刚好顺的自己意愿,反之则可能会产生意想不到的问题。理解这个问题,我认为在开发过程中是有利于发现自己代码的问题所在,思考问题产生的原因,从而解决问题。

异步这个话题,我相信在未来都是一直火热的话题,那么书中讲述了回调噩梦的种种缺点,也展示了Generator 函数与Promise 对象组合产生的魅力,但是我在之前的开发过程中确实接触过类似的异步业务逻辑,当然我并没有选择使用这种组合方式,而我是使用async 函数与Promise 对象的组合方式,因为async 函数相比Generator 函数我认为更关注业务本身,并且可以自动执行,但是本书中提到的Generator 函数解决并行问题,我认为在并行问题上Generator 函数会更佳。本书的最后还提到了高级异步模式,是围绕着asynquence 库实现的,虽然我暂时没用使用过这个库,但是可以感受到社区目前有很多对Promise 对象的扩展,想象未来的异步会写的更有乐趣吧。

性能 关于代码性能,希望不要拘于小节,因为那样的优化很有可能在未来产生意想不到的危害,并且可以导致自己的代码可读性大大下降。尾调用优化是真实存在的,希望编写代码的时候考虑到这一点,因为它确实可以节省内存消耗。