一直以来困扰我更新个人博客的原因,主要是在于探寻其意义:究竟怎么做才不是在互联网世界中增加熵。而这两年重要的收获在于,开始懂得意义存在于行动的过程中,以及如果困惑于整体的世界不如去爱具体的人(感谢《卡拉马佐夫兄弟》阿廖沙)。那么我先更新一段时间,以后的事情以后再说喽。
今天尝试打开 Gemini 学习一个新课题,本来的 learning gem 在侧边栏没有找到,好在对话框里面找到了 learning 的选项,仍然是可以进行引导式学习的。今日想出来的课题是 JavaScript,去年学习了 python 基本概念、程序功能、类和对象、以及 Django 框架等,获得了对于编程框架和概念的基本理解。类似地,也想对 JavaScript 获得同样的理解。尝试寻找和阅读过 JavaScript 的教材,很可惜没有找到任何一本类似于《Python编程:从入门到实践》这样水准的教材。那本 Python 教材真的是一本超越其本身领域的五星级别的教材,既简单易懂又循序渐进,通过设置一步步的小进阶和实操练习,获得类似于玩游戏的正反馈体验。从写作水平本身也是一本杰作。与之相对,尝试找到的 JavaScript 教材基本上都是纯粹的“干货”,干到比压缩饼干还要难以下咽,几次尝试均以失败告终。并且,学习 python 是在2025年4月,彼时尚有从头开始练基本功的动力,但 AI 辅助编程经过这一年多翻天覆地的发展,让从代码语法学起也变得不再是一种吸引人的选项。然而对于网页应用,又跳不过 JavaScript 这座大山,于是今天选择了通过 Gemini 引导式学习去在脑海中建立基本框架,希望此后如果 vibe coding,能对原理有多一分理解以便于更好地设计和指挥。
从个性偏好而言,我似乎很感兴趣也很擅长对一个事物建立框架性认知,却不擅于深耕。在 AI 辅助之下,似乎部分可以解决落地的问题。但思考的深度,不持续性地投入脑力似乎也是不可行的,那么把尝试性的小行动积累起来,以及记录下这些过程,也许可以帮助到我。另外今天读了低调的法国程序员 Fabrice Bellard 一己之力写出了 FFmpeg 和 QEMU 等知名项目的故事,有一种虽不能至心向往之的感受,也似乎在模糊之中看到了一点点方向。
备忘:用自己的话总结对于 JavaScript 的骨架式理解
如果采用python的django作为网页应用的后端,用户的每一次请求,服务器在取得数据之后都需要重新修改html,之后再把新的html推送到客户端。
使用 JS 代码写的网页,可以在客户端处理路由,点击例如 /about 之类的导航链接,只是触发页面加载另外一个模块。整个 UI 通过与用户的交互,改变状态,来触发网页 UI 的变化。涉及到实际数据的 CRUD,通过 API 连接后端。后端服务器如果是大量实时交互的,可以选用 node.js,涉及其他复杂运算的,可以使用 python 等生态比较丰富的编程语言。
JS 核心架构思想:组件封装、状态驱动 UI、单项数据流、全局状态池、异步非堵塞。
React 和 Vue 等等框架,是预先写好的整套 JS 代码,加上自创的可读易用性更强的模板语言,使开发变得相对容易,不需要重新造轮子,只需要在武器库中挑选和搭配,并且模板语言易读易写易理解,减小开发的难度。实际部署时,涉及到把 JSX 这样的模板语言再转译为浏览器实际可以渲染的 JS 和 HTML 代码。