2019,开发者应该学习的16个JavaScript框架

2019,开发者应该学习的16个JavaScript框架

  • 来源 | 愿码(ChainDesk.CN)内容编辑
  • 愿码Slogan | 链接每一个程序员的故事
  • 网站 | http://chaindesk.cn
  • 愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优点创造睡后收入。
  • 官方公众号 | 愿码 | 愿码服务号 | 区块链部落
  • 免费加入愿码全思惟工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码

本文阅读时长:14minjavascript

根据Stack Overflow的开发人员调查,JavaScript是最普遍使用的编程语言之一。因为其不断发展的框架生态系统,能够为复杂和具备挑战性的问题找到最佳解决方案。尽管JavaScript的大部分生命周期都与Web开发有关,但近年来,它的使用彷佛正在扩大。它不只从前端移动到后端,咱们也开始看到它用于机器学习(Machine Learning, ML)和加强现实(Augmented Reality,简称 AR)。html

JavaScript的发展是由框架驱动的。尽管有一些在引领潮流,但还有许多其余较小的工具在2019年值得你关注。前端

JavaScript Web开发框架


Reactvue

React最初由Facebook于2011年开发,2013年开源。从那时起,它已成为构建用户界面的最流行的JavaScript库之一。根据NPM的调查,尽管React在2018年的增加放缓,但它将成为2019年的主导框架。因为其高使用率,2018年的JavaScript现状调查将其称为“采用的安全技术”。java

在2018年,React团队发布了从16.3到16.7的版本,并进行了一些重大更新。这些更新包括新的生命周期方法,Context API,用于代码拆分的悬念,React Profiler,Create React App 2.0等。该团队已经制定了2019年的计划,很快将发布最期待的功能之一Hooks。它容许开发人员在不使用JavaScript类的状况下访问状态等功能。它旨在经过容许开发人员重用有状态逻辑而不对组件层次结构进行任何更改来简化React组件的代码。其余功能将包括并发模式,以容许组件树呈现而不阻塞主线程,数据获取的悬念等等。webpack

Vue程序员

Vue是由Evan You在为许多项目使用AngularJS为Google工做后建立的。它在2014年首次发布。分享他建立Vue的动机,Evan说:“我想,若是我可以提取我真正喜欢Angular的部分并构建一些很是轻量级的东西会怎样 。” Vue继续在JavaScript开发人员中获得很好的采用,我怀疑这种趋势很快就会中止。根据NPM调查,一些开发人员更喜欢Vue而不是React,由于他们以为“在保持可扩展性的同时更容易上手”。 web

Vue是一个容许开发人员构建交互式Web界面的库。它提供相似于React的数据反应组件,具备简单灵活的API。与React或Angular不一样,Vue的一个好处是它产生的干净的HTML输出。其余JavaScript库每每会在代码中留下散布着额外属性的HTML,而Vue会删除它们以产生干净的语义输出。它经过官方维护的支持库和包为复杂应用程序提供高级功能,如路由,状态管理和构建工具。shell

Angular数据库

谷歌于2009年开发了AngularJS,并于2012年发布了第一个版本。从那时起,它获得了企业和我的的热烈支持和普遍采用。AngularJS最初是为设计师而非开发人员开发的。虽然它确实在设计上看到了一些改进,但它们还不足以知足开发人员的要求。后来的版本,Angular 2,Angular 4等已经升级,提供性能的总体改进,特别是在速度和依赖注入方面。

新版本简称为Angular,这是一个平台和框架,容许开发人员使用HTML和TypeScript构建客户端应用程序。它带有声明性模板,依赖注入,端到端工具以及解决开发难题的集成最佳实践。虽然AngularJS的架构基于模型 - 视图 - 控制器(MVC)设计,但Angular具备基于组件的架构。每一个Angular应用程序至少包含一个称为根组件的组件。每一个组件都与一个负责处理业务逻辑的类和一个表明视图层的模板相关联。

Node.js

围绕Node是不是一个框架(它确实是一个库)存在不少争论,但在谈论Web开发时,很难跳过它。Node.js最初是由RyanDahl编写的,他在2009年11月8日举行的首届欧洲JSconf上演示了这一点。Node.js是一个免费的、开源的、跨平台的JavaScript运行时环境,在浏览器外执行JavaScript代码。

Node.js遵循“JavaScript无处不在”的范例,经过围绕单一编程语言统一Web应用程序开发,而不是服务器端和客户端脚本的不一样语言。在JSConf 2018中,Dahl描述了他的服务器端JavaScript运行时引擎的一些限制。其架构的许多部分都受到限制,包括安全性以及如何管理模块。做为解决方案,他引入了一个名为Deno的新软件项目,这是一个V8 JavaScript引擎上的安全TypeScript运行时,旨在纠正Node.js中的一些设计缺陷。

跨平台移动开发框架


React Native

React Native的故事始于2013年夏天,当时它是Facebook的内部Hackathon项目,后来于2015年开源。React Native是一个用于构建原生移动应用程序的JavaScript框架。正如你可能已经从其名称中猜到的那样,React Native基于React。它之因此被称为“本机”是由于使用React Native构建的UI包含本机UI小部件,这些小部件外观和感受与使用本机语言构建的应用程序一致。

在后台,React Native将用Javascript/JSX编写的用户界面定义转换为适合目标平台的本地视图层次结构。例如,若是咱们正在构建iOS应用程序,它会将Text原语转换为本机iOS UIView,而在Android中,它将使用本机TextView生成。所以,即便咱们正在编写JavaScript应用程序,咱们也不会在移动设备的shell中嵌入Web应用程序。咱们正在得到一个“真正的原生应用”。

NativeScript

NativeScript由Telerik(Progress的子公司)开发,于2014年首次发布。它是一个开源框架,可帮助您使用JavaScript或任何其余转换为JavaScript的语言(例如TypeScript)构建应用程序。它直接支持Angular框架,并经过社区开发的插件支持Vue框架。使用NativeScript构建的移动应用程序可生成彻底本机应用程序,这些应用程序使用的API与在Xcode或Android Studio中开发的API相同。

因为应用程序是用JavaScript构建的,所以须要一些代理机制来将JavaScript代码转换为相应的本机API。这是由NativeScript的运行时部分完成的,它充当JavaScript和本地世界(Android和iOS)之间的“桥梁”。运行时可使用JavaScript代码在Android和iOS框架中调用API 。要作到这一点,须要使用JavaScript虚拟机——Google的V8用于Android,WebKit的JavaScript实现与iOS 7.0+一块儿发布。

Ionic框架

该Ionic框架是由Drifty公司建立,最初发布于2013年,它是一个开源的前端SDK,用于开发混合移动应用程序,使用熟悉的Web技术,如HTML五、CSS和JavaScript。借助Ionic,您将可以构建和部署跨多个平台的应用程序,例如本机iOS,Android,桌面和Web做为渐进式Web应用程序。

Ionic主要关注应用程序的外观或UI交互。这告诉咱们,它并不意味着取代Cordova或你最喜欢的JavaScript框架。事实上,它仍然须要像Cordova这样的原生包装器来将您的应用程序做为移动应用程序运行。它使用这些包装器来访问主机操做系统功能,如相机,GPS,手电筒等。Ionic应用程序在低级浏览器外壳中运行,如iOS中的UIWebView或Android中的WebView,它由Cordova/PhoneGap等工具包装。

JavaScript桌面应用程序开发框架


Electron

Electron由GitHub的软件工程师Cheng Zao建立。它最初于2013年做为Atom Shell发布,而后在2015年改名为Electron.Electron使Web开发人员可以利用他们现有的知识和本地开发人员构建一个代码库并分别为每一个平台发布。有许多流行的应用程序使用Electron构建,包括Slack,Skype for Linux,Simplenote和Visual Studio Code等。

Electron应用程序由三个组件组成:Chromium Web引擎,Node.js解释器和应用程序的源代码。Chromium Web引擎负责呈现UI。Node.js解释器执行JavaScript并为您的应用程序提供Chromium引擎没法使用的操做系统功能,例如文件系统访问,网络,本机桌面功能等。应用程序的源代码一般是JavaScript,HTML和CSS。

JavaScript机器学习框架


Tensorflow.js

在2018年的TensorFlow开发者峰会上,Google宣布了他们的机器学习框架TensorFlow的JavaScript实现,称为TensorFlow.js。它是deeplearn.js的继承者,于2017年8月发布,如今命名为TensorFlow .js Core。该团队最近发布了针对TensorFlow的Node.js绑定,因此如今相同的JavaScript代码将同时适用于浏览器和Node.js.

Tensorflow.js由四层组成,即用于GPU支持的数字操做的WebGL API,用于用户交互的Web浏览器,以及两个API:Core和Layers。低级Core API对应于之前的deeplearn.js库,它提供硬件加速的线性代数运算和用于自动区分的急切API。更高级别的Layers API用于在Core之上构建机器学习模型。它还容许开发人员使用Keras或TensorFlow SavedModels导入以前使用Python训练的模型,并将其用于在浏览器中进行推理或转移学习。

Brain.js

Brain.js是一个用JavaScript编写的神经网络库,是“Brain”库的延续,能够与Node.js一块儿使用或在浏览器中使用。它经过利用JavaScript的易用性和将API限制为几个方法调用和选项,简化了建立和训练神经网络的过程。针对不一样的任务,它具备不一样类型的网络,包括具备反向传播的前馈神经网络,时间步长递归神经网络,时间步长期短时间记忆神经网络等。

JavaScript加强现实(AR)和虚拟现实(VR)框架


React 360

2017年,Facebook和Oculus共同推出了React VR,后者于去年改编并从新命名为React 360。这个改进的版本简化了3D空间中的UI布局,而且比React VR更快。React 360构建于咱们以前讨论过的React之上,是一个JavaScript库,使开发人员可以建立3D和VR界面。它容许Web开发人员使用熟悉的工具和概念在Web上建立沉浸式360体验。

使用React 360构建的应用程序由两部分组成,即在你的React应用程序和运行时,这两部分将您的组件转换为屏幕上的3D元素。这种“角色划分”概念相似于React Native。因为Web浏览器是单线程的,所以应用程序代码与呈现代码分离,以免应用程序中出现任何阻止行为。经过在单独的上下文中运行应用程序代码,呈现循环能够以高帧速率持续更新。

AR.js

AR.js由Jerome Etienne于2017年开发,旨在在网络上有效地实施加强现实。它目前提供60fps的效率,这对于基于Web的开源解决方案来讲并不坏。该图书馆受到了诸如three.js,ARToolKit 5,emscripten和Chromium等项目的启发。

AR.js须要WebGL,一种用于HTML5 Canvas元素的3D图形API,以及WebRTC,一组浏览器API和协议,容许在Web浏览器和本机应用程序中实现音频,视频和数据的实时通讯。利用ARToolKit和A-Frame中的功能, AR.js使得用于Web的AR的开发成为一个简单的过程,能够由新手编码器实现。

新兴的JavaScript框架


Gatsby.js

Gatsby的创始人凯尔马修斯在2017年辞去了他初创公司的工做,并开始全职专一于他的项目:Gatsby.js和Typography.js。Gatsby.js最初于2015年发布,其第一个版本于2017年问世。它是React.js的现代网站生成器,这意味着Gatsby中的全部内容都是使用组件构建的。使用Gatsby,能够建立动态和静态网站/网络应用程序,从简单的博客,电子商务网站到用户仪表板。

Gatsby支持许多数据库源,例如Markdown文件,无内容CMS,如Contentful或 WordPress,或REST或GraphQL API,您能够经过GraphQL进行整合。它还能够经过自动化来实现代码拆分,图像优化,内联关键样式,延迟加载和预取资源等功能。

Next.js

Next.js由ZEIT建立并于2016年开源.Red.js构建于React,Webpack和Babel之上,是一个小型JavaScript框架,能够轻松实现React应用程序的服务器端呈现。它提供了自动代码分割,简单的客户端路由,支持HMR的基于Webpack的开发环境等功能。它旨在帮助开发人员编写同构的React应用程序,以便相同的呈现逻辑可用于客户端和服务器端呈现。

Next.js基本上容许你编写一个React应用程序,SSR和代码拆分之类的东西会为你处理。它支持两种服务器端呈现模式:按需和静态导出。按需呈现意味着每一个请求,呈现一个惟一的页面。此属性很是适用于高度动态的Web应用程序,其中内容常常更改,具备登陆状态和相似用例。此模式须要运行Node.js服务器。另外一方面,静态导出会将全部页面预先呈现为.html文件,并使用任何文件服务器为其提供服务。此模式不须要运行Node.js服务器,HTML能够在任何地方运行。

Nuxt.js

Nuxt.js最初由Chopin兄弟,Alexandre和SébastienChopin建立,并于2016年发布。2018年1月,它更新为生产就绪的1.0版本,并获得了一个活跃且获得良好支持的社区的支持。它是一个受Next.js启发的高级框架,它构建于Vue.js生态系统之上,简化了通用或单页Vue.js应用程序的开发。

在后台,Nuxt.js使用带有vue-loader和babel-loader的webpack来捆绑,代码分割和缩小代码。使用Nuxt,js的一个好处是它提供了一个nuxt generate命令,它使用相同的代码库生成Vue应用程序的彻底静态版本。除此以外,它还为客户端和服务器端之间的开发提供了诸如异步数据,中间件,布局等功能。

NestJS

NestJS由Kamil Mysliwiec建立,于2017年发布。它是一个轻松构建高效,可靠和可扩展的Node.js服务器端应用程序的框架。它创建在TypeScript和JavaScript(ES6,ES7,ES8)的基础之上,而且受Angular的启发,由于它们都使用容许可重用性的模块/组件系统。

在后台,NestJS使用Express,而且还与各类其余库兼容,例如,Fastify。对于它的大多数抽象,它使用类并利用类和TypeScript带来的装饰器和元数据反射的好处。它带有保护,管道和拦截器等概念,并内置支持其余传输,如WebSockets和gRPC。

这些是从大量的javascript框架中挑选出来的。你固然没必要成为他们全部的专家。在开始使用框架以前,你能够检查它是否有几个问题,例如它解决的问题,更好地执行相同操做的任何其余框架,是否符合项目要求,此框架适合哪一种类型的项目等等,若是该框架对你有吸引力,可能会尝试用一个框架构建一个项目。

相关文章
相关标签/搜索