《JavaScript快速全棧開發》作者Azat Mardanov:現在是擁抱Node技術棧的最佳時機(圖靈訪談)
原文 http://www.ituring.com.cn/article/195742
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就知道了!
在桌面端,我認為編程會更加聚焦在前端,比如推ter 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 。這本書會為你完全綜述整個開發過程的全貌:模板引擎、部署、代碼組織、安全、數據庫、等等。