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,即可看到输出:

猜你喜欢

转载自blog.csdn.net/DaChengXiaoShi/article/details/89876624