web在過去20年時間裡改變得相當快。越來越多的邏輯從伺服器端移動到了用戶端。不但需要在用戶端編寫更複雜的JavaScript代碼,而且最近幾年還發生了一些奇特的事情:JavaScript正在轉移到伺服器,而web技術則往案頭轉移。這已經不是什麼新鮮事了,但20年前誰會想到這種情況?
web改變了,因而我的技術堆棧也變了。貌似我的堆棧變回到了roots。 20年前,我從HTML和JavaScript開始,再到使用VBScript的經典ASP。 2001年,我開始陶醉於ASP.NET和VB.NET,並用到了產品中,直到2006年底才不再這麼幹。2007年年底,我開始使用C#編寫ASP.NET。HTML和JavaScript仍然參與其中,但多多少少被封裝在第三方控制項中,並且jQuery當時是JavaScript的別名。JavaScript的一切都是jQuery。ASP.NET WebForms感覺巨大又不是很靈活,但它能有效工作。後來——2010年——我用Silverlight、WinForms和WPF做了很多東西。
ASP.NET MVC出現了,web這個東西開始再次比ASP.NET WebForms感受更自然點。從一個ASP.NET開發人員的角度來看,web開始變得更好:更加乾淨、靈活、輕便和自然。
但也出現了一些新的東西。一些來自於ASP.NET世界之外的東西。強大的JavaScript庫,如KnockOut、Backbone,以及後來的Angular和React。第一個單頁應用程式架構(對不起,我不想提蹩腳的ASP.NET AJAX…)出現了,UI邏輯從伺服器轉移到了用戶端。(好吧,我們確實在2005年搞回了一個很酷的SPA,但我們沒有想過如何用它建立一個架構。)
NodeJS通過在伺服器上使用JavaScript再次改變了世界。你只需要兩個不同的語言(HTML和JavaScript),就可以來建立很酷的web應用。我不怎麼對NodeJS感興趣,除了在後端使用它,因為一些工具基於NodeJS。也許這是一個錯誤,誰知道呢; )
現在我們有了ASP.NET Core,這感覺比傳統的ASP.NET MVC更自然得多。所謂的自然在這種情況下,意味著和編寫傳統ASP的感覺幾乎相同。這也就是說使用無狀態的web工作,而不是試圖修複它。使用Request和Response比傳統的ASP.NET MVC工作起來更直接,比ASP.NET WebForms甚至就更直接得多。自然並不意味著你必須編寫和傳統Asp同樣非結構化的廢話。 ; )
由於我們已經有了非常酷的用戶端JavaScript架構。和簡化了的、簡約的伺服器端架構,伺服器部分就被減少到僅僅用於在REST服務上提供靜態檔案和資料。
正是這個時候,深入瞭解TypeScript變得有了意義。但是到這個時間點為止,它對我還沒有意義。我用JavaScript編寫代碼大概有20年時間,但我從來沒有在單個項目中寫過這麼多的JavaScript代碼。之後,在過去幾年時間裡我開始使用AngularJS。Angular2是應該好好研究TypeScript的一個原因,因為現在的Angular2完全是用TypeScript寫的。
幾個星期前,我啟動了我第一個真正的NodeJS項目:一個使用NodeJS來為使用者提供高度靈活指令碼運行時的傳統型應用程式。NodeJS提供功能和UI給使用者,所有都是用TypeScript寫的,而不是普通的JavaScript。為什嗎?因為TypeScript有很多意想不到的好處:
這就是為什麼TypeScript對我來說是個大幫手。當然類型化的語言在很多情況下也是有用的,但是——使用JS工作了20年——我喜歡隱式的類型JavaScript語言的靈活性,並且我對它很熟。這意味著,從我的角度來看,有關TypeScript的優點是,我仍然能用TypeScript編寫隱式的類型代碼,並利用到JavaScript的靈活性。這就是為什麼我說“仍然可以編寫JavaScript”的原因。
Web技術改變了,我的技術堆棧也改變了,工具也是。所有這些東西都變得更為輕巧,連同工具一起。控制台回來了,IDE變回為它們的root:只不過是一些有著類似文法高亮和智能感知這些作用的文字編輯器。目前,我更喜歡根據我工作的項目類型使用有著“瑞士軍刀”之稱的Visual Studio Code或Adobe Brackets。兩者都開始變得非常快速,包括一些不錯的功能。
使用輕便的IDE令人愉悅。一切都很快,因為通過我需要開發的app可以使用機器的資源,而不必通過我需要使用來開發app的IDE。這使得發展速度快了很多。
現今啟動一個IDE意味著啟動cmder(Windows上我最喜愛的控制台),改變專案檔夾,啟動控制台命令,從而查看typescript檔案,儲存後編譯。我可以啟動另一個控制台來使用如NPM、gulp、typings、dotnet CLI、NodeJS等工具;以及啟動我最喜歡的輕量級編輯器來編寫代碼! : )
原文:How Web Development Changed for Me Over the Last 20 Years