2018 年前端技术总结 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
FrankFang128
V2EX    Javascript

2018 年前端技术总结

  •  8
     
  •   FrankFang128 2018-12-13 11:32:08 +08:00 4879 次点击
    这是一个创建于 2505 天前的主题,其中的信息可能已经有所发展或是发生改变。

    还有十几天,2018 年就结束了。

    今天我就来和大家一起回顾一下 2018 年的前端技术趋势。如果你赶时间,可以直接看文章末尾的总结。

    关键词:Javascript

    我们在 2017 年前端技术总结里总结的关键词是「状态管理」;

    今天我们给出的关键词是「 Javascript 」,含义主要有两点:

    一、CSS 失宠

    如今,大部分前端已经不再对 CSS 有很大的关注度了,只要会用 flex 和 grid,几乎就可以解决大部分需求。即使是目前最潮的 CSS Houdini 技术,也是在用 JS 而已。

    这在一方面说明前端对 JS 的重视,另一方面又说明 CSS 的易用性,不需要花太多时间,就能快速搭建页面。不过大部分前端并不想要深入了解 CSS,能用就行。

    二、JS 还是原来的 JS 吗

    虽然所有前端都在关注 JS,但是并不是所有前端都在写 JS。已经有很多前端在用 TypeScript 了,还有一些前端在用 Reason、Elm、ClojureScript 和 Dart。

    尤其是 TypeScript 的发展势头最猛,JS 学得好的前端很快就能上手 TypeScript,很多大公司的前端对 TypeScript 更是爱不释手。

    反观 JS 自身的发展,最近 TC39 将 class private field (#x )移入了 stage3 阶段,令很多 JS 使用者不满。不满的原因大部分都是觉得这个语法太奇怪了(而如果使用 TypeScript 就能愉快地使用 private 关键字了,虽然两者并不完全一样)。

    相信在不久的将来,JS 这门语言会越来越无法满足前端的技术需求,这给其他语言带来了机会。

    接下来说说其他发展趋势。

    趋势:前端 == 全端

    移动 App、移动网页、PC 应用、PC 网页、微信小程序、支付宝小程序、百度小程序、各种小程序……

    现在各大 App 纷纷模仿 Vue 或 React 发布自己的小程序,开发的重任自然摆到前端开发者的肩上了。(不然让后端来做吗?)

    但是问题在于,这些端并不完全一致,有很多细微差别。于是「一次编写,端端运行」的需求就提上了日程,因此很多大公司的前端都在开发自己的全端方案(如 taro.js 、mpvue 等)。

    再加上 Electro 对桌面端的支持,React Native 和 Flutter 对手机端的支持,前端实质上就是全端,几乎所有需要图形界面的地方都被前端占领了。

    趋势:前端框架趋于平稳

    Angular / React / Vue 三者的粉丝已经不怎么争论了,公司用哪个开发者就用哪个,毕竟很多公司都已经有了 Angular / React / Vue 的一年以上的项目了,想换框架也是难事。

    而且三者的生态环境也都比较完备和稳定了。不存在你能做而我做不到的点,所以大家都已经专注于业务开发,而不是框架的选择了。

    所以只要你会其中任何一个框架,都有饭吃。如果一个都不会,就很难找到工作了。

    趋势:函数式编程

    React 带起了一股函数式编程的风潮,然而如果你问大部分前端「什么是函数式」,肯定有人还是一知半解支支吾吾的。这是学习能力强的人的一个大机会。

    前端的函数式还处于初级阶段,由于 JS 这门语言虽然有函数式的影子,但是依然缺失很多函数式语言必须具备的特性,这也是一些 JS 开发者转向 ReasonML 的原因。

    趋势:自家组件库

    今年各大公司均有自家的组件库(阿里的 Ant Design、饿了么的 Element UI、TalkingData 的 iView、滴滴的 Cube UI、有赞的 Vant 和 Zent ),这得益于 Angular / React / Vue 的成熟的组件化能力。这也意味着对前端开发者的要求提高了,不仅需要会用别人的 UI 库,还需要自己能开发 UI 库。

    组件库的兴起也使得前端终于开始重视「单元测试」这一基本的测试手段了,很多人都会使用 jest 和 mocha 来进行单元测试。

    趋势:对 Node.js 的使用更为理智

    现在前端开发者不像之前几年对 Node.js 趋之若鹜了,而是只在必要的时候使用 Node.js 。因为前端已经理解就算学会了 JS 也不代表能手上 Node.js ,而且 Node.js 也越来越专业化了,其领域知识跟前端几乎没有重合的部分。

    趋势:Webpack 的封装

    由于 webpack 配置的复杂性,越来越多的工具都把 webpack 进行了简化和封装,如 Vue CLI 3、Angular CLI 和 create-react-app。因此新人在创建项目的时候几乎不会遇到复杂的 webpack 配置问题,一个成熟的前端团队也只需要一两个人维护 webpack 的配置即可。

    相信不久之后,这些配置会进一步简化。

    总结

    总之,前端在经历了一两年的百花齐放后,逐渐趋于稳定,大家分别使用自己喜欢的框架,打造趁手的 UI 组件,并且开始使用 TypeScript 和单元测试来提高代码的质量,以做出更好的产品。对后端知识没有了解的前端也不再盲目投入 Node.js 的怀抱了,而是认真做好前端业务; Node.js 的使用者也更专注于后端开发,这是双方都在朝着专业化方向进步的体现。

    如果你对文章中提到的 React、Vue、TypeScript、UI 框架和单元测试等知识感兴趣,可以我们的 Vue 交流群 5 或者 React 交流群 2(请尽量只加一个群)

    以上就是我们在 2018 年观察到的一些前端技术趋势,不一定全面,如有错误欢迎指正。

    第 1 条附言    2018-12-13 14:32:24 +08:00
    typo: Electro -> Electron
    8 条回复    2018-12-23 02:13:07 +08:00
    cuixiao603
        1
    cuixiao603  
       2018-12-13 13:44:54 +08:00
    m
    whyrookie
        2
    whyrookie  
       2018-12-13 13:48:49 +08:00
    mark
    FrankFang128
        3
    FrankFang128  
    OP
       2018-12-13 14:52:06 +08:00
    各位收藏的麻烦点个赞让大家也看到如何?
    jirenguyuanyuan
        4
    jirenguyuanyuan  
       2018-12-13 14:53:47 +08:00
    先收藏
    gkiwi
        5
    gkiwi  
       2018-12-13 15:16:14 +08:00
    辛苦楼主了。

    不过我觉得这这个 2017 年,2018 年,2019 年感觉都可以用。如果能多补充下 2018 年增量的东西就更棒了!
    kakudesu
        6
    kakudesu  
       2018-12-13 16:13:26 +08:00
    mark
    civet
        7
    civet  
       2018-12-13 20:59:39 +08:00 via iPhone
    我老是把 electron 打成 eletron ...
    jecvay
        8
    jecvay  
       2018-12-23 02:13:07 +08:00
    看完啦 很棒写的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2825 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 14:19 PVG 22:19 LAX 07:19 JFK 10:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86