在 2018 年初,让我们再谈谈大前端的趋势

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

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 隔离》。

问题:更臃肿的 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 怎么想的?

原文发布于微信公众号 - phodal(phodal-weixin)

原文发表时间:2018-03-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏汇智网教程

vue教程推荐

3672
来自专栏phodal

我的职业是前端工程师【四】:如何选择合适的前端框架,告别选择恐惧症

将 package.json 中的 Ionic 版本改为 2.0.0 的时候,我就思考一个问题。这个该死的问题是——我到底要用哪个框架继续工作下去。 刚开始学习...

2005
来自专栏编程微刊

【福利】小程序开发资源干货汇总

4233
来自专栏极客编程

为什么说Web开发和Vue.js是如此的有趣?

我想告诉你,我开始享受使用Vue.js和进行前端开发的故事。这不应该被理解为一篇关于为什么Vue.js可能比React,Angular或任何你正在考虑的其他We...

1451
来自专栏大数据钻研

关于HTML5应用现状与前景的思考

现在的HTML5就像当年崭露头角时的Ajax,有人在做,但不知道叫它什么。最近,苹果在 HTML5上大做文章,而著名的Web设计师Eric Meyer则提出了W...

3716
来自专栏BestSDK

交互设计实战!TAB导航与侧边抽屉导航的巅峰对决

编者按:本文作者Anthony Rose,是社交网络电台Zeebox的联合创始人及CTO,文章不仅分析了侧边栏导航和Tab导航的利弊,还有改版过程进行A/B t...

2657
来自专栏EAWorld

组件化——前端编程的选择

一、前端为什么要做组件化 在大型软件系统中,web应用的前后端已经实现了分离,而随着REST软件架构的发展,后端服务逐步倾向于微服务,简单来说就是将一个大型后...

4167
来自专栏phodal

Mifa Design:一个服务于 Markdown 的设计体系

嗯,UI 框架,这已经不是一个很好的时代了。可对于 Design Systems 来说,这还是个不错的开始。 Material Design 是 Google ...

2556
来自专栏進无尽的文章

如何利用动画效果来提升用户体验

动画效果会讲故事。但不是冗长和完整的故事,而是简单的故事,比如“嗨,你现在该看这里了”或者“哇,你的操作完全正确。”然而,动效的目的不是为了愉悦用户,而是为了帮...

1474
来自专栏互联网杂技

移动体验设计6大禁

我们一开始为什么去安装应用程序?是为了使我们的生活更方便。但当一个应用无法满足这一要求时,用户肯定就会离它而去。一个应用的成功是受多种因素影响的,其中整体移动用...

36613

扫码关注云+社区

领取腾讯云代金券