大前端公共知识梳理
无论哪一种开发领域或者技术,他们本质上都是进行图形用户界面(GUI)应用程序的开发
- 掌握基本的编程语言语法与接口
- 接下来我们就需要了解如何构建基础的界面
- 然后我们需要去学习使用常见的系统功能
- 将应用真实地发布给用户使用
- 最后,随着应用功能的增加、代码库的扩展,我们需要考虑整体的应用架构与工程化的问题
编程语言
- 理解这些语法特性背后能提供的抽象功能与原理,从而能够根据自己想要达到的目标选择最合适的编程语言
- 无论哪一门编程语言的学习也是具有极大的共性
语法基础
- 从基本的表达式(Expression)语法开始学习
- 很多语言之中都有所谓的传值还是传引用的思量
- 作用域与闭包也是很多语言学习中重点讨论的内容
- 流程控制与异常处理、函数定义与调用、类与对象、输入输出流、模块等内容
- 流程控制的典型代表就是分支选择与循环
- 异常处理也是各个编程语言的重要组成部分
- 软件开发实际就是 Function Composition 与 DataStructure Design;函数或者方法是软件系统的重要基石与组成
- 然后我们就需要去考虑如何调用函数
- 而装饰器或者注解能帮我们更好地组织代码,以类似于高阶函数的方式如洋葱圈般一层一层地剥离与抽象业务逻辑
- 如何定义类,定义类的属性、方法以及使用访问修饰符等方式进行访问控制
- 从类中实例化出对象,如何在具体的语言中实践单例模式等
- 面向对象的继承与多态的特性
- 是否支持内部类
- 输入输出流与模块化相关的知识
数据结构与功能
- 数据结构与功能语法则是能够用该语言进行实际应用开发的重要前提
- 首先要对该语言内建的数据类型有所概览
- 原始类型(Primitive)与复合类型(Composite)
- 学习数值类型的时候我们还需要了解如何进行随机数生成、如何进行常见的科学计算,这也是基础的数值理论算法的重要组成
- 要将目光投注于字符串类型上
- 对字符串进行索引遍历,如何对字符串进行常见的类型编码以及如何实践模式匹配
- 常见的时间与日期处理方式
- 集合类型
- 进阶而言的话我们可以多了解下这些数据结构的底层算法实现
- 对语言提供的常用外部功能相关的 API 或者语法有所掌握
- 网络部分我们应该掌握如何利用 HTTP 客户端进行网络交互、如何使用相对底层的 Socket 套接字建立 TCP 连接、或者使用语言内置的一些远程调用框架与远端服务进行交互
- 并发操作来提高应用吞吐量
- 切面编程、系统调用以及本地跨语言调用有所了解
工程实践与进阶
- 首先开发者应当对具体编程语言中如何实现 S.O.L.I.D 编程原则与数十种设计模式有所了解
- 统一团队内的样式指南,包括代码风格约定中常见的命名约定、文档与注释约定、项目与模块的目录架构以及语法检查规范等
- 对语言或者常用开发工具的调试方式有所了解
- 泛型编程、元编程、函数式编程、响应式编程、内存管理、数据结构与算法等
界面基础
- 用户界面是前端应用程序的核心组成部分,而我们涉足前端开发的第一步往往也就是从简单的界面搭建开始
- 布局与定位
- 如何使用基本的界面容器
- 封装一些高级事件响应
- 深入全面地了解用户交互相关内容
- 数据可视化相关应用也成了前端开发常见的任务之一
- 地图以及相关技术
系统功能
- 常见的系统功能以及 API 的使用语法,其主要分为系统与进程、数据存储以及网络交互这三个部分
进程与存储
- 并发编程
- 如何利用 Thread、GCD 等方式实现多线程并行、如何利用 RxJava 等响应式扩展优化异步编程模型、如何利用锁等同步方式进行并发控制等内容
网络交互
- 如何与服务端或者第三方系统进行交互
- 如何利用网络客户端进行基于 HTTP 或 HTTPS 的网络请求
- 利用基础的 Socket 进行通信
界面插件
- 进行应用项目开发
- 实际上前端开发中最核心的工作之一就是界面插件的开发
- 习惯地会将界面插件区分为指示器(Indicator)、输入器(Picker)、列表与表单(TableGrid)、对话框(Dialog)、画廊(Galley)、WebView 等几个部分
工程化与应用架构
- 工程实践
- 在开发中我们常常需要热加载、增量编译等相关技术来避免过长的等待,而单步调试则能够帮助我们梳理代码逻辑、循序渐进地发现问题所在
- 应用架构
- 所谓架构二字,核心即是对于对于富客户端的代码组织 / 职责划分,从具体的代码分割的角度,即是功能的模块化、界面的组件化、应用状态管理这三个方面
- 从 MVC、MVP 到 MVVM,一直围绕的核心问题就是如何分割 ViewLogic 与 View,即如何将负责界面展示的代码与负责业务逻辑的代码进行分割