最专业的八方代购网站源码!

资讯热点
2017年前端行业发生了哪些变化,2018年的预期是什么?

发布时间:2019-10-5 分类: 行业资讯

以下是我对“2017年前端有哪些变化?即将到来的2018年的期望是什么?”这一问题的回答。如有任何遗漏,请在评论中告知我们。原文如下:

在即将到来的2017年,我们将审核:

三个无法逃脱的主要框架

React继续主导前端市场,并在2017年发布了最受期待的版本之一React 16.它包含一个支持异步UI渲染的光纤架构。通过提供许多其他功能,包括错误边界。但React在这一年中取得的最重要成就不是它引入的新功能,而是其开源协议的修改:BSD协议 - > MIT协议。此外,Jest,Flow,Immutable.js和GraphQL授权也更改为MIT协议。

Angular的市场份额继续下降(与React相比),发布V4(3月23日)和V5(11月2日),将Angular Universal视为V4官方项目的一部分,Angular Animation从核心包中提取,并在V5中,改进了PWA支持,实现了编译器优化,构建速度更快。

尽管React取得了巨大的成功,但Vue(作者余玉玺)仍然越来越受欢迎。该框架提供了一个非常友好和简单的API,是React的主要替代品之一。它已被包括GitLab在内的大公司采用,后者回顾了过去一年使用该框架的故事。

注意:上图显示了过去三年NPM的下载比较。下面将类似的框架/包比较图表与一年内的npmtrends下载进行比较,并在GitHub上显示星号/分叉等状态信息。

ECMAScript的

经过详尽的提案流程后,2017年版本的ECMAScript规范于6月发布,其中包括一些突破性的功能,如异步功能,共享内存和原子操作。其中,共享内存将使JavaScript中的高性能并行计算更易于处理和更高效。对于想要使用WebGL和Web工作者创建游戏的人来说,具有共享内存的并行体系结构是一个巨大的诱惑。

2017年12月,所有主流浏览器都支持此版本,Edge表示将从v16开始支持这些功能。由于Node不支持Web worker,因此他们不支持共享内存,但他们正在重新考虑决策。

WebAssembly

所有主流浏览器现在都支持WebAssembly,Chrome开始在5月支持它,Firefox从3月开始支持,而Edge在10月支持。 Safari在第11版中开始支持它。 Chrome for Android和Safari Mobile也支持WebAssembly。有关详细信息,请参阅现在在所有主要浏览器中发布的WebAssembly支持– Mozilla博客

渐进式网络应用

我们一直在寻找解决方案,以弥合网络和其他客户之间的差距。 Google通过将Web应用程序转换为Progressive Web Apps(PWA)一直引领着增强其功能的方式,该应用程序于2017年迅速采用.PWA应用程序利用现代浏览器技术提供更像移动应用程序的Web体验。它提供了改进的性能和离线体验,以及以前仅适用于移动设备的功能,例如推送通知。 PWA的基础是manifest.json文件和服务工作者的使用。有关详细信息,请参阅Progressive Web Apps: Great Experiences Everywhere(Google I/O‘ 17)。

包管理器

Bower的市场份额持续下降,其最后一次发布于2016年11月,之后官方正式推荐用户使用NPM来管理前端项目的包装。

NPM自首次发布以来已经存在了很长时间,但它仍然缺乏Yarn希望添加的一些关键功能。 Yarn的主要贡献是包缓存,一种确保确定性构建,并行操作和依赖性的锁定文件。这些功能非常成功,NPM在5.0版本中实现了这些功能。纱线下载量超过10亿(目前每月下载量为125万次),拥有惊人的2,900个GitHub明星。即使您没有使用Yarn,由于Yarn作为一个整体发布,JavaScript包管理也得到了显着改善。

为了响应Yarn的出现,NPM回击了v5版本,这显着提高了性能(包括上述Yarn版本的功能)。

样式布局

网格布局最终被CSS采用为标准,浏览器正在迅速采用它。过去,网格系统已经在CSS中的表,浮点数,弯曲和内联块中实现。

在2017年,人们目睹了风格组件(由Max Stoiber,Glen Maddern和Phil Plü ckthun创建)逐渐占据了人气。 Emotion(由Kye Hohenberger创建)是最新的JavaScript库之一,但它已被迅速采用。另一种选择是迷人的(由PayPal,Kent C. Dodds和一群热心的贡献者创建)封装了魅力库。

在过去几年中,像SASS,Less和Stylus这样的CSS预处理器已经变得流行起来。 PostCSS于2014年推出,并于2017年开始流行,成为最受欢迎的CSS预处理器。

另一方面,在2017年,主要的进步来自CSS-in-JS的明显改进和采用,其中所有样式都是使用代码而不是样式表构建的。目前还不清楚这是否会成为前端社区的最终方向,但这是最新的方法。

PostCSS仍然是首选的CSS预处理器,但许多人正在转向CSS-in-JS解决方案。

注意:评论中的一些学生提到PostCSS是一个后处理器。根据定义,CSS后处理器处理CSS并最终生成CSS的预处理器,广义上属于CSS预处理器。由于我的答案的定位和参考文献中的参考,我不在这里细分并假设PostCSS是一个预处理器。详细的同学可以进一步细分。

工程模块化工具

Webpack 2于今年2月发布。它带来了重要的功能,如ES6模块(不需要Babel转换导入语句)和树摇动(消除包装中未使用的代码)。此后不久,V3发布了一个名为“范围提升”的功能,它将所有webpack模块放入一个JavaScript包中,大大减小了它的大小。

7月,Webpack团队获得了Mozilla开源支持计划的资助,为WebAssembly提供一流的支持。

作为一个有趣的项目,Parcel在短短十天内就在GitHub上获得了10,000颗星。它主要通过利用多个CPU内核和高效的文件系统缓存来实现。它还在抽象语法树上运行,而不是使用像Webpack这样的字符串。

此外,Rollup的发展也不容小觑。 4月,React团队从Gulp转到Rollup进行开发。此外,Webpack团队还建议在某些方面使用Rollup而不是Webpack。

打字稿

JavaScript中缺少类型一直是许多人的抱怨。要解决这些问题,会出现TypeScript。它是由Microsoft创建的,TypeScript中缺少类型 - 可扩展的JavaScript.JavaScript一直是很多人的抱怨。要解决这些问题,会出现TypeScript。它是由微软创建的,并且由于其出色的性能赢得了许多JavaScript开发人员的青睐,而Flow提供了一种更灵活的方式来引入类型,而不需要激进的重构,这是Facebook的结果。

应用程序状态管理

Redux仍然是React项目推荐的州管理解决方案,并且在2017年实现了五倍的增长率(NPM下载)。

Mobx发展迅速,并被IBM,美国银行和Lyft等高利润公司所采用。

此外,MobX团队正在努力将Redux和MobX的优势结合到新项目中 - —— mobx状态树(MST)。

GraphQL

GraphQL似乎很快就在REST上获得了立足点,而Samer Buna甚至声称REST已经死了。 GitHub使用GraphQL编写了最新版本的API,为了使GraphQL可供所有开发人员使用,许多公司正在开发诸如Johannes Schickling开发的Graphcool框架之类的产品。

静态代购源码网站生成计划

2017年在静态代购源码网站上见证了卷土重来。像Gatsby这样的框架使您能够使用React和其他现代工具构建静态代购源码网站。并非每个代购源码网站都需要或应该是一个复杂的现代Web应用程序。由于预构建标记,静态代购源码网站生成方案为您提供服务器端呈现的优势和速度。如果您正在寻找一个很好的例子,官方的React文档是使用Gatsby构建的。

在即将到来的2018年,我们期待:

基于组件应用程序的样式是组织CSS的最佳方式吗?关于这些内容的讨论可能会加剧。

越来越多的公司采用具有统一代码库的移动端解决方案,如React Native,Flutter或Weex。

凭借离线功能和无缝移动体验,网络变得更加原生,并且通过Apple关于Safari Technology Preview 46的Service Worker发行说明的声明,PWA可能在2018年得到全面支持。

WebAssembly可以取得很大进步并提供更好的Web体验。

GraphQL是并且继续挑战REST。

由于不再存在对开源协议的任何争议,React已经加强了其地位。

Flow和TypeScript采用更强大的方法来使JavaScript更具结构化。

虚拟现实正在推进像A-Frame,React VR和Google VR这样的图书馆。

人们使用区块链和web3.js(由Marek Kotewicz和Fabian Vogelsteller创建)构建了一些非常酷的应用程序。

建筑项目的不断发展,Webpack,Rollup和崭露头角的Parcel等在建筑计划的份额中实现了持久而持久的转世。

这个答案在写作过程中引用了以下内容:

2017年前端:重要部分

2017年前端开发的回顾

« 经纪APP增值服务收费模式研究:现状,趋势和发展建议 | 转型失败的案例分析:关闭汽车是否安全,因为它“好”? »