谈谈 JavaScript 代码的编译转换

当我们谈代码编译转换时我们在谈论什么?

通过工具对原代码进行一定的加工处理,最后生成目标代码。一些典型场景:ES6 -> ES5,不大典型,但实用的场景:Vue 组件转换成 React 组件。

阅读全文 »

2023 年度总结

0

一 最近几年都没有写年度总结,主要还是觉得一年又一年的没有什么大的变化,翻来覆去还是那些东西。但仔细想想,一个 […]

阅读全文 »

快速私有化部署文档系统 Outline

0

Outline 是一个开源的文档系统,可用于团队,也可用于个人,可以完全的做私有化部署。

为了能方便的部署 Outline,这里主要基于 Docker,项目基于苏洋的 从零开始使用开源文档/Wiki软件 Outline(一) 而来。

苏洋的 docker-outline 项目已两年没更新了,存在版本落后的问题,同时替换了 SSO 服务为 Authelia,以及剔除了一些多余的依赖项,主要包含 5 个服务。

  • Minio 兼容 S3 的对象存储服务,用于存储文档中的附件、图片等静态资源等,如没那么高的要求也可用本地的文件系统。
  • Authelia 兼容 OIDC 协议的身份认证 SSO 服务。
  • Postgres 数据库,存储服务。
  • Redis KV 缓存服务。
  • Outline 文档服务本身,前端基于 React,服务端基于 Node.js 的 Koa 构建。
阅读全文 »

家庭万兆光纤局域网的组网

0

线材

家里装修放线的时候除了埋网线,顺便还埋了几根光纤皮线,选用的是单模双芯的皮线。皮线比网线要便宜得多,放线时可以多穿几根,这样能做到有备无患,我在装修的时候当时不懂只放了一根线,好在最后埋完线测试的时候发现并没有折断的情况。

皮线
阅读全文 »

前端组件的缓存共享策略优化

0

如果一个前端页面中可能引入多个独立的组件,这些独立的组件与页面的技术栈无关,如一个使用 React、Vue 开发的页面引入了一个原生的 Web 组件,此时这些独立组件的共享缓存就是一个值得关注的问题。

常规做法

按照常规的思路,页面如果要引入 A 和 B 两个组件,两个组件都依赖了相同的模块 @lib,如果希望将模块 @lib 缓存共享,那么一般的做法是将共享模块单独提供一个 JS 包,无论是 A 或 B 的包在加载前都先加载好共享缓存包,此时就会存在三个包,对应着三个独立的请求。对于移动 App 来说,原本是两个组件包两个请求,但此时请求数的增加意味着由于为了实现缓存共享而降低了可用性。

阅读全文 »