rds基于什么开发_为什么不学基于TypeScript的Node.js服务端开发?
為什么不學(xué)?學(xué)不動(dòng)了嗎?!別躺下啊,我扶你起來(lái)!
我們?cè)缇椭?#xff0c;如今的JavaScript已經(jīng)不再是當(dāng)初那個(gè)在瀏覽器網(wǎng)頁(yè)中寫寫簡(jiǎn)單的表單驗(yàn)證、沒(méi)事彈個(gè)alert框嚇嚇人的龍?zhí)捉巧恕=柚趘8引擎的Node.js Runtime以及其他一些JavaScript Runtime的平臺(tái)能力,JavaScript已經(jīng)成長(zhǎng)為在桌面端、移動(dòng)端、服務(wù)端、嵌入端全面開花的妖艷明星。
使用JavaScript做服務(wù)端開發(fā),是我一直非常喜歡的一件事情。記得第一次使用JavaScript開發(fā)服務(wù)端程序,還是在我讀大學(xué)的時(shí)候,那時(shí)學(xué)習(xí)編寫古老的ASP頁(yè)面程序,默認(rèn)是用VBScript編寫的,可是我不太喜歡VBScript的語(yǔ)法,我就去看微軟的MSDN文檔,發(fā)現(xiàn)居然也可以用JScript(微軟開發(fā)的一種ECMAScript規(guī)范的實(shí)現(xiàn))來(lái)編寫ASP,非常興奮,果斷連夜把之前所有的VBScript代碼用JScript替換了一遍。
到后來(lái)參加工作,JavaScript也漸漸進(jìn)入Ajax流行、封裝工具庫(kù)橫行的時(shí)代。我們使用著各種JS工具庫(kù)(Prototype,jQuery,Mootools,YUI,Dojo等等等等),前端的開發(fā)工作開始慢慢出現(xiàn)了獨(dú)立化、專業(yè)化的趨勢(shì),一些軟件工程師們(不分前后端,寫代碼的都叫軟件工程師)以及美工師傅們(對(duì),美工!那時(shí)候的美工其實(shí)很能干的,既做平面設(shè)計(jì),也做HTML、JS、CSS的編寫)也開始有點(diǎn)跟不上前端的發(fā)展速度了,開始各自做各自擅長(zhǎng)范圍內(nèi)的事情了,即所謂的縱向發(fā)展。而我也是Java和JavaScript都在做,但是用JavaScript來(lái)統(tǒng)一做前后端的想法一直存在,并一直關(guān)注著這塊的動(dòng)向。沒(méi)過(guò)多久,還真的出現(xiàn)了一個(gè)!這就是開發(fā)了當(dāng)時(shí)非常流行的前端開發(fā)工具Aptana Studio的公司所開發(fā)的服務(wù)端框架Apatana Jaxer。用這個(gè)框架寫出來(lái)的代碼跟當(dāng)初的ASP還有點(diǎn)像呢:
<script runat="server">??var?rs?=?Jaxer.DB.execute('SELECT * FROM products');??var price = rs.rows[0].price;script>我還用Jaxer寫了一些小項(xiàng)目呢,用起來(lái)還是非常不錯(cuò)的。只可惜,Jaxer在開發(fā)圈子里還是沒(méi)有真正火起來(lái)。
后來(lái),Node.js出現(xiàn)了。由于它基于v8所帶來(lái)的性能,模塊化系統(tǒng),比較豐富的原生API以及原生擴(kuò)展能力,以及npm包管理,讓整個(gè)圍繞它形成的生態(tài)體系真正的火了起來(lái)。而Node.js憑借它異步IO的優(yōu)異性能、快速開發(fā)部署能力、前后端技術(shù)棧統(tǒng)一、以及最近流行的SSR風(fēng)潮,使得它在服務(wù)端開發(fā)領(lǐng)域真正的占有了一席之地。并且,Node.js的異步思想也帶動(dòng)了其他各種語(yǔ)言下服務(wù)端框架的進(jìn)步與創(chuàng)新,比如Java的Vert.x,WebFlux,Scala的AKA等等。
隨著JavaScript在各種前后端項(xiàng)目中的使用量越來(lái)越大,開發(fā)團(tuán)隊(duì)間需要的協(xié)作越來(lái)越多,JavaScript本來(lái)的動(dòng)態(tài)性、靈活性由一個(gè)人見人愛的小可愛,變成了一只吃人的大老虎,不僅四處撕咬著缺乏足夠經(jīng)驗(yàn)的開發(fā)者,偶爾也會(huì)給高級(jí)開發(fā)者挖個(gè)坑埋個(gè)雷。這種時(shí)候,做過(guò)靜態(tài)語(yǔ)言開發(fā)的開發(fā)者們會(huì)想念起曾經(jīng)用過(guò)的那些C/C++、Java、C#,雖然靜態(tài)類型檢查在開發(fā)過(guò)程中帶來(lái)了一些的額外工作量,但也真實(shí)的帶來(lái)了開發(fā)質(zhì)量的提高,以及更好的開發(fā)工具支持。
新事物總是在遇到問(wèn)題和矛盾當(dāng)中產(chǎn)生,一些擁有類型檢查特性的工具或可轉(zhuǎn)譯語(yǔ)言誕生了,比如Flow、Dart、還有TypeScript。尤其是TypeScript,憑借著其高富帥背景(MicroSoft)以及自身的優(yōu)質(zhì)特性,經(jīng)過(guò)多年的發(fā)展,社區(qū)越來(lái)越大,應(yīng)用越來(lái)越廣,著實(shí)是受人歡迎,它已經(jīng)成為了JavaScript生態(tài)圈后續(xù)發(fā)展的一種明顯趨勢(shì)。各種前端框架和Node.js后端框架,都競(jìng)相加入對(duì)TypeScript的支持,看著不用TypeScript都對(duì)不住他們的熱情啊!
說(shuō)來(lái),我第一次使用TypeScript做實(shí)際的項(xiàng)目,還是3、4年前的時(shí)候。因?yàn)槟莻€(gè)時(shí)候一直在用Angular 1.x作為主要的前端框架,后面Angular發(fā)布了全新的Angular 2版本,所以我們團(tuán)隊(duì)就順其自然的開始研究并實(shí)踐Angular 2。我們都知道,Angular 2完全使用TypeScript來(lái)編寫,整體編程理念設(shè)計(jì)上來(lái)說(shuō)也非常的OOP,且內(nèi)置了RxJS作為響應(yīng)式編程的基礎(chǔ),以及引入了Java界非常引以為傲的依賴注入機(jī)制(IoC),在當(dāng)時(shí)的前端界產(chǎn)生了很大的爭(zhēng)議。但是從現(xiàn)在來(lái)看,它還是非常有前瞻性的和先進(jìn)性的。
該來(lái)的它還是會(huì)來(lái),不該來(lái)的它來(lái)了也會(huì)走。
Angular 2+的設(shè)計(jì)理念繼而對(duì)Node.js服務(wù)端框架的設(shè)計(jì)也產(chǎn)生了很大的影響,NestJS算是把Angular的衣缽都成套搶過(guò)去的一位了。
NestJS這個(gè)框架算是到目前為止,對(duì)TypeScript支持的最好的一個(gè)Node.js服務(wù)端框架了,它的上層框架實(shí)現(xiàn)了一套通用的框架機(jī)制如:模塊、自定義裝飾器、依賴注入、控制器、過(guò)濾器、管道、守衛(wèi)、中間件和攔截器等功能;在框架下層,通過(guò)適配器適配到其他一些符合其理念的基礎(chǔ)HTTP框架如Express、Fastify等。NestJS的這套設(shè)計(jì)理念使其不光可以作為Web框架使用,也可以用于非Web類程序的開發(fā)。
先瞄一瞄用NestJS寫的一段代碼吧:
import?{?Controller,?Get?}?from?'@nestjs/common';@Controller('products')export?class?ProductsController?{ @Get() findAll(): string[] {????return?['iPhone',?'iMac',?'iPod'];??}??}上面這段代碼就是一個(gè)簡(jiǎn)單的控制器代碼,它通過(guò)使用2個(gè)裝飾器 @Controller() 和裝飾 @Get()?,將一個(gè)普通的class類,變成了一個(gè)可以提供Rest API的后端控制器服務(wù)。假如這段代碼運(yùn)行起來(lái),它可以被通過(guò)這樣的URL進(jìn)行訪問(wèn):http://use-your-domain/products
是不是挺有意思?今天我就這么簡(jiǎn)單的扯一通,我準(zhǔn)備在后面的文章或視頻教程中,一點(diǎn)一點(diǎn)和大家深入探討TypeScript和NestJS的各種功能特性。不光如此,由于要學(xué)習(xí)和掌握服務(wù)端開發(fā)的話,需要涉及的內(nèi)容還是非常多的,所以我準(zhǔn)備再加入一些后端開發(fā)過(guò)程中會(huì)經(jīng)常用到的東西,比如MySQL、Redis、MongoDB、RabbitMQ;如何在前后端的應(yīng)用開發(fā)中使用GraphQL;以及如何使用Docker進(jìn)行服務(wù)部署等相關(guān)的內(nèi)容。
希望你搬好小凳子,坐等我更新吧!
總結(jié)
以上是生活随笔為你收集整理的rds基于什么开发_为什么不学基于TypeScript的Node.js服务端开发?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c# 访问hbase_大数据技术 win
- 下一篇: 单片机 原子性操作_一款深藏功与名的国产