体验 VitePress:文档编译还能这么快!

基于 VuePress 的项目文档的编译速度一直让我很苦恼,启动一次 dev server 要大约半分钟的时间,而且哪怕只有一个 Hello World,速度也是这么慢。相比之下,Hexo 都比它快。这当然不只是 VuePress 本身的问题,要说还得归咎于 Webpack。

于是 Vite 诞生了,一起诞生的还有 VitePress。好耶!虽然 VitePress 仍处于 WIP 阶段,告诉我们不要在任何地方使用,但我们可以提前对比一下,它究竟能比 VuePress 快多少?我们使用基于 VuePress 的 Twikoo 文档测试一下。

安装

1
yarn add -D vitepress
阅读更多

腾讯云云开发云函数 之 异步执行,提前返回

云函数的特性是,当 main 函数 return 时,执行进程会被立即冻结。这一点在官方文档Node.js 8 的异步行为中有提到。

对于异步函数,主流程执行完成后,函数实例进程会被冻结,进程中的所有异步任务会暂停执行,直到这个进程被再次唤起。
另一方面,如果函数实例进程由于某些原因没被复用(例如更新了函数代码),这个异步流程中的代码就永远不会被执行

但是有些场景下,云函数需要很长的执行时间,例如,Twikoo 通过 Akismet 检测垃圾评论的过程。按照特性,在检测过程结束前,就不能异步检测,提前返回结果给前端,否则检测进程就会被冻结,导致检测失败。我们只能 await 同步检测,造成请求响应慢,用户体验差。

按照 Java 的习惯,我们会启动新的线程执行长时间的任务,在云函数中怎样实现?

阅读更多

腾讯云云开发云函数 之 文件导入功能

背景

Twikoo 评论系统要实现导入功能,导入,就需要上传文件。

通过调用云函数,我们能够传递 string、number 等简单的参数,想要上传文件?不太行。

想到云开发环境有一块默认开通的 COS 空间,这块空间允许登录用户上传文件,只要利用这片空间,就可以实现将文件上传给云函数的功能了。

主要思路

  1. 前端调用 js-sdk 上传文件,获取到 fileID
  2. 前端将 fileID 作为参数,调用云函数
  3. 云函数通过 fileID 获取到文件,并解析
阅读更多

解决微信小程序在 iPhone iOS 上 text 宽度只有一半导致的不居中等种种问题

现象

当小程序中使用第三方字体时,在 iPhone 11 和 iPhone 12 机型下

  • 中文字正常
  • 英文字和数字,居中和右对齐异常

这个问题只能在几个特定的机型下出现,不用第三方字体也没有这个问题,安卓机型和开发者工具也重现不了,甚至 iPhone 12 mini 用同一版本也不能重现。

微信版本:7.0.18
小程序基础库:2.14.0
iOS:14.2

这未免也太奇怪了。

阅读更多

腾讯云云开发云函数 之 代码共用

腾讯云云开发云函数的文档中写道——

不同的云函数可以共用代码文件(目录)吗
未上线

如果是简单的云函数,这一点还能接受,在开发 Twikoo 评论系统的过程中,云函数要实现的 API 越来越多,逐渐让我发现了它的弊端:

  1. 大量的代码复制!
  2. 版本管理非常不便!
  3. 依赖管理非常不便!
  4. 一次要部署十来个云函数,很麻烦!
  5. 每个云函数都有独立的冷启动时间,很慢!

显然违反了开发的 DRY 原则,这迫使我开始思考解决方案。

正常的思维是,一个 API 写一个云函数,如果将云函数合并,用一个云函数实现不同的功能,能否解决这样的问题呢?

阅读更多

无需开发/体验权限,获取任意微信小程序卡片页面路径

背景

工作上正在开发的一款小程序,需要链接到京东购物的一个活动页面。经过搜索发现,除了在小程序内嵌 Webview,小程序内不能直接跳转一个网页,但是京东也是有自己的小程序的,我们可以跳转到京东的小程序吗?查找文档发现可以用 wx.navigateToMiniProgram 打开另一个小程序。

1
2
3
4
wx.navigateToMiniProgram({
appId: '', // 要打开的小程序 appId
path: '' // 打开的页面路径,如果为空则打开首页
})

现在需要的就是京东小程序的 appId 和活动页面的 path 了!

一番操作后,我发现微信 APP 上既不能获取到小程序的 appId 也不能获取到活动页面的 path,若要获得这两样东西,得开启调试才行,想开启调试,至少要成为小程序开发者……

京东小程序的开发者,我怎么可能拿得到嘛,我连他们的开发者都接触不到!

阅读更多