前端技术为什么变得这么复杂?
Web诞生于1989年,是蒂姆·伯纳斯-李在CERN为了用链接连接研究文档而创建的共享系统。1991年HTML、URL、HTTP三者出现时,网页只是带链接的文本。想要装饰的需求催生了1996年的CSS,把结构与表现分离;为了让画面能够响应,1995年JavaScript在短短十天内被造了出来。
代码爆炸之后,2006年jQuery统一了各浏览器不同的DOM操作;当这也不够用时,2013年Facebook发布了React,其哲学是"数据一变,画面自动更新"。为了拿来即用的部件,npm出现了;为了转换浏览器读不懂的新语法、打包分散的文件,转译、打包、摇树优化等构建过程出现了。每一项技术都是对前一项技术所造成问题的回答。
懂了概念之后,给AI下的指令会有什么不同?
问"package.json为什么会出现"的人,和理解"这是记录零件清单的文件"的人,用同样的工具也会得到不同的结果。前者的指令停留在"把按钮做得好看点";后者则会上升到"这个数据变化时,那个画面也要一起变",也就是要求状态管理的水平。
购物车里的商品在切换页面后仍然保留,这个需求就是状态(state);做好一个卡片模板,复用一千次,这就是组件。脑子里有了这些概念,你还能指出AI写的代码到底在哪里出了问题。
为什么走向SPA之后又回到了SSR?
想要像App一样无闪烁切换画面的需求催生了SPA:只有一个HTML文件,由JavaScript来切换画面。但搜索引擎爬虫在JavaScript执行之前只能看到一个空壳就离开了,而且首次加载也明显变慢。
于是由服务器先送出完整HTML的SSR重新受到关注。给静态HTML注入JavaScript使其"活"过来的水合(Hydration),以及按页面混用两种方式的Next.js式混合渲染,成为今天的标准。把URL粘贴到KakaoTalk时出现的预览,也只有在SSR环境下才能正常工作。技术永远是权衡,以解决一个问题、产生一个新问题的方式演进。
非开发者的氛围编程者应该先学什么?
不是背语法,而是先掌握这张演进地图。有了地图,你会自然理解npm install是从应用商店取来零件进行组装的过程,也会明白自己写的代码与实际部署的代码经过构建后并不相同。SH Consulting在氛围编程培训中先讲技术历史、再讲工具用法,原因也在这里。不懂概念,你能让AI做的事情的水平就停在那里。