2017前端技术大盘点

前言

临近2017的尾声,总是希望来盘点一下这一年中前端的发展。到目前为止,前端的井喷期也快临近尾声了。并不像几年前一样,总是会有层出不穷的新东西迸发出来。同时,前端技术也慢慢的趋于稳固,自成一套体系。如果你喜欢我的文章,欢迎评论,欢迎Star~。欢迎关注我的github博客

正文

我们何处说起?自然是离不开那三驾马车。

三驾马车

自从2015年,react的问世,开始了三驾马车时代的先河。同时,jQuery也逐渐让出了其霸主的地位。后续的,angular开始了大型的改版,似乎想要追逐react的步伐。两种完全不同思路的体现,在前端开发的技术栈中发光发亮。同时,Vue就像一匹黑马一样,一路披荆斩棘,快速地进步着。

因此,从2017年开始,3架马车可以说是并驾齐驱。似乎需要看些对比数据,来表示它们目前的现状。(来自国外的数据)

框架对于用户的满意度

可以看到react的深紫色是最多的,表示用户对于react还是十分满意的。虽然,早前的React收到了协议的影响,但是,这似乎并不影响它在开发者心目当中的地位。另外,react如此受欢迎的另一个重要原因就应该是React Native了吧。今年以来,React Native一直以两周一次的小版本更迭周期,迅速发展着。或许,2018年将会迎来最重大的正式版本1.0。(这个还是值得期待的。)

对于大多数开发者而言,学习了React的时候,对于它们学习React Native是有直接性质的帮助的,所以一般的国外开发者不会拒绝学习React这个框架的。

介绍完,React的情况,我们或许可以回望一下Angular的情况吧。

Angular可以说是一个最早问世的MVVM的框架。2009年,angular像一枚重磅炸弹一样,震撼了前端的开发者们。当时,W3C似乎还未推出正式的Web Component标准。React和Vue也还在襁褓之中安眠。可想而知,之后的几年Angular一直影响着后续前端的发展。但是,Angular有着许许多多的问题,也使得它在后续的框架之争中,处于下风。2016年9月正式推出的angular2,将angular引领向了另一种形式——以HTML为中心的框架。一套完整的体现,其中加入了TypeScript RxJS等组合,可想而知,一套内容的学习成本相当之高,与React以JS为中心的思想完全不同。不过似乎这一次Google将框架的定位目标换成了企业,国内外在使用这套框架的往往是银行、证券类企业。不过,它的发展还是被看好的,毕竟它的背后可都是一群Google的顶尖开发工程师呢!!

最后,我们来了解一下三驾马车中的黑马——Vue。

从第一张图中,虽然React一直处于领导地位,但是,Vue2的使用,也将于其他两个框架持平快了。毕竟,在国内的前端环境中,Vue可以说是非常受欢迎的。(据说印度开发前端,会用Angular,中国人开发前端,会用Vue)不得不说的是,Vue与Weex的结合,虽然体验不及RN,但是有着阿里的技术支持,也将有希望突破吧。

PWA

如果在国外,你今年听到的热词一定会有PWA这个东西。前不久,Safari已经开始支持PWA了,那么也就意味着PWA的时代不会太远了。当然,国内实践PWA的公司也不占少数,例如饿了么、阿里等。从去年开始,对其有所耳闻,到今年Google开发者大会上的现场演示,相信更多的开发者对于这门技术的狂热。对于国内开发者而言,唯一不好的优势应该就是文档了。因为目前来说,大部分的文档都是以英文的形式存在于GitHub或者国外书籍中的。翻译过来的书,也不会这么快的速度问世,所以目前研究PWA的中文资料少之又少。

不过相信,它的发展在之后的一两年的是强而有力的。

国内的小程序

今年,在国内会被称为“小程序年”。从1月份开始,微信正式将公测了小程序。继而在7月份开始,支付宝也推出了相应的小程序。在国内,这样子的重大消息是不容忽视的。两大巨头之争,推动的是无与伦比的流量红利。基于小程序的开发,也将成为国内的前端的一大重点。将原用的整体化的内容,逐步分割成一个个小的模块,将至放入到微信这个大环境中去分享,最后起到一个引流的效果。回到技术的成面,小程序或许会有着与PWA一样的思想,将之前在移动端难以为继的Web端,放入到自家应用中,来确保它的长久与稳定。更多的是说,这两者起到了异曲同工的效果。同样的,这项技术,将在2018年持续发展下去,同时,也会有更多的前端投入到这项开发中去。

styled-components

这项技术,也是从上半年开始有所耳闻的。主要是作为react库的衍生物的形式出现的。它将css部分的代码以js的形式展现在代码中,那么之后只需要开发js就可以完成整个应用的开发了。同时,它还有一个好处,它的样式是基于组件的,所以可以做到复用,同时,往往js的变量在css中去使用时,是一个令人头疼的问题。而styled-components很好的解决了这个问题,因为它本身就是在组件中开发样式,js的变量依然可以被使用在css的部分代码中。这项技术也是可期的,因为越来越多的人在自己的react项目中开始了这项技术的尝试。

Rollup

这是啥?没错,又有一个模块打包工具来了。或许,大家熟知的更多的是webpack这个模块打包工具。今年的4月份,React做了一个大动作——在React的主分支上合并了一个PR,将当时的构建工具换成了Rollup。可想而知,这个东西将会是多么的重要。好奇的是,它与其他的不同之处吧!它是一款基于ES2015模块进行打包的打包器。在过去的打包工具(包括webpack在内)中,都是基于CommonJS的规范去进行模块的打包的,所以,过去很多库的前面总是会有一大堆webpack等自家的逻辑填充在开头。Rollup不同,他是后天生的,出生的基准点就表明它的高度将不限于此。但是,相对于巨头webpack来说,它或许在今年并未体现出它的优势,但是相信它会厚积薄发的。

建议:在开发应用时,使用webpack,在开发库时,可以考虑Rollup。

GraphQL

这个东西,或许在国内鲜有闻之。但是,它仍是一项不错的技术,同时在调查中,也体现出不俗的潜力,如图:

GraphQL

它是有Facebook开发的一款API查询语言,或将替代Rest在后端的地位。虽然,目前来说,其性能并不是特别的优秀,也会bug不断。但是,2018年或将是GraphQL的一年。那么,和前端又有什么关系呢?别忘了,我们手里还有一个利器NodeJS呢!能够用好它,对于你开发nodeJS,或许使用便利。

TypeScript

这一项由微软老大开发的语言,处处在弥补着JavaScript的缺陷。一出生,就打着“取代JavaScript”的旗号,发展的速度也是惊人的。当然了,W3C也在努力的推进着JavaScript的进步,之后的几年,应该会是着两门语言并驾齐驱的发展吧。因为开发人口众多,不可能走到谁取代谁的地步。

最后,贴出一张Stackoverflow上面的一项数据统计表吧!

兴趣表

图片来源:I just asked 23,000 developers what they think of JavaScript. Here’s what I learned.

总结

我们盘点了一年以来前端的发展,有着不错新技术不断被推出着,相信前端会发展的越来越好。因为在JSConf大会上,有人发言说,之后将会发展成“前端 云端”的组合。那么,也并不存在全栈类开发的说法了。前端开发的小伙伴加油吧!!我们共勉

如果你对我写的有疑问,可以评论,如我写的有错误,欢迎指正。你喜欢我的博客,请给我关注Star~呦github博客


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins pipeline api获取stage的详细信息_Jenkins + Docker 助力 Serverless 应用构建与部署...

本文来源: ServerlessLife 公众号近日,使用 Serverless 开发了一个应用。其中 CI/CD,是需要考虑的一个问题。这里用到了 Jenkins 和 Docker。并且 Jenkins Pipeline 运行在容器中。本文将介绍如何使用 Jenkins 和 Docker 构建并部署 Serverle…

BZOJ 1305 [CQOI2009]dance跳舞

这是一道最大流的模版题 一定要记住不能开出来重点呀 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int MAXN205; const int MAXM6005; const int inf0x3f3f3f…

项目本地部署

1.将数据库导出&#xff0c;并导入到本地 exp dgpdg/pass192.168.1.33/ORCL fileD:\gd_base.dmp logD:\gd_base.log&#xff08;不要加fully&#xff0c;会把整个数据库下所有用户的表倒下来&#xff09; imp dgpdg/pass127.0.0.1/orcl file"D:\gd_base.dmp" log&quo…

Java方法中的参数太多,第7部分:可变状态

在我的系列文章的第七篇中&#xff0c;有关解决Java方法或构造函数中过多参数的问题 &#xff0c;我着眼于使用状态来减少传递参数的需要。 我等到本系列的第七篇文章来解决这个问题的原因之一是&#xff0c;它是我最不喜欢的减少传递给方法和构造函数的参数的方法之一。 也就是…

命名空间不能直接包含字段或方法之类的成员是什么意思_Python 学习笔记之类与实例...

Python 学习笔记之类与实例一、定义1.1、定义类 (class) 封装一组相关数据&#xff0c;使之成为一个整体&#xff0c;并使用一种方法持续展示和维护。这有点像把零件组装成整车提供给用户&#xff0c;无须了解汽车的内部结构和工作原理&#xff0c;只要知道方向盘&#xff0c;刹…

跨平台开发框架 Lynx 初探

跨平台开发是目前开发较热门的方向&#xff0c;React Native 在这方面取得了很大的成功&#xff0c;同时 Flutter 也获得了非常多的关注。React Native 采用 Web 框架开发并使用 Native UI 进行渲染&#xff0c;很大程度上降低了 Native 开发的门槛并且提高迭代的效率&#xff…

linux ubuntu 关于vim得一些基本命令

&#xff11;.vim显示行号 :set number 2. 快捷键 J 向下 K 往上 H 向左 L 向右 ctrlshiftT  打开新窗口 ctrlPage Down 所有vim窗口向下切换 ctrlPage Up 所有vim窗口向上切换 &#xff13;. 复制vim打开的内容 yy 复制光标所在行 2yy 复制光标所在行往下的两行 ....…

ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?

http://www.runoob.com/php/php...使用这个实例操作之后为什么只显示一条数据&#xff0c;如何让符合条件的数据全部显示出来如&#xff0c;我使用的查询字段是yesterday_str&#xff0c;查询2017-04-18这个数据怎么样才能把2017-04-18包含这个的全部数据提取出来&#xff1f;p…

使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分

在本文中&#xff0c;我们将重点介绍CDI和Servlet 3.0。 您可以在此处看到第1部分。 让我们从CDI开始。 当我开始撰写源自该系列的文章时&#xff0c;我并没有考虑撰写CDI。 真诚地说&#xff0c;我以前从未使用过。 这篇文章的想法是使用jedis和servlet创建一个对象。 但是&a…

Safari支持Service Worker,PWA还有多久爆发?

作者 | 彭星 编辑 | 尾尾 在之前的文章《PWA 将带来新一轮大前端技术洗牌&#xff1f;》中&#xff0c;我们回顾了 Web 在移动时代遭遇的两大枷锁&#xff0c;并就PWA是否能真正弥补 Web 劣势进行了分析&#xff0c;同时&#xff0c;提出“根据当前的发展趋势&#xff0c;PWA…

安装python3 及virtual与virtualenvwrapper

安装python3 下载python源码包 网址&#xff1a;https://www.python.org/downloads/release/python-362/ 下载地址&#xff1a;https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz 安装python前的库环境&#xff0c;非常重要 yum install gcc patch libffi-devel py…

响应式设计与前端工程性

一&#xff1a;响应式的几个基本知识 字体选择 有衬线和无衬线&#xff0c;那种字体看自己的美学意识和考虑 透视比例与体验一致性保证&#xff08;人眼的位置&#xff09; 行高&#xff0c;字体大小&#xff0c;间距&#xff0c;要根据整个展示范围的透视比例合理的去规划pc 离…

aspx写入mysql_Asp.net用户登陆数据库验证与注册写入数据库

1.思路与效果图Index.aspx注册注册成功登陆登陆验证通过进入内容页1登陆没通过验证思路&#xff1a;首先建一个Sqlserver数据库Student,再建一个student表(name,pwd)存放用户名和密码。然后注册功能的实现&#xff1a;通过数据库插入信息到表的Sql语句来实现&#xff0c;成功提…

在WildFly中将Apache Camel和Spring添加为jboss模块

这些天&#xff0c;我在玩Wildfly &#xff0c; Apache Camel和Spring 。 在EAR / WAR之间进行通信的一种简单方法是使用Camel的direct-vm组件。 有或没有骆驼&#xff0c;有很多方法可以实现这一目标。 骆驼在WildFly中就像一个饰物&#xff0c;不需要任何额外的配置。 骆驼很…

页面体验提升小技巧—渐进式图片

前端性能方面有许多可优化的点&#xff0c;而这些优化带来的就是用户体验的提升。今天我们要聊的东西并不能给性能带来提升&#xff0c;但却能在一定程度上提升用户的体验。 参考博客 场景&#xff1a;在访问页面的时候如果图片较大或者网速慢的情况我们会看到图片加载起来是有…

php mysql无限分类排序_PHP 无限级分类、排序

lyk625358header(content-type:text/html;charsetutf-8);echo "";//-无限级排序,自己优化改良的,清除上次调用此函数后留下的静态变量的值$arr array(array(id>2,cname>分类2,parent_id>1),array(id>9,cname>分类9,parent_id>8),array(id>1,cn…

Java方法中的参数太多,第5部分:方法命名

在上一篇文章 &#xff08;有关处理Java方法中过多参数的系列文章的 第4部分 &#xff09;中&#xff0c;我将方法重载视为一种向客户提供需要较少参数的方法版本或构造函数的方法。 我描述了该方法的一些缺点&#xff0c;并建议从方法重载中摆脱出来以使用不同名称的方法至少可…

微信小程序搭配小白接口,自己没有服务器也能开发哦

这里将重点介绍&#xff0c;在自己没有服务器的情况下&#xff0c;如何在微信小程序里直接调用小白接口。 前提 假设你已经开通微信小程序&#xff0c;如果还没有&#xff0c;可前往微信公众平台开通&#xff1a;https://mp.weixin.qq.com 假设你已经开通小白接口&#xff0c…

LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置

1、题目描述 给定一个按照升序排列的整数数组 nums&#xff0c;和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值&#xff0c;返回 [-1, -1]。 示例 1: 输入: nums [5,7,7,8,8,10], targ…

怎么将自己做好的网站发布到互联网上呢?

如何将自己的网站上传到网站空间。 1.需要有一个上传网站的软件&#xff0c;在这里推荐大家使用 FTP全称是flashfxp这个软件&#xff0c;这个功能功能齐全而且操作简单。大家可以先去下载一下这个软 件 2. 打开FTP&#xff0c;界面如下 3.我们要点击链接按钮&#xff0c;然后FT…