《JavaScript快速全棧開發》作者Azat Mardanov:現在是擁抱Node技術棧的最佳時機(圖靈訪談)
Azat Mardanov是一位有著12年開發經驗的資深軟體工程師,他曾涉足web、移動、軟體開發領域。他著有9本JavaScript和Node.js技術領域相關書籍,其中的Express.js Guide, Practical Node.js,以及《JavaScript快速全棧開發》在 Amazon.com專業類別中成為了#1的暢銷書。作為技術作者,其個人部落格webAppLog.com一度成為谷歌搜尋“express.js tutorial”結果中排名第一的教程站點。
Azat現在在DocuSign任高階工程師,他利用由Node.js, Express.js, Backbone.js, CoffeeScript, Jade, Stylus以及Redis組成的技術棧,帶領團隊重構了具有5000萬使用者的DocuSign。Azat還是科技聚會和程式設計馬拉松活動的常客,他曾和FashionMetric.com團隊一起在AngelHack活動上12次入圍決賽。長期以來,他都是General Assembly、Hack Reactor、pariSOMA和Marakana等機構的講師,其技術課程獲得一致好評。另外,他還開發了很多Node.js開源專案(如ExpressWorks、mongoui以及HackHall等)。
問:Io.js另起爐灶,這將對Node造成什麼影響?Io.js和Node分別具有什麼優勢?
在我看來,Joyent公司構建的Node需要加一把力了。他們需要縮短髮布週期提高速度。他們也需要吸引新的程式碼貢獻者。換句話說,為了提高整體軌跡和速度,Node必須要有所改變。
Io.js之所以被創造出來,主要是因為Joyent版Node決策過於緩慢。就目前來說,Io.js更加前沿,貢獻者更多,釋出週期也更短。Io.js已經到了版本1.6.2而Node仍然處在0.12.1版。
當然,版本號並不是成熟度的絕對指標。因為有一些專案可能只是提交了幾個小補丁就躍進了主要版本號。
問:Node.js陣營的分裂你覺得會是一件好事嗎?(早期矽谷不少成功的公司都是仙童公司分裂出去的。)
我認為分裂是一件好事。我們擁有的優秀分支越多,這些分支就會變得越好。可能這個例子不太合適,但是看看Linux的各種發行版:Debian,Fedora,openSUSE,Red Hat,Ubuntu等等。這些版本幫助傳播了Linux基礎的系統,彼此間的競爭也讓它們越變越強。
但我並不是100%贊成這個論調。我更願意集中精力在我自己的專案上,我建議大家遠離政治和鬧劇。因為只有時間能告訴我們未來會發生什麼。分裂也可能是一件壞事,如果Io.js表現平庸的話,有可能會把人們從 Node/Io.js陣營趕走。
但是,如果讓我預測的話,我認為未來是很光明的,而現在就是擁抱Node/Io.js/JavaScript技術棧的最佳時機。
問:PayPal從Java遷移到Node非常成功。你認為Node會在後端取代Java嗎?
是的。Node已經在取代Java了。
大多數Java應用都是很龐大的,所以很多公司把他們的巨型應用拆分成用Node實現的小型web服務。其他一些公司把Node用到前端層,這層的作用相當於Java或.NET的老API之間的中間人,優點是易於迭代(縮短的釋出週期),易於構建(一種語言),而且更好擴充套件(應用更快)。
我推薦大家閱讀這篇名為Monolithic Node.js的文章。
另外,企業和大公司需要的技術,其背後必須有一些聲譽好的公司和工具。StrongLoop正在幫助大公司使用Node.js/Io.js。
初創企業已經愛上了Node/Io,因為便宜,可擴充套件,而且也更容易僱到程式設計師。
問:看起來Node.js比Python的框架Twisted火很多,為什麼會這樣?對於後端來說,Node.js和Python各有什麼優缺點?
我並不是Python及其框架方面的專家。但是我從其他人那裡聽來的結果是這樣:當你編寫非阻塞的I/O程式碼時,Python的框架Twisted更加複雜。因為Python並不是從一開始就設計成非阻塞平臺的。而Node從一開始就是為非阻塞和非同步型別的程式碼和架構而設計的。
Node在NPM(Node包管理器)中的模組比Python多。Python標準庫比Node更豐富。Python對於JavaScript開發者來說更難學,同時Node對於JavaScript開發者和前端開發者來說更容易學。
Python的結構很嚴謹,空格和縮排都是語言的一部分。
問:Node.JS+NoSQL的方式衍生出了很多便捷的工具讓開發者能夠快速響應前端需求,特別是像Parse這類的工具。你覺得在整個敏捷創新的過程中,未來在哪些方面可能會有更多這樣的創新?
做預測很難,但是我認為移動開發會變得更加容易。只要看看Ionic和Swift就知道了!
在桌面端,我認為程式設計會更加聚焦在前端,比如Twitter Bootstrap,LESS這樣的框架,而且類似Webflow,WordPress這樣的服務會變得越來越流行。
後端所需要的編碼越來越少。Node/Io/JS會一直籠絡新生代後端開發者的心,同時也會佔據PHP,.NET以及Java世界的“市場”。可能未來會產生面向後端的視覺拖放框架。
在部署層,Docker的方式變得越來越流行,因為你在生產環境開發(無差異)。
在2015年之初,我寫下了一些預測。並不是所有都和科技有關。但是可能對你來說會很有趣:http://webapplog.com/my-predictions-for–2015。
問:有哪些設計決策讓JavaScript在開發和企業級應用方面一直保持長青?
使用JS,你可以直接解決問題。因為JavaScript是一種表現力很強的語言,這意味著你不用花很多時間來設定,換句話說,更小的額外負擔。與之相比,Java的架構師僅僅在創造介面、類,構建梯階、環境上就要花很多時間。總之:JavaScript更簡單,用起來也更有樂趣。
使用Node/Io時,你可以在後端和資料庫層使用JavaScript的API或語言。所以在瀏覽器和伺服器之間程式碼不需要上下文切換。如果沒有上下文切換,那麼生產力也會更高。
NPM能夠幫助企業切換得更快是因為企業意識到NPM是由很多好用的優秀模組構成的。但是,主要原因還是可擴充套件性。利用非阻塞I/O,企業應用可以用更少的資源(伺服器,記憶體,CPU)伺服更多頁面。
問:作為一種程式語言JavaScript有些“不好的部分”,你認為基於JavaScript開發出的語言CoffeeScript如何?
CoffeeScript很不錯,對於企業來說甚至更合適。ECMAScript 6標準從CoffeeScript那裡借鑑了很多。
如果你需要一個好結構,那就用CoffeeScript吧!
你可以註冊我的免費CoffeeScript線上課程:https://www.udemy.com/coffeescript。
問:JavaScript有很多框架和庫,如何才能在眾多資源中選擇,然後建立屬於自己的技術棧?
NPM(Node包管理器)發展很快,應該是你選擇過程的最好起點。另外,我創造了“Node框架”網站,在那裡我選出了最佳模組。你可以在“Node框架”上選擇加入,查詢以下簡報:
問:如今,移動網際網路已經變得越來越重要,在這種情況下前端工程師需要面臨什麼樣的機會和挑戰?
最開始的挑戰在於平臺分隔,開發者們試圖通過HTML5解決問題。但是HTML5的問題在於,相比於原生平臺,HTML5的工具有些簡陋。
現在,像Ionic這樣的框架讓你可以使用前端技術以及Angular和Backbone框架,同時你也可以利用一些原生的功能。我認為這是一個好的趨勢。(Node和JS不僅被用在桌面開發中,也被用在機器人和嵌入式系統中。)
問:在讀你的書之前,你建議讀者先了解什麼知識?在讀完你的書後你建議他們讀些什麼或做些什麼?
《JavaScript快速全棧開發》是一本Node棧的入門書,在讀完之後我建議閱讀Practical Node.js。這本書會為你完全綜述整個開發過程的全貌:模板引擎、部署、程式碼組織、安全、資料庫、等等。
更多精彩,加入圖靈訪談微信!
相關文章
- 快速創業之全棧技術棧創業全棧
- 全棧 JavaScript 開發圖景全棧JavaScript
- Meteor:全棧JavaScript開發框架的先驅全棧JavaScript框架
- 圖靈訪談系列之九:CNode社群談Node.js技術及生態圖靈Node.js
- 全棧開發者路線圖全棧
- Web前端技術分享:全棧工程師常用的開發工具Web前端全棧工程師
- 全棧工程師技術學習路線圖全棧工程師
- MERN全棧開發 使用Mongo Express React和Node全棧GoExpressReact
- 小程式的全棧開發新時代全棧
- 物聯網開發技術棧
- JSer全棧化技術棧推薦(一)——原生移動端是天堂還是泥潭JS全棧
- 為什麼 Node 是小菜前端團隊的核心技術棧前端
- FEer到全棧開發全棧
- 聊聊真實的 Android TV 開發技術棧Android
- 後端開發者需要掌握的技術棧後端
- 影片結構化技術棧全解析
- .NET 技術棧 思維導圖
- 《Node.js+Vue.js+MangoDB全棧開發實戰》已出版Node.jsVue.jsGo全棧
- 前端全棧必會node框架koa。。。前端全棧框架
- “全棧開發者”是一種心態 - Maciej Walkowiak全棧Mac
- 【引向】全棧開發工程師之路全棧工程師
- 全棧開發自學路線全棧
- Web全棧開發有前途嗎?Web全棧
- Python全棧指什麼?全棧工程師的意義是什麼?Python全棧工程師
- EggBorn.js:一款頂級Javascript全棧開發框架JSJavaScript全棧框架
- 剖析公司技術棧
- Spring Cloud微服務-全棧技術與案例解析SpringCloud微服務全棧
- wemall全棧移動商城技術架構分享全棧架構
- 數棧技術分享:開源·數棧-擴充套件FlinkSQL實現流與維表的join套件SQL
- WEB實戰:使用MERN技術棧開發專案Web
- 你所需要擁抱的TypeScript [技術貼]TypeScript
- node全棧-簡潔的個人輕部落格全棧
- 全全全棧測試開發學習路線全棧
- java生態下的後端開發都有哪些技術棧?Java後端
- JavaScript棧JavaScript
- Spring Boot系列之一:如何快速熟悉Spring技術棧Spring Boot
- Django + DebugToolbar構建全棧WEB開發Django全棧Web
- 【杭州】【兼職】全棧開發工程師全棧工程師
- Swift 全棧開發之路 (一)protoc && SwiftPMSwift全棧FTP