imo++

最可贵的是勇气和坚持。


  • Home

  • Tags

  • Archives

[小程序] 复用下拉刷新、上拉加载页面配置

Posted on 2018-09-08

¶前言

之前使用 Ionic 开发公司的 app 的时候,写过通过 TS 的 class 的 extends 来达到复用目的的代码,减少了很多工作量,维护起来也更省心。

这两周开始开发小程序,出于几个原因我只使用了小程序的原生开发能力:

  • 因为是第一个小程序项目,想 体验一下小程序的原生开发 过程
  • 有两个很优秀的第三方框架——wepy 和 mpvue 但我对这两个 框架选择困难。也只有开发过原生、了解原生开发的痛点所在之后,才能有理有据、有针对性地选择某一个框架。
  • 而且引入第三方框架存在风险,也许屏蔽了一些原生开发的坑,但是 框架也可能引入新的坑……
  • 这个小程序 需求比较简单,原生小程序开发理应 hold 住

然后我又碰到了两个大部分逻辑(下拉刷新、上拉加载)相似的列表页。还是出于“懒惰“,我想尽可能复用代码。

凭着刷过一遍文档的模糊印象,我本来以为小程序提供的 Behaviors 是为这个场景量身定制的,然后重看文档才发现 Behaviors 仅支持 Component 的复用……

所以要怎么复用 Page 的相关代码呢?因为小程序原生支持绝大多数 ES6 的 api,我自然而然就想到了用 ES6 的 class 和 extends 的一套来实现!于是我掉进了坑里……

Read more »

[NG] 考古 - HttpInterceptor 循环引用错误

Posted on 2018-08-25 | Edited on 2018-08-29

¶前言

恍然间发现这个错误已经不复存在了,于是稍微看了下相关 issue、commit、PR。写篇笔记祭奠下~

¶需求描述

一个使用 HttpInterceptor 的常见场景是实现基于 token 的验证机制。

为什么要使用拦截(intercepting)呢?

因为,在基于 token 的验证机制中,证明用户身份的 token 需要被附带在每一个(需要验证的请求的)请求头。如果不使用拦截手段,那么(由 HttpClient 实例触发的)每一个请求都需要手动修改请求头(header)。显然手动修改是繁琐和难以维护的。所以,我们选择做拦截。

Angular 官网也给出了范例,以下代码可以实现一个 AuthInterceptor 拦截器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { Injectable } from '@angular/core';
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { AuthService } from '../auth.service';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

constructor(private auth: AuthService) {}

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const authToken = this.auth.getAuthorizationToken();

const authReq = req.clone({
headers: req.headers.set('Authorization', authToken)
});

return next.handle(authReq);
}
}

¶问题描述

但在 5.2.3 之前,执行上述官方给出的代码是会报错的。原因是 存在循环引用问题!

Read more »

LC-461-Hamming-Distance

Posted on 2017-11-14 | Edited on 2018-08-25

肝不动业务代码的时候,就时不时地做个题吧~

¶题目要求

原题目:461. Hamming Distance

维基百科中的“汉明距离”:

在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。

题干:现在求两个整数 x 和 y 之间的汉明距离,其中,0 ≤ x, y < 2^31。

Read more »

setTimeout 中的 this 关键字

Posted on 2017-04-25 | Edited on 2018-08-25

¶概述

本文主要讲述了几种场景下 setTimeout 的回调函数的 this 绑定出错的几种解决方法。

Read more »

Three Column Layouts Cheat Sheet

Posted on 2017-04-21 | Edited on 2018-08-25

整理了下常见三栏布局的做法。

¶布局索引

  1. 流式布局
  2. BFC 布局
  3. 绝对定位布局
  4. 圣杯布局
  5. 双飞翼布局
  6. Flex 布局
Read more »

[翻译] JavaScript 事件循环:说明

Posted on 2017-04-13 | Edited on 2018-08-25

本文译自 Erin Swenson-Healey 的The JavaScript Event Loop: Explained一文。

关键词:

  • 事件循环 - The Event Loop
  • 运行环境 - runtime
  • 调用栈 - call stack

(译者注:“下面正文开始~”)

Read more »

移动端 click 事件 300ms 延迟的前世今生

Posted on 2017-03-27 | Edited on 2018-08-25

¶存疑

最开始,我遇到的其实是“移动端遮罩层滑动穿透”的问题。

在查找“滑动穿透”问题相关资料的时候,我搜到了很多 click 300ms 延迟的问题。我那个时候有些不知所云,因为我自己并没有真实遇到过 300ms 延迟现象,也就没怎么在意。

时至今日想动笔总结遇到了若干次的“滑动穿透”问题的时候,搜集资料的偶然间得以解惑 300ms 的前世今生。

Read more »

使用 JavaScript 操作 HTML 批量制作 Anki 卡片

Posted on 2017-02-27 | Edited on 2018-08-25

¶想要达到的效果

  1. 使用 markdown 总结笔记
  2. 利用笔记批量生成 anki 卡片

¶前期准备

¶批量制作 anki 卡片的两个思路

  1. 利用 TinyTask 之类的自动化操作软件进行重复性操作;
  2. 利用脚本对遵循某种规则的笔记内容进行切分和生成卡片。

就这两个思路来说,第二个思路一劳永逸。而且作为一个程序猿,闭着眼睛也会选第二个的嘛 /w\。

Read more »

9 CSS Hearts for Valentine's

Posted on 2017-02-14 | Edited on 2018-08-25

在情人节的尾巴,献上本篇。(今天,你比心了嘛?/w\)

在线 demo 请戳这里。

IFE-2016-SP-task20 Simulate Queue with Multi-Inputs & Search

Posted on 2017-02-03 | Edited on 2018-08-25

¶My Solution

My solution to task20 is available on jsfiddle:

Read more »
123
baishusama

baishusama

21 posts
13 tags
GitHub
© 2018 baishusama
Powered by Hexo v3.7.1
|
Theme – NexT.Muse v6.4.0