摘要:它不僅從前端移動到后端,我們也開始看到它用于機器學習和增強現實,簡稱。由于其高使用率,年的現狀調查將其稱為采用的安全技術。機器學習框架在年的開發者峰會上,宣布了他們的機器學習框架的實現,稱為。更高級別的用于在之上構建機器學習模型。
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框架中挑選出來的。你當然不必成為他們所有的專家。在開始使用框架之前,你可以檢查它是否有幾個問題,例如它解決的問題,更好地執行相同操作的任何其他框架,是否符合項目要求,此框架適合哪種類型的項目等等,如果該框架對你有吸引力,可能會嘗試用一個框架構建一個項目。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103230.html
摘要:但是,有一件事是肯定的年對全棧開發者的需求量很大。有一些方法可以解決這個問題,例如模式,或者你可以這么想,其實谷歌機器人在抓取單頁應用程序時沒有那么糟糕。谷歌正在這方面努力推進,但不要指望在年會看到任何突破。 對于什么是全棧開發者并沒有一個明確的定義。但是,有一件事是肯定的:2019 年對全棧開發者的需求量很大。在本文中,我將向你概述一些趨勢,你可以嘗試根據這些趨勢來確定你可能要投入的...
摘要:但是,有一件事是肯定的年對全棧開發者的需求量很大。有一些方法可以解決這個問題,例如模式,或者你可以這么想,其實谷歌機器人在抓取單頁應用程序時沒有那么糟糕。谷歌正在這方面努力推進,但不要指望在年會看到任何突破。 對于什么是全棧開發者并沒有一個明確的定義。但是,有一件事是肯定的:2019 年對全棧開發者的需求量很大。在本文中,我將向你概述一些趨勢,你可以嘗試根據這些趨勢來確定你可能要投入的...
摘要:但是,有一件事是肯定的年對全棧開發者的需求量很大。有一些方法可以解決這個問題,例如模式,或者你可以這么想,其實谷歌機器人在抓取單頁應用程序時沒有那么糟糕。谷歌正在這方面努力推進,但不要指望在年會看到任何突破。 對于什么是全棧開發者并沒有一個明確的定義。但是,有一件事是肯定的:2019 年對全棧開發者的需求量很大。在本文中,我將向你概述一些趨勢,你可以嘗試根據這些趨勢來確定你可能要投入的...
摘要:不過,根據伯克利大學的這篇文章來看,擁有豐富的開源庫,是開發者在選擇一門開發語言時,最重要的因素。擁有超過個可用的開源庫,是目前世界上最大的開源庫集合。月份,我們發布了。這和年的情況是相反的。在的調查中,超過的受訪者表示他們正在使用。 showImg(https://segmentfault.com/img/bVblvke?w=693&h=300); 原文標題:This year in...
摘要:為什么以前個人團隊的工作,現在你一個人操作就做了,你覺得工資給你翻三倍過分嗎年,第九個需要布局的技術物聯網將推進了服務器端,而不是桎梏與瀏覽器。 2010年的你,如果能學會Android開發,現在的你,薪資不會低于年薪50萬…… 2015年的你,如果能熟練使用react,現在的你,薪資不會低于月薪30K…… 看到這兩個數據,也許有人會反駁:技術剛出來,沒人敢用,而且隨便一門技術,用上三...
閱讀 3496·2021-10-18 13:30
閱讀 2951·2021-10-09 09:44
閱讀 1969·2019-08-30 11:26
閱讀 2299·2019-08-29 13:17
閱讀 765·2019-08-29 12:17
閱讀 2252·2019-08-26 18:42
閱讀 478·2019-08-26 13:24
閱讀 2959·2019-08-26 11:39