Web後臺服務開發——堅持大前端路線,明智地設計路由

文章轉自 極客論壇

首先,何爲“大前端”?

    相對於“大前端”,一定有“小前端”一詞。在若干年以前,前端的工作大多數只是用html、css寫PC的網頁,再多些就是用javascript寫一點交互效果、寫一點ajax。前端工作中更多的是和各個廠商的瀏覽器搏鬥,比如IE6,所有資深前端的不散夢魘。

    後來,webkit內核應用越來越廣泛。PC端,chrome幾乎一統天下;Electron使前端技術可以用於開發桌面應用程序,設置可以跨Windows、Linux、Mac三系統;Ionic等混合app開發技術也是以webkit爲基礎。自此,前端可以開發網頁、桌面應用、APP,技術覆蓋範圍大幅增加。這就是“大前端”的來歷。

    在大前端的路線下,後臺服務很可能要給網頁、微信小程序、手機APP、甚至PC應用提供服務。網頁開發測試完畢發佈上線,用戶打開網頁看到的就是最新的(微信小程序類似);然而,APP、PC應用是不能強制用戶升級的,存在一箇舊版本無法全部更新的問題。如果後臺的接口全量更新,則很可能舊版本APP就無法使用了。這時,糟糕的用戶體驗會把用戶推向競品。

    於是,一個問題擺在我們面前,“怎麼辦?”。辦法很簡單——接口分版本。網頁一直使用最新版本的接口;舊版接口保留最近的若干版本。下面我們就開始接着上一節展開。

    在前面的內容裏,我們用nest cli創建了項目,看到了Hello World。這時目錄結構是這樣的:

src目錄是代碼的主要位置。現在我們創建一個新的Controller,在Controller裏面編寫路由。而路由,對應了我們說的接口。

在終端執行以下命令,意思是創建一個名稱爲“v1”的controller

nest generate controller v1

這時代碼的目錄結構是這樣的,我們將在v1.controller.ts中,實現各種路由。

 

    這裏要說明的是,controller中不應該實現複雜的邏輯,只應該編寫簡單的接口代碼。複雜邏輯如何分析、設計和實現是面向對象分析與設計的內容,本教程不做展開。後續其他教程會推出相關內容。

    打開文件v1.controller.ts,我們看到其內容

    現在我們在其中實現一個路由,在瀏覽器訪問http://localhost:3000/v1/hello時,返回'Hello Controller!'。代碼如下

@Controller('v1')是類V1Controller的裝飾器,表示V1Controller是一個Controller,URL前綴是/v1。v1是開篇所述的版本號,以後的版本可以用v2、v3等等。

@Get('/hello')是方法sayHello的裝飾器,表示sayHello是一個路由,用HTTP GET方法訪問,前綴是/hello。由於/hello在v1控制器內,所以完整的路徑是/v1/hello。

現在,在終端執行 npm run start,打開瀏覽器,訪問http://localhost:3000/v1/hello,即可看到輸出:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章