《JavaScript快速全棧開發》作者Azat Mardanov:現在是擁抱Node技術棧的最佳時機(圖靈訪談)

盼盼姐發表於2015-03-31

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等)。

《JavaScript快速全棧開發》作者Azat Mardanov:現在是擁抱Node技術棧的最佳時機(圖靈訪談)

問: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。這本書會為你完全綜述整個開發過程的全貌:模板引擎、部署、程式碼組織、安全、資料庫、等等。


更多精彩,加入圖靈訪談微信!

相關文章