上一次写前端趋势这一类的东西,是在去年的这个时候。一年多过去了,又发生了怎样的变化呢?

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 怎么想的?

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信