Oliver Liu

一个充满理想并付诸于行动中的码农,喜欢遨游在计算机世界里,励志于成为一名多才多艺的人(多财多亿也行)

Latest Posts
css之缓动函数
说缓动函数之前呢,先看下一个饿了么的css添加购物车的效果图,这是很多年前我使用纯CSS的bezier函数实现的, 本章主要探索贝塞尔曲线的使用和原理,下图项目的仓库在这里. 用CSS实现这样一个动画,在没有贝塞尔的帮助几乎是不可能实现的,而贝塞尔曲线很少有人关注可以配合CSS实现很多 炫酷的效果,实际上在一些细腻的, 符合真实物理反馈的交互动画上,可以配合选择出不同的物理效果,除了上面的购物车动画效果外,像下面这个滑动的按钮也可以用CSS实现。 <img sr ... Read more
Promise的十个使用禁令
不要在 Promise 类方法中定义 async 函数。 不要把代码写在 Promise 方法外 不要嵌套Promise, 使用 await 不要配合回调方法使用 await 不要在循环中使用await 在Promise链条上添加错误处理 不要Reject非Error类型参数 例如: Promise.reject("非法的参数,请检查") 通常我们外部使用Promise时,会认为catch捕获到的一定是一个继承于Error类的实例化对象。因为 在使用声明式的Promise的构造函数内如果出现未捕获的错误,它就是原生的错误类型,但是JS中并没有要求 我们手动的Reject参数一定要传Error实例,为了简化外部使用,这也属于一个潜规则,很多 Eslint的规则中,都会包含一个Reject只能传 ... Read more
从格式和规则上统一编码风格
格式 由于团队协作中各个开发者的编辑器,显示器不一样等等问题,导致在书写JS这种对空格和分号等字符不敏感的语言时格式上 偏离比较大,从而不适用各个成员的阅读习惯,这是一个浪费时间的问题。同时也不能避免一些糟糕的让人眼花缭乱的代码, 虽然一部分是使用形式上导致的,但有一部分取决于代码本身的书写格式。 所以,对于代码格式,解决的最重要的事情就是团队中的每一个人都有同一种阅读习惯,为阅读他人代码节省时间,提高效率, 甚至,从精神上可以让开发者们爱上他们的代码,因为好看的东西总会被珍惜,丑陋的东西只会任人抛弃,越踩越烂。 规则 规则是对代码质量的浅层校验,通过它可以限制一些基本的使用方式,去避免发生一些低级错误。其次也可以统一项目代码规范。 解决方案 prettier [Prettier](https://pret ... Read more
All about in emoji
I was used the native char to represent the emoji in browser, but today I found a problem that it does not be supported by some computers, most cases in Win7, XP. So a question emerge on my mind, why it doesn't show? We knew The charset is preserved in the disk by our system, and charset is a set that includes many chars, which one is mapping by a glyph, it is very important for wherever ... Read more
Detecting lerna's actions in a repo.
因为lerna在管理多个模块和项目时(发布版本,更新版本,集成工具)操作简单。不用自己手动管理互相依赖的版本问题。 提前思考: 独立的功能一定要拆分成独立的repo吗? 最近做直播还听说后端同事在管理每个模块时,他们都是一个模块一个仓库管理,我说为什么时,他回答说,可以防止别人胡乱提交... 除了一些内部的sdk或者带有自更新的应用,我们是不是很少关注项目的版本?有没有特殊的场景? 如果我现在有五六个项目,每个项目都有固定版本的相互依赖,比如经常见的 common, core,这些都是对通用和核心模块的解耦,我们简称基础模块。除了他们之外,还可能有一些偏业务的模块和关联性强的项目,这其中的项目和模块都引用了基础模块。 看起来只是分了几个文件夹相互引用嘛,但我们还是会面临一个工程问题,那就是,这些包是捆绑和固定式的更新,每次提交代码我都必须保证我们不得不关注这 ... Read more