0%

问题背景

当组件需要响应路由更新的时候,有人提到可以用 watch(route) 方法。这个方法可以监听路由的一切变化。比如,对于一个文章组件,我们可以通过监听路由来达到重新获取文章的目的:

1
2
3
4
5
// 监听路由的变化。当我们的路由从 `/articles/1` 跳转到 `/articles/2` 时,下面的执行逻辑是正确的。
watch(route, async () => {
const articleId = route.params.id
article.value = await fetchArticle(articleId)
})

但是,请千万别这么用。此时组件不仅监听了当前组件路由的变化,也监听了别的组件的路由变化。当路由跳转到不属于当前组件的路由时,上述 watch 响应可能会触发,从而导致错误的执行逻辑:

1
2
3
4
5
watch(route, async () => {
// 如果跳转到别的路由,比如跳转到 `/users/1`,此时获取到的 articleId 是错误的。
const articleId = route.params.id
article.value = await fetchArticle(articleId)
})

所以,请避免使用 watch(route),因为它可能会监听到不属于自身的路由变化

阅读全文 »

现实中为 Rails 添加参数验证的 Gems 很多,添加 Swagger 文档生成的也不少,但能够同时支持参数验证、返回值渲染和 Swagger 文档生成的少之又少,而且将这些能力紧密结合在一起的就几乎没有了。

大家伙在团队开发中,是否会有过这些困惑:

  • 缺少一个比较详细的 API 文档,有些甚至没有文档。
  • 文档和实现往往不一致,明明文档中说有这个字段,结果在实际调用时发现没有这个字段,或者反之。
  • 文档很难实现规约,比如参数集的字段与返回值的字段需要区分开来,以及不同场景下返回值的字段也应有所区分。所以,现实中往往只能抛出一个大而全的字段表放在 API 文档中。
阅读全文 »

常用的 TODO 标记列举如下(摘自Ruby Coding Style Guides):

  • 使用 TODO 来备注缺失的特性或者在以后添加的功能。
  • 使用 FIXME 来备注有问题需要修复的代码。
  • 使用 OPTIMIZE 来备注慢的或者低效的可能引起性能问题的代码。
  • 使用 HACK 来备注那些使用问题代码的地方可能需要重构。
  • 使用 REVIEW 来备注那些需要反复查看确认工作正常的代码。

使用其他自定义的关键字,如果你认为它是合适的,但是确保在你的项目的 README 或者其他的地方注明。

主流的开放方式分为两种:以前端为主的前后端分离模式和以后端为主的全栈开发模式。Rails(全称 Ruby on Rails)是一个全栈开发框架,自然要用 Ruby 语言做更多的事。我在应用 Rails 实践的过程中,发现它的开发模式并不是有多种,只有一种。这一种,就是“基于模型验证的方式”。

阅读全文 »

这段时间在拿一个小项目练手,力图寻找出一个适合自己的前端框架合集。我们知道 Vue 框架为我们实现了数据绑定和单页应用,让我们能够基于数据状态而不是 DOM 状态开发前端项目。但我们仍然知道,Vue 只是实现了视图层的逻辑而已,围绕 Vue 框架我们依然需要为前端项目的其他层次选择合适的技术方案。

就我个人观念而言,前端项目的以下技术方案至关重要:

  • 视图层的数据绑定,这个可以由 Vue 框架帮我们做到
  • 表单验证
  • 与后端 API 的交互

这篇文章将介绍后两者的方案。

阅读全文 »

常规的管理系统开发(以及部分用户端原型的开发),涉及到列表页、详情页、编辑页、新建页。据我多年的开发经验获悉,每一种类型的页面,开发者都应有一套固定的写法。这一篇讲列表页的固定写法。

列表页,如果考虑功能齐全,应包括:

  • 展示一个数据列表
  • 支持若干筛选项目
  • 支持分页浏览
  • 支持全文搜索
  • 支持排序

本文分两个阶段介绍,第二阶段相比第一阶段增加了 vue-router 的考虑。

阅读全文 »

我有很多坏习惯,其中最恶劣的乃是王者荣耀。

王者荣耀是一款游戏,一款毒害青少年身心成长的游戏。自2017年我接触它以来,直至今天,已经超过4个年头了。这四年里,我无时无刻不在玩着这款游戏,早起玩、睡前玩、吃饭玩、上班玩。不能玩的时候,满脑子无时无刻不在想着这款游戏,连睡觉做梦时都是 1433223。

阅读全文 »

这天坐车听到《忘情水》的旋律,仿佛回到了从前的时光。老歌总是有一种特别的魅力,再加上刘德华那独特的嗓音。

每一首歌都有它独特的世界观,《忘情水》也不例外。仔细一听歌词的内容,就会知道,在《忘情水》的世界里,忘情即是不流泪。哪怕悲痛欲绝,哪怕伤心过度,只要不流泪,即是忘情了。

世上真的有忘情水这样的东西吗?一开始听到这样的说法我是疑惑不解的。因为忘情即是忘心,某种程度上是一种失忆,而且是选择性失忆。纯粹靠药物达到这种精准性的失忆难度之大,难以想象。离泽宫的忘情丹是一种,但那只存在于仙侠剧中,现实中却不存在的。

直到再度理解歌词,理解了忘情即是失泪之后,就明白忘情水制作的可行性了。虽然不能只做一杯冰水,让自己忘情忘心,但抑制泪腺分泌总是可能的。百度了一遍,发现

阿托品、抗抑郁药以及长期使用含防腐剂的眼药等会造成干眼症

看来忘情水的副作用还是挺大的,如非必要还是不要过度服用的好。与其忘情忘心,倒不如洒脱面对、重新融入生活的好。