软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

前端程序员修炼之路

在Web端、移动端、部分桌面客户端,很多用户界面都是HTML/CSS/JavaScript实现的。在性能要求不是特别高的场景,使用前端技术可以提高生产效率,让公司能够抢占先机、创造更大的价值。近10年来,前端技术一直在突飞猛进地发展,各种框架、库、设计理念层出不穷。

HTML/CSS是基础材料,JavaScript/TypeScript才是前端生动的灵魂。前端也能使用到设计模式、架构模式等高级设计理念,如单例模式、工厂模式、观察者模式、事件溯源、CQRS、BFF、MVC/MVVM等。最后,还需要学习前端工程化,静态检查、资源合并/压缩/混淆、资源缓存策略等。可以说,前端有一套独特的、完整的软件体系。

前端书籍

1. 入门

选择一套入门的HTML/CSS/JS的书籍,可以完成页面元素显示、事件处理、动画效果。

  • 《HTML & CSS设计与构建网站》
  • 《JavaScript & jQuery交互式Web前端开发》
  • 《Web编程入门经典:HTML、XHTML和CSS》1:这本是我开始入门学习的,很久未更新,现在有点老了。
  • 《JavaScript高级程序设计》1
  • 《HTML5程序设计》1

2. 进阶

掌握现代的前端开发模式:ES6/TypeScript、前端框架(Vue、React、Angular三选一)。

  • 《深入理解ES6》1
  • 《深入浅出React和Redux》1
  • 《Angular权威教程》1
  • 《响应式Web设计 HTML5和CSS3实战》1
  • Vue与Vuex
  • TypeScript:在大项目与底层组件中,选用TS可以在编码过程中发现错误,避免等到运行时才发现错误,提高生产效率。

3. 深入

  • 《CSS揭秘》1
  • 《编写可维护的JavaScript》1
  • 《高性能JavaScript》1
  • 《WebGL编程指南》1
  • 《计算机图形学》1
  • 《OpenGL编程指南》:包含OpenGL更深层次的概念,而这些在《WebGL编程指南》中没有。
  • GraphQL
  • Relay或Apollo Client
  • 学习剩余两个前端框架,项目中可以借鉴其思想。
  • 前端微服务:单纯的SPA中,要解决CDN、缓存、资源合并压缩、资源异步加载等问题,不算困难。但是,当SPA与前端微服务组件式结合时,要解决这些问题就不简单了;特别是部分组件微服务更新时,所有的问题就爆发了,没有特定的冲突规避规范、前端微服务框架与Server Agent时是搞不定这些问题的。在技术储备未完整时,只能降级到一个前端微服务一个SPA的方案,但用户体验没有整体一个SPA好。

脚注

  1. 本人已翻阅的书籍,收获不少。