文/转载

阅读本文需要 3.1分钟

来源公众号:奶爸码农


一晃眼2019年已过大半,年初信誓旦旦要学习新技能的小伙伴们立的flag都完成的怎样了?2019年对于大前端技术领域而言变化不算太大,目前三大技术框架日趋成熟,短期内不大可能出现颠覆性的前端框架(内心OS:出了也学不动了)。
本文结合个人和团队经历对2019上半年做个技术总结,将各类技术框架/语言/工具分作两个维度:技术采用生命周期

  • 创新者(Innovators):技术的冒险者,第一时间尝试新技术
  • 早期采用者(Early Adopters):技术早期采用者,具备一定探索精神,某个领域的意见领袖
  • 早期大众(early majority):技术早期大众使用者,深思熟虑者,往往采用相对成熟的技术
  • 晚期大众(late majority):技术的平民老百姓,跟随趋势采用当前主流的技术
  • 落后者(laggards):技术的落后者,长时间不更新技术栈,存在大量技术债

技术方向
按照大前端技术架构图进行分层,大体分为:状态管理、UI组件、小程序、跨平台、框架层、编程语言、工程化、监控、测试和服务端。2019年大前端技术总结如下:

状态管理

随着React、Vue这类前端框架的流行,组件化开发成为主流,然而随着页面复杂度越来越高,在一个组件文件中,要做UI渲染、事件处理、状态管理等等事情,于是一个文件变的越来越复杂。同时,页面组件层级变的复杂后,跨组件间的数据通信也变的很繁琐,需要将数据上提到父节点,通过property传输数据、回调方法更新父节点状态等等。Facebook首先提出Flux框架,引入单向数据流的编程模式,把Action和Store从View中解耦出去,极大的优化了原有状态管理的架构。

Redux=Flux+Reducer,由于Store的唯一性加上Reducer纯函数,使得数据状态具有可预测性,于是配套出现了很多基于TimeMachine机制的调试工具,极大的提升了研发调试效率。不过由于Reducer的纯函数性质,对于一些异步请求的副作用又要引入中间件,导致了一定的复杂度。

Vuex作为Vue框架的状态管理的不二选择,核心思想和Flux/Redux一脉相承,弱化了Reducer的概念而改用Mutations,使得整套框架更易于理解了。

Mobx是一个非常轻量级的状态管理框架,引入了observable state、computed value,极大的简化了状态修改的方式,相对于Redux减少了不少模板代码,上手迅速使用友好,不过由于缺乏Redux这类的强制规范,需要在使用中进行必要约束。dva是蚂蚁金服出品的数据状态管理框架,dva=React+Redux+Saga,通过约定大大简化了编程体验,值得持续关注。状态管理不是每个前端应用都必须使用的,要结合自身业务复杂度来决定,只有业务逻辑有一定复杂度需要做到各个模块解耦才考虑采用,如果一个Todo都用上Redux,我怀疑你是在炫技~

UI组件

在前端三大框架还未一统江湖的时候,组件库百花争鸣有Dojo、Bootstrap、Extjs等等。自从React横空出世,组件化变成了前端开发的标准模式同时也应运而生了两大UI组件库:基于React的Ant Design和基于Vue的ElementUI。作为两大成熟UI组件库,如果你的系统是属于中后台业务,对于UI定制化要求不那么严格,那么这两个一定是不二选择,两者功能上没有太大区别,基础UI控件、多语言、主题配置等等要啥有啥,唯一的风险就是圣诞节给你来个下雪的彩蛋(政府网站高危预警)。UI组件库可以持续关注Web Components,毕竟是Chrome浏览器亲生的,背后有Google这个老爹撑腰,而且现在React/Vue不也变的越来越像Web Components了吗?
另外前端数据可视化、3D化也是一个很好方向,一些酷炫的前端库小伙伴们可以撸起来了~

小程序

2019年小程序百花齐放,各大超级App都推出了自己的小程序应用,前端同学们要支持众多小程序,摸摸头发又稀疏了不少吧(em...离资深研发又迈出了坚实的一步)。小程序的实现有多种方式,需要结合自身的业务场景来做选择。
选择一,小程序原生开发方式,以微信为主开发小程序,再通过少量修改移植到其他平台(工作量多少没有做过不好估计,但既然当初支付宝小程序demo都抄微信的,感觉应该不大吧~)选择二,H5内嵌开发方式,天然多平台跨端,但会有些许性能损失,也会有些功能限制,例如微信里面的消息通知不能通过H5来推送。选择三,mpvue这类基于某种框架的开发方式,mpvue就是基于vue框架来开发小程序,对于熟悉vue的同学学习曲线很低,同时也可以实现代码逻辑的复用选择四,Taro跨多端的实现方式,支持用 React 的开发方式编写一次代码,生成能运行在微信/百度/支付宝/字节跳动/ QQ 小程序、快应用、H5、React Native 等的应用。对于功能需要同时满足多个小程序应用的场景比较适合。

跨平台

锦涛在Qcon分享 - 美团移动端动态化实践中总结了业界和美团在移动端跨平台&动态化的实践,可以看到公司在跨平台&动态化方面进行了多维度的研究和投入,这样可以适用于不同的业务形态。

自从移动端有了iOS、Android两大平台,在加上原有的H5 Web端,跨平台就成了这几年大前端最热闹的地方,毕竟一个功能实现三套换谁都不乐意干,于是在用户体验和研发体验中的一场拉锯战就开始了,各大厂商各显神通。最早出现的是Phonegap这类基于WebView的实现方式,由于WebView天然跨平台能力很好的解决了展示层的问题,然后通过jsBridge打通WebView和Native之间通信,使得浏览器中的H5代码也能有原生能力。这种方式研发体验最好,但是用户体验最差。然后就是React Native、Weex、Picasso,它们基于Virtual Dom或者模板语言,通过js代码编写UI,然后渲染成原生组件,完美了实现了用户体验和研发体验的平衡。但要用好这些框架还是需要对性能优化、差异性抹平、工程化有比较高的要求,小团队小公司慎用,否则入坑容易出坑难。今年大热是Flutter,可以持续关注,技术架构很优秀,野心很庞大,大有一统江湖的气势。跨平台热热闹闹多年,我个人认为当前的解决方案都是折中方案,随着手机性能逐步优化、浏览器原生能力的增强,也许大家都会回归本源,走上H5这条道路。

框架层

上半年框架层没有太大变化,依旧三大前端框架把持:React,Vue,Angular。从团队使用情况来看,React、Vue依旧是主流,Angular似乎慢慢不那么受待见,也许太难学了吧(手动捂脸)React 16.x上半年发布,推出了不少新特性,例如hooks、lazy、suspense等等,如果是React技术栈的同学鼓励第一时间进行尝试。hooks还需要再多多实践,整体实现理念和原有class方式有很大不同,习惯了原有的生命周期的写法的同学还需要适应。Vue 3.x难产至今,根据路线图3.0会有大量的更新,比如virtual dom的重写、框架会更小更快、全面拥抱TypeScript、使用Proxy来实现检测机制等等。呼唤尤大大赶紧更新,vue的同学恨的牙痒痒的,下半年的KPI就指望这个啦~Angular近期没有太多关注,不过Angular是一个真正意义的MVVM框架,不比React或者Vue其实都是View框架,所以这是一个大而全的框架。但是团队方面期望技术栈进行收敛,所以这方面就没有太多的投入了。在框架层,可以持续关注PWA和WebAssembly,PWA对于弱网环境的用户体验提升很有帮助,而且还可以作为桌面应用的技术框架。WebAssembly可以让前端在高密度计算性能上得到很大提升,不过应用场景有限。

编程语言


来自statesofjs的统计,在类JS编程语言上,ES6遥遥领先,TypeScript也获得接近半数的使用量。其次是Flow、Reason、Elm和ClojureScript。
目前主流编程语言已经是ES6/7+Babel的组合,用过ES6/7后基本没法再回到原始的ES5时代了,出现了类和模块的概念方便JS代码模块化加载,再加上各种语法糖用的快乐的飞起。async await的语法也替代promise的写法,使得代码逻辑变得更加简洁。ES的规范依旧在快速迭代,每年都会出一个更新的版本,引入不少语言特性,同时有Babel加持可以将新的语法都转译成ES5版本运行在浏览器中。
TypeScript是作为2019年的编程语言的大黑马受到极大关注,现在有大量框架例如Mobx、Vue3.x都是用TypeScript进行编写,由于TypeScript引入类型能够做到静态检查,因此解决了大量JS运行时类型错误,对于大型项目的代码安全性有很大的帮助。引入TypeScript需要团队对于新的特性有充分的了解,好好利用其中的精华,否则就会变成仅仅把.js后缀改成.ts而已。已经写了不少了,大家也看的挺辛苦的吧,剩下的部分等我下篇再更新。由于个人精力有限并且结合当前团队情况,一定有不少缺失,欢迎小伙伴们补充。每日金句“你听到的看到的,不一定是对的,所以不要第一时间就下结论,学会等待!
热门阅读web前端 | 到底怎么学?
Vue 3.0/Vue2.0快速学习方法,看我这一篇就够!!!
每天只想听你们说:小北最帅!

长按扫码关注我前端你别闹
我觉得你们应该点 「在看」

2019年,前端所有流行必备技能总结-上相关推荐

  1. 高级前端架构师必备技能(marksheng)

    首先,前端架构师肯定是掌握好基本的前端技术基础的,正所谓一转多长,首先你得先精通一门,其次,掌握前端技术的同时,还要了解前端技术之外的技能.跳出前端这个思维,才能看到的更多.总结起来有以下几点: 跨界 ...

  2. 年薪50W不是梦,100天掌握BAT前端中高级工程师必备技能

    随着最近几年来互联网的迅猛发展和普及,Web前端工程师已经成为互联网时代软件产品研发中不可缺少的一种专业的研发角色. 前端,其实是一个相对比较新兴的行业,在互联网的发展早期,也就是大概2005年之前, ...

  3. 前端性能优化必备技能 - 利用 Chrome Dev Tools 进行页面性能分析

    背景 我们经常使用 Chrome Dev Tools 来开发调试,但是很少知道怎么利用它来分析页面性能,这篇文章,我将详细说明怎样利用 Chrome Dev Tools 进行页面性能分析及性能报告数据 ...

  4. 不止 JavaScript 与 React,前端程序员必备的 9 大技能!

    作者 | Marty Jacobs 译者 | 苏本如 责编 | 仲培艺 出品 | CSDN(ID:CSDNNews) 如今,前端开发需要的不仅仅是用户体验的设计技能,开发直观的界面还需要高水平的编程能 ...

  5. 20200221前端入门怎么学【必备技能】

    本文为转载后整理,仅供初学者学习~ 需要掌握的必备技能 HTML 这个是最简单的,也是最根本的.要谙练把握html中的div.formtable.ulli.p.span.font这些标签,这些都是最常 ...

  6. css初始化样式文件_前端必备技能 webpack 4. webpack处理CSS资源

    每篇文章纯属个人经验观点,如有错误疏漏欢迎指正   因为 webpack 本身只具有识别 JS 的能力,所以涉及到其他资源,需要我们通过 loader 来进行特殊处理,针对不同的样式资源,需要以下几个 ...

  7. 想学Web前端,你需要了解这些职责和必备技能

    如今,Web前端开发在人们心中有些神秘,不少人认为Web前端开发者就是精通JavaScript的人.事实上,Web前端开发远非精通JavaScript就可以了.初学Web前端想要成为一名专业的Web前 ...

  8. 前端进阶必备技能:Vue中如何定制动画效果

    作为前端程序员,前端火起来的短短几年里技术更新迭代特别快,不仅是新的框架繁多,Vue,React,Angular轮番上场,各种工具,插件,库也是琳琅满目,就连基础的JavaScript语法的更新也是年 ...

  9. 一文快速掌握前端开发必备技能

    11 月 2 日,微信正式宣布「为便于开发者灵活配置小程序,小程序现开放内嵌网页能力」.此前,CSDN 也发表<微信小程序内嵌网页能力开放意味着什么?>一文,探索微信此举措的本质,进行一句 ...

最新文章

  1. Mongodb索引和执行计划 hint 慢查询
  2. 5、在secureCRT中vi显色
  3. POJ 1001 Exponentiation C++解题报告 JAVA解题报告
  4. NYOJ 20 吝啬的国度 (搜索)
  5. 基于栈和基于寄存器的Java虚拟机
  6. 1.1 了解web性能
  7. nvarchar(2048)能写多少个字符_我的拼多多店一个标题能带来多少的免费流量?三个字“非常多”...
  8. “Scrum 敏捷开发都是骗人的!”
  9. ubuntu14 lamp环境下安装swoole1.8.6
  10. excel去重怎么操作_EXCEL根据进货、出货求库存怎么操作
  11. ntko web firefox跨浏览器插件_Web浏览器如何使用进程和线程
  12. Ubuntu系统下载工具的推荐
  13. matlab 图片生成mif文件,使用MATLAB一鍵制作mif文件
  14. ConvTrans: [Neurips 2019]
  15. Smart210学习记录-------内存初始化
  16. java oio与bio_OIO在java中意味着什么?
  17. 计算机基础应用期中试卷,计算机应用基础期中考试计算机试卷.doc
  18. python生成中文字符画_在线汉字转为字符字,字符字生成器,在线生成字符字
  19. python123格式化输出_python 字符串格式化输出 %d,%s及 format函数
  20. 实验楼Linux基础挑战2答案,实验楼-Linux基础-实验二 Linux的基本概念及操作

热门文章

  1. 正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)
  2. 什么是猫腹水?猫腹水与哪些因素有关?
  3. 金蝶EAS Email接口
  4. 2021最新版 Spring Boot 速记教程(建议收藏)
  5. 【实用技能ppt】以后做PPT悠着点,先想这个PPT要点后做
  6. linux7samba服务器配置,centos7
  7. PCB打样中,有铅与无铅的区分?
  8. 课程论文格式 linux,Linux课程设报告书模版毕业设计(论文)word格式.doc
  9. 兼容IE浏览器的PrintArea
  10. python 特效字_Python的文字特效,炫酷了!