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

28次阅读

共计 6704 个字符,预计需要花费 17 分钟才能阅读完成。

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

来源 | 愿码 (ChainDesk.CN) 内容编辑
愿码 Slogan | 连接每个程序员的故事
网站 | http://chaindesk.cn

愿码愿景 | 打造全学科 IT 系统免费课程,助力小白用户、初级工程师 0 成本免费系统学习、低成本进阶,帮助 BAT 一线资深工程师成长并利用自身优势创造睡后收入。
官方公众号 | 愿码 | 愿码服务号 | 区块链部落
免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码

本文阅读时长:14min
根据 Stack Overflow 的开发人员调查,JavaScript 是最广泛使用的编程语言之一。由于其不断发展的框架生态系统,可以为复杂和具有挑战性的问题找到最佳解决方案。尽管 JavaScript 的大部分生命周期都与 Web 开发有关,但近年来,它的使用似乎正在扩大。它不仅从前端移动到后端,我们也开始看到它用于机器学习 (Machine Learning, ML) 和增强现实(Augmented Reality,简称 AR)。
JavaScript 的发展是由框架驱动的。尽管有一些在引领潮流,但还有许多其他较小的工具在 2019 年值得你关注。
JavaScript Web 开发框架

React
React 最初由 Facebook 于 2011 年开发,2013 年开源。从那时起,它已成为构建用户界面的最流行的 JavaScript 库之一。根据 NPM 的调查,尽管 React 在 2018 年的增长放缓,但它将成为 2019 年的主导框架。由于其高使用率,2018 年的 JavaScript 现状调查将其称为“采用的安全技术”。
在 2018 年,React 团队发布了从 16.3 到 16.7 的版本,并进行了一些重大更新。这些更新包括新的生命周期方法,Context API,用于代码拆分的悬念,React Profiler,Create React App 2.0 等。该团队已经制定了 2019 年的计划,很快将发布最期待的功能之一 Hooks。它允许开发人员在不使用 JavaScript 类的情况下访问状态等功能。它旨在通过允许开发人员重用有状态逻辑而不对组件层次结构进行任何更改来简化 React 组件的代码。其他功能将包括并发模式,以允许组件树呈现而不阻塞主线程,数据获取的悬念等等。
Vue
Vue 是由 Evan You 在为许多项目使用 AngularJS 为 Google 工作后创建的。它在 2014 年首次发布。分享他创建 Vue 的动机,Evan 说:“我想,如果我能够提取我真正喜欢 Angular 的部分并构建一些非常轻量级的东西会怎样。”Vue 继续在 JavaScript 开发人员中得到很好的采用,我怀疑这种趋势很快就会停止。根据 NPM 调查,一些开发人员更喜欢 Vue 而不是 React,因为他们觉得“在保持可扩展性的同时更容易上手”。
Vue 是一个允许开发人员构建交互式 Web 界面的库。它提供类似于 React 的数据反应组件,具有简单灵活的 API。与 React 或 Angular 不同,Vue 的一个好处是它产生的干净的 HTML 输出。其他 JavaScript 库往往会在代码中留下散布着额外属性的 HTML,而 Vue 会删除它们以产生干净的语义输出。它通过官方维护的支持库和包为复杂应用程序提供高级功能,如路由,状态管理和构建工具。
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 技术,如 HTML5、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 框架中挑选出来的。你当然不必成为他们所有的专家。在开始使用框架之前,你可以检查它是否有几个问题,例如它解决的问题,更好地执行相同操作的任何其他框架,是否符合项目要求,此框架适合哪种类型的项目等等,如果该框架对你有吸引力,可能会尝试用一个框架构建一个项目。

正文完
 0