00:01
经过前面一系列的配置,我们终于可以在本地开发调试了,但是使用纯原生的note JS开发效率是非常低的,如果能在云函数中引入一款我们熟悉的后端开发框架,那么我们的开发才算坐上了高铁。这里我们选择一款大众比较熟悉的框架express。如何将express结合到云函数当中呢?先回到我们的代码当中,注意我们现在呢是要将express与我们的云函数相结合,而云函数呢就是我们的node杠网APP,所以呢,我们要在终端中打开当前node港网APP这个路径,那在这个函数当中呢,我们先对express呢进行一个安装,我们先使用MP。
01:02
高,然后呢,安装我们的express,这个过程呢是非常简单的,那我这里呢也就不再过多的去讲解了,那代码呢,也是使用我们传统的方式来进行开发,那一般情况下呢,首先我们在这里呢,会去创建一个APP,点2GS,这个APP呢,主要是接收我们的请求以及做路由分发的,那这里呢,我们就把一些基础的代码呢先给它写好,比如这里呢,我们肯定是先引入express啊,这里呢,我们就使用require的方式来将我们的express引用进来,引用进来之后呢,我们先调用这个express来去拿到我们的express应用好,那拿到之后呢,我们做一个use的监听,那use的监听呢,我们这里也简单一点,我们就使用一个users这样的一个监听的路由,然后呢,如果来了请求呢,按照传统的方式,我们还是要去接收一下。
02:02
AQ和res的请求以及响应对象,那接过来之后呢,我也不做其他的处理,我就直接使用send的方式返回一个users拉钩,OK,那么最后呢,我们再将整个的这个音呢做出啊,做一个导出就可以了,好,那使用mo.x pose,然后呢,直接登录这个AV就可以了,好,那保存完成之后呢,我们还需要创建一个启动文件,那这个启动文件的话呢,我们就给它起名叫3w.JS。那在3WJS这里呢,我们肯定还是使用count,然后呢将我们的APP进行引入啊,依然使用require的方式引入当前的APP,那引入进来之后呢,我们使用app.listen的方式来去监听一个端口,那这个端口呢,我们就选择3000就可以了,那这里也,那这里呢也需要注意就是如果你现在还开启了你的s cfcir那个命令,那一定要注意先把它停掉好,那这里呢,我们如果启动成功了,同样的呢,是需要给我们的命令行一个提示的啊,方便我们进行测试,那一样的,我们使用consoular log去打印我们的HTTP冒号上去了,127.0.0.1,然后冒号写一个3000,好,那这些设置好之后呢,我们就可以在本地对我们的这个服务器呢,做一个启动来测试。
03:41
好了,那现在呢,我们使用node command的方式来启动当前的3w.GS好,我们来进行一个测试,那么现在呢,很明显它告诉我已经启动成功了,然后呢,我们摁住CTRL去点它,好呢,浏览器呢已经可以拿到这个请求了,然后呢,我们后面呢,在使用我们的users这样的方式来去发送这个请求,那正常的浏览器呢,也能够接到我们的users发勾这样的一个响应,但是呢,在云函数中呢,它有一个最大的问题,这个问题呢,就是我们知道我们的代码的入口呢,是云函数的入口文件,而在我们的云环境中呢,是有HTTP触发器的,是不需要我们创建服务器的,而刚刚呢,我们在使用express时呢,是必须要自己创建一个服务器的启动文件的,那么这就造成了一个矛盾。
04:41
就是我们在本地使用express,是呢,是用户先来请求到我们的express创建好的这个HTTP服务器这里,然后呢,我们的express再去调用我们写好的路由规则,处理我们的请求,然后做出响应,但是在我们的云服务器当中呢,就变成了这样的方式,是用户要去请求云环境的HTTP触发器,那由触发器呢,再去调用我们的cloud function,也就是我们的云函数,云函数里面才是我们接收到的请求以及做出的相应的代码,那也就是说呢,中间这一层呢,是需要将我们的HTP触发器和我们的函数做一个入口的,而本地启动的服务器呢,在云函数当中是不需要的,那我们如何去解决这样的一个问题?
05:41
有一款开源的工具,专门用作对框架代码的包装,工具的名字叫做serverla-HTTP,那通过它的描述呢,我们知道这款工具呢,是专门在serviceless环宁下包装接口的模块,不需要服务器,也不需要端口的监听,那使用方式呢,和传统的工具是一样的,我们先通过n PM in道进行安装,那安装上之后呢,我们就按照它的提示来去完成相对应的代码就可以了。这里呢也给了我们一个小例,我们来看一下,首先呢,我们引入这款工具得到serverrs,然后再引入我们的框架代码,并且得到相对应的应用,再接下来呢,我们能看到在我们的入口函数这里呢,是调用了server,并将我们的框架应用传入进去,那这是其中的一种使用方式。
06:41
那除此之外,如果你想将入口函数传入的参数也传入到我们的框架应用当中,那你可以使用这样的方式,先去调用service,将我们的应用呢传入,那在入口函数里面呢,再调用我们的handler,将入口函数中的两个对象再传入,然后最后呢得到的结果再返回就可以了,虽然这个代码呢和我们现在用的代码呢有些不一样,在案例当中呢,他用的是cover这个框架,而我们使用的是express,那其次呢,在案例当中,它给我们的这个入口函数的名字呢,叫做handle德ler,而我们的入函数的名字叫做闷,那这里呢,我们只需要做简单的更改就可以了,回到我们的代码当中,将本地的这个服务器呢先停掉,然后我们对这个工具呢,先进行一个安装。
07:41
它的名字呢,叫做server-HTTP,好,那安装成功之后呢,再回到我们的函数入口文件,这里我们将前面的注释先删掉,按照我们刚刚所看到的代码呢,进行一个简单的修改,那安装成功之后,首先第一件事情我们肯定是要先引入好,我们先用serverless给它接收一下,那这里呢,一样我们使用require的方式去引入我们这个sola港HTTP,那引入进来之后呢,我们在案例中看到的是他直接去new了Co,那这里呢,我们因为已经有了这个express的调用,并且我们得到了框架的应用,所以这里呢,我们就可以直接使用ABAPP,将我们的APP的文件呢引入进来,好,那引入进来之后呢。
08:41
我们同样去调用这个sola,将我们的APP呢传进去,那传进去之后呢,我们要有一个返回值去给它接收一下,那这里呢,我们就起一个名字叫handle德ler,好,那有了这个名字之后呢,哎,我们这里啊是在框架当中,我需要接收到入口函数的参数的,那么因此呢,我这里就使用它的给我提供的第二种方式,那我呢在这里使用这个handler,然后呢,将我们的event与我们的context给它都传进去啊,当然这个默认这里呢好像没有这个contest,不过没关系,那我们呢,直接给它加上就可以了,好,那最后呢,我们直接将这个值呢进行返回,当然案例中呢,使用的是这个a think和A的方式,那这里呢也一样,我们用一个变量给它接收一下,先使用cost,然后呢,我们就写一个。
09:41
Re,等于,那我们把a wait呢再加上好,我们保存一下,那最后呢,我们在这里就直接把之前的字符串给它删掉,那返回的就是is,那代码写好之后呢,我们回到命令行,还是直接去执行TCB这个命令,然后呢,对我们的代码进行一个部署,好我们稍等一会儿,然后呢,看看它能不能部署成功,诶那此时呢,他告诉我是新创建的啊,那这是不对的啊,那在执行这个TCP命令去部署时呢,一定要注意不能在我们的这个云函数的目录当中了,这需要回到我们的项目的目录当中啊,就是拟好这个目录当中,然后呢,再去执行这个TCB,好,那此时呢,它的这个打包以及上传呢就是正常的。
10:41
那回到我们的浏览器当中,我们在云函数这里呢,来去看一下,好,那打开我们的noe-AV,那找到我们的函数代码这里,那么此时呢,诶,我们就能够看到是我们写过的关于我们的express框架之后的这些代码了,当然在应用处理这里呢,也并没有什么不一样,那现在呢,我们也可以来去访问一下试试,好,回到我们的访问服务这里,那一样的我们去点击,然后呢去访问这个APP,那此时呢,这里给我们返回的是c get,然后我们的接收的请求呢,是user这个路由,好,那现在呢就是user拉钩,那回到我们的代码当中呢,我们也再一次的去做一个测试,来试一试,那这里呢,就写上一个and X press,好,我们保存一下之后。
11:41
再一次的去TCP,然后呢,进行这个部署,OK,那部署成功之后,我们回到浏览器当中,OK,那现在呢,就看到了and express就已经成功了,而在本地这里呢,也是一样,我们还是回到我们的node APP这里,那同样的我们在本地环境下去执行我们的3w.JS那同样这里呢,去发送这个请求,然后呢,我们后面依然跟上这个users,那一样能看到这个相关内容,那么测试我们就可以在线下进行开发测试,测试没有问题之后呢,我们就回到命令行的项目目录当中来进行TCP的部署。
我来说两句