利用 Context 传递多语言文本

Gatsby 比 Hexo 更像一个通用框架,关于博客的工具真是全靠社区衬托。Nlvi 迁移遇到了标签云和分类等各种问题,还有一个多语言问题…

找了一圈插件,i18n 大多数方案都是「一个站点同时多语言」,这对一个博客来说没必要啊(相对来说我博文是不是也得写个几份…),想了一圈好像也没必要上react-intl,直接手作一个吧 —— 按照**「好看的皮囊千篇一律」**写一个

但是主题毕竟是要开源的,所以如果有好兄弟萌觉得 i18n 处理不行,自行替换成 gatsby-plugin-i18n 或者 react-intl 就可以了

创建一个 rust web server

玩了一段时间 Vapor,想不明白谁家会用 swift 跑生产,可能也就 perfect 维护者背后的公司会用,至少在拆哪应该还是要快(la)准(man)狠(kpi)的。
rust 社区中关注了 rocket 一段时间,后面发现 actix-web 在各方面更有优势,加上要好好点 rust 技能树,所以就选定这个了。

这里会以重构我的闹钟后端作为蓝本,逐步做个记录。

TL;DR

  • 直接用 cargo 创建应用
  • 装载 actix-web
  • 写一个 api

如果我把 Rust 用在网页呢

已知Rust是个很硬核的编程语言

又已知JavaScript或者说在浏览器上的JavaScript在某种情况无法胜任工作。

So?

🦀 Rust + 🕸 Wasm = ❤

但是,单纯把教程或者 tutorial 拿出来复述是没意思的。So,搞点事情

那么前提是,你已经弄清楚了 wasm-pack 是怎么回事了

react函数级写法和继承写法有什么区别?

这问题真的是土到我了,立刻就发了一个知乎想法。但后来我发现,他会不会想问的是几百年前,在盘古开天辟地之后的react 0.x时代,于是我默默把想法干掉了。

如果是createClassextends React.Component,还有点意思。如果是functional component,那您怎么不用同样很「渐进式」同时又更牛逼的vue呢?

简单对比:

createClassComponent/PureComponent
ES5ES6
propTypes/getDefaultPropComponent.defaultProps/Component.propType
this 已被指定属性 this 不默认指向组件(实例)
mixinmixin(被取消,不建议,做不到,HOC)

其中对我来说,这两个的区别可能mixin最有意思

defineProperty? Proxy?

听说 Vue3 数据绑定要切换到 Proxy,为什么?

这就是这篇文章的原因,来源于某个牛逼公司的面试。我真的应该学会怎么清楚表达观点…

definePropertyProxy 使用方式和效果看起来是差不多的,但如果翻译成中文的话,一个是定义属性,一个是代理,并且 MDN 上描述有所不同。

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。 —— MDN

Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。 —— MDN

defineProperty

这是一个 ES5 的方法。一个 defineProperty 需要三个参数,都是 require

关于 Nlvi 「添加到桌面」

其实这个功能早在 2.x 版本就加入了,那时候对 PWA 并没有什么概念。好想换 iPad Mini (new)

nlvi-ios-desktop

目前 3.x 只改了启动图,适配了 iPad 横屏和 iPhone 全面屏(普通屏和plus后续加)。之前看到苹果对 PWA 持拒绝态度我是震惊的,你 tm 早就给 safari 加入了这个功能,也有相关meta配置(包括”识别为WebApp“),然后你告诉我这东西不是 PWA?

本来确实想支持 PWA 的,想到除了要 manifest.json,还要搞定对应生成 service worker,使用不是很友好,所以取消计划。这部分添加功能就是一个尝试的甜点,所以也没有拿出来说。目前 3.x 开启 pjax 然后添加到桌面,阅读体验还是挺好的。

所以这次打算讲讲「苹果式网页应用安装」,其实挺简单的。

我今天给 let 安排了

Round 1

- 我现在把所有东西都注释掉,改成这样
function a() {
return inner;
let inner;
}
返回什么?

- 那就应该 undefined 了,反正后面不执行

自信的不行,出了门掏出全世界最牛逼的千元机坚果 Pro 2S,验证了一下。

inner is not defined

确实是不执行,但好像不是 undefined 啊╭(*゚Д゚*)╮

Round 2

- 如果改成这样呢
function a() {
function inner() {}
return inner;
let inner;
}
返回什么?

- 返回方法

自信的不行,同样用全世界最牛逼的千元机坚果 Pro 2S,验证了一下。

Identifier ‘inner’ has already been declared

(゚Д゚≡゚д゚)!? 你在返回你🐴呢?

最后的 Nlvi

Nlvi 可以说起源于正准备上班和刚上班工作不饱和(大雾。为了练习自己对语义化 HTML 理解和 CSS 的渐进式学习而诞生的,到现在已经 2 年了。

那个时候还用 iPad 画草图然后慢慢写起来,而且当时编程能力确实还挺弱,hexo 很多都弄不清楚。现在对 hexo 就熟悉很多了,设计稿也从随便画画变成了用 sketch,但也是杀鸡用牛刀。

过程中也是各种骚想法,比如用 Vue/React 改写啊;脱离 jQuery 啊;用 pjax 啊;用更复杂的动画啊……不过我现在想的是:新版本(我博客正在用的半成品)做完之后,就不想迭代了。

为什么?因为一旦工作太忙没时间,又想到这个东西,好累啊……

但,我的意思是,我不想维护 hexo 版本的 Nlvi 了,我的意思是,诶嘿嘿嘿嘿嘿!

做不完的题目

又在「杂乱的工作台上」完成文章……

没错又错过一个非常好的机会。与其说是因为时间不够做不完,还不如说是因为陷入斐波那契思考导致做不完。

不留遗憾,把它搞完。题源就不说了。


0%