上一次写前端趋势这一类的东西,是在去年的这个时候。一年多过去了,又发生了怎样的变化呢?
One JavaScript:移动应用
前有,使用 React 及 React Native 来开发 Android 及 iOS 应用。
后有,Dart 通过 Google 的 Flutter 框架来支持移动应用程序开发,该框架旨在为 Android 和 iOS 创建原生 UI。
使用同一种语言作为业务开发语言,再基于一个 DSL 来封装基础平台的架构,已经成为了一种大的趋势。过去,在后端的这种语言是 Java;现在,这种语言则是
JavaScript。
One JavaScript:Serverless 与 全栈
对于没有后台经验的前端开发人员来说,使用 Node.js 开发后端应用是一种相当大的挑战。大多数非科班的前端程序员,不知道从数据库到 RESTful API
的一系列操作,并且还需要了解到部署等一系列的系统底层知识。因此,使用 Serverless 这种不关心基础设施的技术,可以进一步地降低开发成本。
使用 AWS 来运行大量的 Serverless 计算的成本很高,但是自己搭建一个 Serverless 服务器,来运行自己的 Serverless
应用,则变成了一种更廉价的方式。
有兴趣的读者可以阅读我在 GitHub 上写的《Serverless
架构应用开发指南》,地址:https://github.com/phodal/serverless
Function!Function!Function!
2017 年 9 月,在接手一个 React 项目的时候,发现在这个 React 项目里,Lodash 已经变成了 Ramda。初次上手时,和我之前维护一个
Scala 的微服务有着一致的体验,这货真难懂。但是毫无疑问地是,它大大减少了代码量。只是不同的人写出的函数式代码是不一样的,所谓的千人千码。
函数式编程可以减少一定量地冗余代码,它也带来了一定的新问题:可维护性及上手复杂度。
但是越少的代码,可能意味着更少的 bug,不是吗?
架构:BFF
我的上一个客户端项目里,采用了 BFF 层,其对于大前端来说,是一种很友好的开发体验。对于存在 Android、iOS 及 Web 应用的系统来说,BFF
层不仅仅可以减少应用的开发时间,还可以提高业务的灵活性——只需要在修改 BFF 层的情况下,就可以使三端达到一致。
更详细的内容可以参见:《前后端分离演进:不能微服务,那就使用 BFF 隔离
<http://mp.weixin.qq.com/s?__biz=MjM5Mjg4NDMwMA==&mid=2652975733&idx=1&sn=29eb692ac172eac6d44a98837e97b52d&chksm=bd4ae1568a3d6840cf21ade98a31dcb57e2f7e434da2679bf6094e85e4423be3c8362ba61623&scene=21#wechat_redirect>
》。
问题:更臃肿的 SPA
在过去的几年,大量地前端项目已经使用 Angular、Vue、React、Ember 等框架重写。使用哪种框架,对于一个前端项目来说,差别并不大。
从零启动一个前端项目是一件容易的事,但是问题的关键在于,我们不可能不断地重写前端项目。于是,对于前端项目来说问题变成了,如何去维护一个前端项目。
如果一个项目中的前端开发人员水平参差不齐,但是没有辅以有效的代码改善方式,如 CheckStyle、Code Review、测试
等等。那么,未来它必是一个痛苦的遗留系统。
在新的项目里,我也着手去解决这样的问题。
选型:Angular、React、Vue
我喜欢大而全的框架,而不是小而美的框架。小而美的框架,维护成本太高了——这里讨论的是维护成本,也就是你在这个软件上可能还要继续开发一年,两年,而不是几个月。所以,如果你没有在一个前端代码库里,工作一年、两年,不要和我讨论这一个问题。小而美的框架里,组件间依赖,版本间限制,上下游同步等,在时间线上就是各种麻烦的问题。在工作上,花费大量时间解决这种技术问题,真的很不爽——只会导致加班。
如果只做的是复杂的 Web 应用,基本上就是 Angular 了。因为要用 Angular,就需要会 TypeScript ->
强类型、RxJS、注解、依赖注入等等——需要学习的时间长,代码质量上有一定的保证,应该不怕遇到小白,笑~~。
不选择 React 的主要原因是,React 只是一层 View,整个系统在配置上太麻烦了,Angular 上手即用。
如果同时做 Web 和 APP 应用的话,那么在 Web 方面就是 React,毕竟 APP 可以用 React Native。
我没有在复杂的 Web 应用里,使用过 Vue,不好做太多评价。以我在一些公司项目上和个人项目上的使用经验来说,Vue
的最大优势是简单,同时可以帮助我们渐进式的迁移前端应用。
对了,我更喜欢 TypeScript,因为它看上就像是 EcmaScript 的终极版。
你呢?2018 怎么想的?
热门工具 换一换