我这半学期学了什么
寒假的时候我一直在写考核作业。但有一说一,虽说我肝得挺厉害(至少自我感觉是),但实际上我感觉我并没学到什么太多的新东西。当然,倒不是说一点也没有,只是感觉太少了。
寒假的时候一直想学下 Webpack 和 React 的相关知识,但苦于没时间,而到了开学之后反倒是有时间了(离谱)。于是乎我便先学习了这两个比较基础且常用的。我之所以将首选框架选为 React 而不是 Vue,主要是因为我跨平台开发框架很感兴趣,而 Flutter 对我这个前端还算比较比较遥远,因此考虑到 React Native 就先学了 React。
counter-trainer-deprecated
我第一有关 React 的项目是 counter-trainer (现在更名为 counter-trainer-deprecated),里面还顺便用到了 Less。这个项目算我前端工程化的开荒,更多的还是为了练习。开发初期的规划是想通过自适应以兼容各种分辨率,结果发现远比自己想象的复杂,加之当时对于组件间通信不甚熟悉,以及审美堪忧,最终导致代码堆成屎山,因此终止了开发。
counter-trainer
紧接着不久我就开始了第二个项目,同时也是前者的续作,也叫做 counter-trainer。吸取了上一次的教训,这次只针对了移动平台进行适配,因此我选择了使用 React Native 进行开发。我从这这个项目中学习到的主要有这么几方面:
- 学习了 Redux,了解了组件间通信、生命周期、Context、Fragment 等相对进阶的内容;
- 开发的复杂程度不断增加,迫使我去寻找已有的库而不是重复造轮子,而在这个过程中我不得不去直接阅读一些框架的官方英文文档、去 Issues 里寻找 bugs 的解决方案。在此之前我顶多会使用像 Redux,Babel 这种近乎 Official 性质的库,对于那些小众的库还是有些抵触的,不过最后,相比于自己从头开发,直接 import 还是让我直呼真香。比如随便举几个这次用到的一些库:
react-navigation
,react-native-tts
等等,像其中的 tts 这种库,就绝不是现在的我能够徒手撸出来的,所以我也学会了不要去造一些没有必要的轮子。 - (复习了 Android 开发?(继上一次的 Kotlin 计算器))
- (直接读英文文档进一步提升了英文水准?)
- (了解了语义化版本?)
sekiro-symbols-generator
这个项目应该是我最近的项目中完成度最高,也是唯一没有弃坑且最终按照原计划圆满完成了的。最终代码量约1000行。下面说一下我从这个项目中学到的东西(或者是这个项目的一些 features):
- React Hooks:该项目全部使用函数式组件;同时在组件间通信方案的选择上废弃了 Redux ,改为了使用 React 原生 hooks;
- Typescript:该项目全部使用 Typescript;
- ESlint:该项目使用了 ESlint(这个好像不算什么亮点);
- CSS in JS:该项目没有采取传统的
Less
orSASS
/SCSS
,而是选择了 css in js 的方案。并且在经过了多方权衡之后,最终决定了采用emotion
作为样式框架 - Webpack:打包时的一些优化,如
source-map
,code splitting
; - Github Actions:自己写了个脚本自动部署并发布网站;
- Other: 如
React automatic runtime
,Forwarding Refs
,.gitattributes
文件的使用等。
Deno
学了点 Deno,不过生态还是太匮乏,暂时还没什么卵用。
有个叫 Aleph
的框架可以用 React
, 不过是 SSR
, 不太符合我口味。
Rust
这学期还学习了一门新语言,那就是 Rust. 打老早之前就见到很多人都在吹它,而且后来又看到 Rust 大佬 @ahabhgk 的身体力行,以及 Rust 在 WebAssembly 上无可比拟的优势以及其他各种优秀特性等等。所以就开始学习这门语言了。
目前基础语法方面已经学完了,最近在学一些智能指针、并发等相关操作。而且开发的过程中甚至遇到了一些语言本身的 “feature”,以至于我还专门跑去官方仓库的 Issues 寻找解决方案,官方则表示只能暂时使用 unstable 的 nightly 特性作为临时解决方案,说明 Rust 还是挺早期的,还有很多坑都没填…
Vue
今天才刚刚开始学 Vue/Vite,所以暂时还没什么好说的。
(不过我还是要吐槽一下 Vue 文档辣鸡(小声))
接下来要做什么
😅说了这么多,还是得先把课内各种 damn courses 给解决掉,虽然有些水课设立就是为了恶心人的,但是我们也无可奈何。
立几个 flag,不过不要求要在本学期内完成,也不一定完全按照它执行,只是当作一个 Todo List 而已:
Web
- Vue & Vite;
- React/Vue Router;
- WebAssembly;
- Next.js (SSR);
- WebRTC
Hybrid
- Dart & Flutter
Game
- Bevy/Godot;
Other
- Decentralization, Blockchain