00:00
大家好,这节课我们来看一下express express是流行的基于note JS的web开发框架。啊,可以快速的搭建一个完整的网站功能啊,注意它是外部开发框架,那一盘的上手非常简单,哎,首先我们创建一个目录,那我这个用编辑器给大家创建一个目录啊,文档是用笔记创建的,来创建一个目录啊,我们就叫零九好。啊,接着啊,然后在我们这个目录里面新建一个pack Jason啊,实际际上我们是通过这种文件的方式去安装,你也可以直接去啊n PM install一个price,直接去通过命令安装也可以啊,我们就按照这个文件来安装。新建一个文件。他给得杰森,然后把这个哎给粘贴上。那接下来呢,我们进入到这个目录啊,就是我们的命令行进入到这个零九这个目录下,现在是在note gs08下面啊,所以我们要CD点点杠上一级啊,CD上一级呢,就回到了度的颜色,我们在CD到哎当前目录下的零九啊,就来到了这个零九这个目录啊,那在这个里面呢,执行NPM啊install我们就可以去啊。
01:19
按照啊,我们这里面所依赖的这个模块去进行安装。哎,看可以看到这里只依赖了一个express对吧,所以我们呃不在一开始不去创建这个pack,也是可以直接去使用NPM去安装这个组件,它会自己给我们生成啊这个排位点啊。那接下来我们来执行,开始安装。好,先让他装着,我们继续看文档啊。在这个里面啊,我们定义了项目的名称描述版本等等啊,并且指明了我们要4.0以上版本的express,然后就来执行这个命令安装啊,执行这个命令安装以后啊,在下面就是说在这个目录下面,我们新建一个启动文件,然后把一个给导入,接着哎,通过这个执行一个盘函数得到一个APP啊的这么一个啊对象,然后我用APP的这个右的方法啊,来指定这个静态资源的一个目录啊,同时使用APP的lesson方法去监听8080端口,这样的话,我们的呃,这个脚本写完了之后,启动这个脚本就。
02:21
可以啊,启动我们的这个外部服务器啊,它就会给我们提供一个啊,这个端口的一个外部服务器啊,那我们就可以去通过访问这个端口啊,来获取这个服务器提供的这些资源。好,呃,这里呢,因为我们是呃,从一开始是一点一点去安装的这个1S,所以这个启动脚本我们我们得自己去写啊,实际上这个1EXS它也是有脚手架的,就是帮我们把这些底层的啊,这些必备的这些文件都给我们创建好的啊,那这里呢,我们就不说脚手架,我们就看看这个1S就原生的怎么去用。啊啊,看这里应该是安装完成了啊,安装完成了。
03:03
啊,安装完成好,这里面呢,打开这个零九就可以看到多了一个no models这个目录啊,还有一个这个package look Jason的一个锁文件啊,那安装完成之后,按照我们的文档,文档我们要在这个。根目录啊,去创建一个启动文件啊。在这个零九下面来新建一个JS。啊,Indexs来做我们的启动文件,然后把这个代码诶给粘贴过来,那这个代码呢,已经给大家介绍过了啊,导入啊这个一个pass,然后执行这个一个pass函数,得到这个APP对象,这个APP对象可以使用它的右侧方法哎,去指明我们静态资源的一个目录,然后使用这个app.lesson去呃监听这个端口啊好,那这里为什么要呃指明这个静态资源的这个目录呢?我们看文档下面的这个说明啊嗯,当我们启动这个脚本之后啊,哎,就会。通过这个浏览器,就可以通过浏览器访问这个接口啊,这个地址,它就会在浏览器中打开当前目录的啊,Public目录,因为我们在这里指明了这个静态资源的目录是public,对不对?好,严格上来说啊,就是说更严格来说,实际上是打开这个public目录下的index,还有我们知道在我们访问一个地址的时候,它会默认去找这个目录下面的index.al啊,如果他这个目录啊有这个图片文件,那么我也可以就是说使用这种方式去访问图片啊,包括这个GS啊,CSS都可以,只要是静态资源哎,都可以,好呃,那我们来写一下给大家试试,我来新建一个public目录。
04:36
Public,然后我在里面新建一个index,点开卖了。新建一个field单点H啊好在这里面呢啊,我随便写一点东西啊。来,随便写一个he,写个hello。
05:02
啊,接下来呢,我们使用node命令来启动我们的这个脚本啊,Node当前目录下的inex.JS啊,当前目录呢,是可以不用写这个点com的啊,直接notde DS也可以啊NOES等于JS。呃,已经启动了,因为我们这里面呢,没有,呃,在最后conslo说这个服务已经启动,所以呢,它就会停在这不动,对不对,那实际上已经启动了,那我们先天就是8080端口,就可以通过local host8080端口来访问啊。啊,可以看到这个8080对吧,输输出了这个local host对不对?好,它实际上找的是谁呢?实际上它找的就是这个index.h面,大可以看到我访问这个index展面,哎,得到的结果是一样的啊,但是呢,它这里是不显示这个public的,因为我们这里里已经指明了啊,我们的一个静态资源的目录就是public,哎,就是我们直接访问的话,它就会自己去找这个public,哎,如果有其他的资源,包括CSS都可以,诶正常访问的那只有index.a面上我们可以啊省略不写,你其他的这个你是要写的,比如我们再来复制一个写一个啊a.a台面啊,这里我来随便改一个啊AA啊,我如果要访问这个a.a台面的话呢。
06:25
就得加上这个完整的这个名字了,看到这个A出来了啊,那这是我们的啊,第一个简单的例子就是先把这个一个S给运行起来啊。啊,那这个是我们读取的这个文件啊,读取的这个文件来响应到我们的这个页面,然后呢,我们还可以怎么办呢?还可以在这个index ts中生成动态的这个网页啊,就是通过匹配不同的这个地址,我们来动态的输出不同的这个内容啊好,我们来看一看这个内容。改一下我们的启动脚本,那这里呢,我们就先注释,然后这里写到这里了。
07:05
那这里我们哎使用的是这个APP的get方法啊,来匹配这个哎根就是当我们请求这个根目录的时候,我们会响应这个内容好。来在改了这个代码之后呢,我们要重新启动一下我的这个代码。找到浏览器啊,这时候我们再来。刷新项请求这个根,哎,可以得到这个hello的,但是我们在请求其他的资源的时候啊,就是。哎,只返回了这个一个信息,就是说找不到啊,找不到这个路由。好啊,接着来看我们的笔记。呃,在我们此中找补的时候呢,啊,使用了这个APP的这个get方法,这个get方法用于指定不同的访问路径所对应的回调函数啊,这就叫做路由啊,啊这就叫做路由啊,就是我们通过匹配不同的啊访问的这个路径来执行对应的不同的这个回调函数啊,这就叫路由啊,那我们上面的这个代码呢,只是简单的演示了这个请求了,这个根目录的回调函数,因此只有一个路由记录啊,实际上我们在一个应用中可能有多个路由记录,哎,比如说是啊首页的啊,比如说这个后台管理页的啊,比如说还有这个其他页面的啊,我们把这个例子来给大家看一下。
08:21
哎,这里我们只是匹配了一个哎跟路径啊,实际上我们还可以匹配其他的路径。来显示来执行不同的这个回调函数,啊,这就是一个一个的路由,我们来看一看。啊,这个me先把这个结束掉。然后访问这个命,哎,可以得到啊,结束的时候没有启动啊,我们再来启动一下。啊,是不是可以得到这个面,然后访问这个根啊,可以得到这个首页的这个信息啊,我们会发现啊。每次我们改完这个代码之后呢,都要重新去启动这个脚本啊,为什么?因为你不重新启动脚本,这个代码是没有效的啊,你看我把这个删掉。
09:04
你现在再来访问还是一样的,对不对,所以说每次改完都要去启动,那如果每次就是哪怕我改了一点东西要启动,改了点东西要启动,那我写代码是不是特别麻烦。啊,这个时候呢,推荐大家去安装一个工具啊,安装一个no,它会监听我们文件的改动,只要我们文件发生了改动,就会自动帮我们去重启这个命令,好,那我们来。看一下啊,安装哪个呢?就是n PM install啊node mon啊note Mo,然后杠机全局安装啊,全局安装之后我们就可以使用note这个命令来启动这个文件,之后我们每次改动这个文件,它都会自动帮我们重启啊,当然我已经装过了啊,那装过之后怎么用呢?直接使用node啊more,然后引单点GS。好,可以看到啊,使用notema启动我们的这个脚本之后,只要我们的文件有改动啊,哪怕我挑一个空格之后再保存,它都会帮我们诶重启这个脚本,这样的话不用我们来回重启这个脚本了,哎,所以推荐大家安装一下这个工具啊,这样话我们就不用再频繁的重启了,那这个就放小在这里看着就好啊。
10:10
好,接着看我们的文档啊。嗯,那前面说到了,我们可以有很多很多的这个路由,但是随着我们的路由特别特别的多,我们一个项目有可能有几百个路由,那这个文件就会特别特别的大,对吧?所以呢,我们有必要把这个路由呢,单独放到一个文件中,比如我们新建一个啊,Root这个目录啊,然后把这个路由都提取到啊,这个里面的某个文件里面啊。嗯,在这个模式下,我们来新建一个。啊,这个目录啊,然后我们在这个目录里面啊,新建一个index.gs,把这个路由呢给提取出去。在这里面来新建一个。Index减TS啊,把我们的路由提取出来啊。使用的是common ts的啊,Model expose这种语法,我们对外暴露了一个函数对吧,然后这个函数切除一个APP参数,然后我们在这里使用APP的这个get方法来定义我们这个不同的这个路由,那之后当然这个就不要了,那我们这边定义完路由文件之后呢,要通过啊这个代码把路由文件啊给引入进来啊,引入路由文件啊,使用require啊使用require引入进来,那我们引入过来之后呢,它的这个结果是什么?是不是一个函数对不对,它的结果是一个函数,所以呢,我们加一个括号来执行这个函数,并且把这个函数需要的这个参数APP啊给传过来,清楚了吧,就是这么回事啊,那引入引过来之后,我们接着来保存好,他已经帮我们重启了,我们再来看一看这个,呃效果啊,找到浏览器来刷新是一样的啊,那如果大家。
11:53
嗯。不信的话,我们再来改一个改改一点东西啊hello AA啊,保存。好,可以看到是不是有了啊。
12:02
好,那接着来看啊。来我们分析一下这个框架的这个啊运行原理啊,它的运行原理呢,哎,也很简单,它底层用的就是at模块对吧?那at模块呢,也跟大家讲的很详细了,我们来看一看啊,一个PLA框架,它建立在这个note GS内置的ATP模块上,而而这个at模块生成的服务器代码,原始的代码如下啊是不是我们之前给大家讲的模块这么一个例子,那使用的这个关键的方法就是可的S方法啊,生成了一个APP服务器方法就是一个回调,回调函数的参数呢,就是代表了服务器的请求,以及服务器的这个啊响应啊这两个对象,而这个一个传框架的核心,它就是对at模块的再次的一个包装,上面的框架就上面的这个代码,如果我们用express改写,就可能是下面这个样子啊,使用这个,然后导入这个1EXPRESS,然后哎,得到这个APP对象,使用APP的get的方法啊,来得到啊这个。来就是说匹配这个get啊,匹配这个跟啊这个路由那上面我们是可能通过其他的方法去匹配。
13:05
啊,然后你去看两段代码的话,最后会发现比较接近啊,实际上就是用这个AP create server创建了一个APP实例,然后然后再用这个1PLUS的一个构造方法生成一个啊一个实例,两者的回调函数都是相同的啊,只不过加了一些中间层,好那对这个框架的这个底层运行的原理有了一定的了解之后,我们来看一看什么是中间键,那中间键这个概念呢,我们在很多地方都会看到啊,不管是在后端的框架,还是说啊前端的一些框架啊,或者说是我们这个1S等等啊啊,都会看到这个中间件的概念,那简单来说。中间键它实际上就是处理啊AB请求的一个函数啊,那这里是我们这个是一个,所以它说的是处理AB请求,如果是在其他的框架中啊,那可能就是说是处理什么什么的一个啊一个函数啊。或者说是处理什么什么的一个这个层级。
14:02
最大的特点就是一个中间点处理完,它会传递给下一个中间点啊,就是说我们的请求假如在这里,然后我们的数据啊,我们的呃,返回数据放在这里,中间可能会经过很多很多的这个中间键啊,比如说有验证是否登录的啊,有过滤这个安全字符串的啊,有这个啊其他的等等,你在经过了一系列的这个中间站之后,才达到了我们的数据源,哎,我们的数据源才给你做这个处理,返回最终的一个数据啊,很多地方,包括后端的一些框架也都是这么处理的。啊来这个疏远了,就说我们这个一盘里面的中间键,那1SP里面的中间键呢,主要就是啊,用来处理AP的这个请求,然后一个中间处理完传给下一个中间键,那APP实例在运行过程中会调用一系列的中间键啊,每个中间键可以从这个APP实例啊,就是接收三个参数啊,因为我们说它是中间,就是什么处理AP请求的函数对不对,函数可以接收参数,它能接收到哪三个参数呢?一个IQ,一个is和一个nice啊,那大家看这个是request的缩写和response的缩写,对,那这个next干什么?Next这个方法就是,哎,执行之后请求就会继续下发啊,就会可以再继续执行的其他的中间点,如果你没有这个NEX,那请求到这里就终止了。
15:14
啊,等会在下面会大家演演示这个例子啊,来接着看我们的这个概念啊,每个中间件都可以对attp请求啊,就是这个request对象进行一层的这个加工啊,并决定是否调用next方法。哎,如果调用了这个next方法啊,那这个request请求对象就继会继续下派给下一个软件件啊。啊,如果是一个不需要进行任何操作啊,就是传给request的对象的一个中间件啊,大概就是下面这个样子啊。那如果直接调用这个NEX啊,就是会继续把请求下发给下一个中间键,那如果我们在这个NEX里面给了一个参数的话,那就是抛出一个错误啊,就是参数就是错误成本啊,抛出错误之后,后面的中间键就不再执行了,就下面再有其他中键都停止了,不再不再执行,哎,直到发现下一个这个错误的数列函数为止。好,那就是简单的介绍一下中间线啊。
16:12
接下来我们来看看哎,怎么使用这个中间件,那我们要使用中间键呢,是使用的这个柚子方法,柚子方法呢是express注册中间键的一个方法,它返回一个函数,那下面这个例子就是一个连续调用两个中间件的一个例子啊,代码呢我就不一的写,直接复制下用代码呢,大家一看就知道了啊。呃,在这里啊。找一下我们的这个引单点TS。这里大家写一下使用中间键啊,把代码放这路由文件呢,我还放这不动啊。来看一下我们使这个代码啊,比较简单,就是使用APP的右的方法,U的方法呢,它接触的就是一个回调函数,看到了吧,回调函数,那这个回调函数大家看这三个参数是不是就是我们刚才说的,哎,就是中间线的这个回调函数有三个参数,Request response,以及这个next啊,那我们处理完这个请求以后,哎,它调用了这个NEX啊,就会继续下派给下一个中间键,那下一个中间键。
17:14
啊,就是说最后输出了这个。哈喽,我啊。好,我们来看一看,执行一下啊,这边已经帮我重启了,嗯,上面的这个路由文件啊,我也先出示一下吧,啊,防止对我们的例子产生影响,接着呢,保存一下,保存一下去浏览器中来运行刷新,好可以看到这个hello word输出了,那看一下我们这个控制台。呃,可以看到啊,这里是不是打印了对吧,而且下面也输出了啊,那当然这个呢是,呃,因为调用的是这个response的end,所以它是给我们的是一个响应我们在浏览器端的一个输出,那这个是cons,所以它是在这个控制台的一个输出。啊,那通过这个例子大家可以看到,一旦我这里调用了NEX啊,就请求继续,就是交给下一个中件,如果我ne来调用了,就说传了一个参数,那参数就是错误信息,这里就相当于抛了一个异常,那下面就不再执行了,中间键好这里呢,比如说我来写一个啊,出错了来保存。
18:13
啊,接下来我再请求可以看到,哎,直接就是把出错了给我们响应了,下面的这个是不是就不再执行了,就没有了啊。好,呃,那这是这个,哎,中间线的一个简单的使用。好。呃,这个是对代码的一个介绍,这边给大家说了就不说了啊,那我们接着去看啊,使用这个。右的方法啊,内部可以对访问的路径进行判断,哎,就能实现简单的这个路由,根据不同的请求网址返回不同的网内容啊,那这是路由的,呃,另一种写法我们来。复制一下啊,那之前我们是使用的是。啊。这个APP的这个其他的这个方法,APP的这个get这些方法啊,来简单的写一个这个路由,那我们来看一看路由的啊另外一种写法。
19:12
啊,可以看到啊,我们这里呢,使用了这个up点柚子啊,来建立了三个中间键,然后每个中间电脑都会继续向下去派发啊,然后在这个中间件里面,我们做了什么事情呢?我们做了去匹配这个URL,如果你的这个UR根目录,哎,我就给你响应。一旦碰到这个response的N,就是说一旦碰到这个响应后面的就都不再执行了啊好,就是说如果没有匹配到UR2,我继续使用ne,继续去匹配下一个,下一个匹配匹配这个about,哎,如果匹配到啊这个about啊。那我就执行这个啊,那这个应该是少写了一行,那这里我应该再给他输出一个。Welcome to。哎。那下面的那就不再执行了,如果我们输入的地址既不是这个根,也不是这个about,就会继续执行下面这个中间键,那下面这个中间键呢,就是返回了这个404啊,一个error找不到啊好,我们来验证一下我们的例子保存啊,保存之后它会自己重写,那首先我来请求这个根可以给到和我们page啊,那我来访问这个about啊,得到这个about页面,那如果我访问了一个其他的不存在的这个。
20:24
我们没有定义的这个路由就是error,这是不是就是简单的一个啊路由的一个定义,好,那和之前我们讲路由使用的方式不一样,之前我们讲路由我们使用的是直接使用的是APP提用的这种动词方法啊,来定义的这个路由,那这个呢,是我们使用最原始的这个中元件来定义的这个路由,那通过这个方式。大家可以就是说了,了解到这个路由究竟是怎么回事,怎么是呃定义下来的啊,那为什么我们这边定义的这个路由,它就能一点一点的去匹配对应的路由,实际上就是中间键的一个机制啊,它会一点点往下匹配,匹配不到继续,那匹配不到继续next啊,匹配到了就直接啊response了。
21:04
清楚了吧?啊,那通过这个例子是让大家啊,了解一下这个路由的这个底层的一个运行的一个啊原理究竟是怎么来的。好,我们继续。嗯,来看啊。嗯。然后啊,我们的这个代码呢,是通过request URL来判断这个请求的访问步骤内容啊,然后还有一个方式是啊,除了在这个回调函数内部去判断请求请求这个网址,柚子方法呢,也可以将我们的请求网址写在第一个参数里面啊,直接写到这个里面啊,这个这样的写的话,只有匹配到了这个。路由后面的这个中间点才会执行,比我们刚才的写法要简单很多啊,因此如果我们用这种方式去改写我们的代码,那应该是这个样子啊。嗯,我们把这个给他注释点啊。
22:00
好,中间键啊路由简写吧。啊,就是这种方式。直接把这个匹配的路由写在第一个参数,然后把回调函数放在啊第二个参数啊,只有匹配到它才会执行,这样的话我们就不用啊,在里面做判断,再调用这个next啊,这样写比较清晰啊,来看一下这个效果是一样的啊。刷新啊,都是一样的A找不到,然后首页是。嗯,首页也没有。匹配到啊,因为我没有定义首页,我们定义的是这个home对不对,然后把这个home给删掉啊,这样就有首页了啊。啊,这是一个简写的一个啊方方式啊,那接着呢,我们来看一看这个1PASS的一个这个方法。来看一下啊,Express这个all方法和HTP动词方法啊,那针对不同的请求,Express提供了又用这个方法的一些别名啊,比如我们上面的这个代码还可以继续简写,以别名的形式来简写,那比如我们之前用过的啊get,使用这个get来匹配啊,然后呢,还可以使用这个凹凹式匹配,所有就是所有的请求都会进到这个里面啊,然后这个当匹配到这个get的时候,可以执行这个匹配到这个about会执行这个啊。
23:21
呃,我们把这个继续复制一下啊。来写一下啊,把这个注释掉。那这个是express啊提供的。好。来保存可以看到啊,因为我们使用office法匹配所有的请求,那所有的请求会找走到这里,这里面我们做了一个什么事情,统一的写了一个响应头啊,响应的状态码是200,响应的这个文本类型是text play啊,那继续调用next next,那继续往下走,就开始匹配这个get啊,匹配这个呃,Get请求的这个跟啊,Get请求这个about以及这个啊,所有的这个其他的这个请求啊。
24:11
那就是因为匹配到他们之后呢,就会给给出一个响应,所以就结束了,如果匹配不到也匹配到他,那就会走到这里,最后给了一个404啊,最后有404来兜底啊,就这么一个情况。啊,那我们继续来尝试,效果是不是一样的啊。接着啊,再来看。嗯,这个介绍呢,我就不说了啊,那除了get方法之外呢,Class还提供了post put delete啊,所以那这些方法呢,这些其实都是AP的动词,所以我们称这些是这个AP的动词啊,它都都是这个pass它提供的一些方法啊。接着啊,这些方法我们在使用的时候,嗯,第一个参数传的都是请求路径,那除了我们绝对的去匹配路径之外,还允许模式匹配,比如说哎,我们通过这种啊加冒号加上这个,哎可以匹配这个。
25:01
啊。参数啊,匹配这个斜杠后面这个参数啊。啊,我们来。写一下啊。把那个注释掉。那这个是模式匹配。啊,匹配哈,然后这里我们传这个一个参数啊,Apartment传一个apartment who啊呃,这个who就是我们传的这个参数,会被谁给接收到呢?是在这个re IQ里面啊,可以拿到这个who啊。来,我们来看一看。请求这个哈啊来斜杠后面传什么参数呢?传个一一,哎,可以看到这个一一,我们这里写的这个参数。会被谁给接收呢?会被它给接收对吧,它接收之后我们再回到函数里面啊,真正的是谁接收的呢?是IQ的啊,Apartment去接收的。
26:01
清楚了吧?好,那如果我传了一个以问号的形式,我又传了一个参数呢?比如说我传了一个name等于AA啊,那这个内会被谁给接收呢?内会被re EQ。里边的啊,另外一个参数结束我们来写一写啊。再加上一个re eq.qqu ery啊hurryry.N看一看啊,能不能拿到这个A,是不是拿到这个A了对不对,所以大家可以发现了,如果我们是在路径里面直接写的这个斜杠什么什么参数是被这个apartment给解除对吧?好,如果我们是以问号啊传参的形式是被谁给接收query接收了,所以一般我们称为这个问号传参的这个,这是称为查询字符串,那我们直接斜杠传参的这个称为参数对吧?当然我们是不是还有form表单提交的这个参数啊,Form表单提交参数我们一般称为啊,那个body date啊那。一般是通过这个啊,从这个包里面去取出来,附表单体的这个数据啊,这个是额外,呃,说一点这个课外的啊,说一点其他的。
27:06
来,接着看啊。那这个呢,就不演示了,这个是就是说我们不仅呢这个支持精准的一个匹配,还支持模糊匹配,加了一个问号,就加了问号之后,这个你可以给也可以不给啊,稍微演示一下吧,你看现在这个情况啊,我没有加问号啊,我就必须后面得给这个参数,哪怕我给一个一都行,必须得给,对不对啊,当然这个没有给问号,所以是按你find的啊,那一旦我这里不给参数了,是不是就就匹配不到了,你看countno,那找不到对不对,那这是因为我们这个呃是一个精,也算是一个精准的匹配,就是必须得给我这个参数,那如果我加了一个问号,哎,就表示有疑问,这个参数可以给可以不给,那这个时候呢,我再去请求这个哈,也是可以拿到了,这不过是安迪饭的对吧,你没给嘛,那你给了我就要,你不给我就不要嘛,你看给了我就要对吧,给了我就要啊,那这是这个问号啊,稍微给大家演示一下啊。嗯。战后这个还提供了赛的方法。
28:03
S的方法呢,用来指定变量的一个值,比如说设置这个模板的这个目录啊,设置这个模板的这个引擎啊,使用哪个引擎啊,好,那这个我先放着啊,我们用的时候再说。然后我们来看一看response对象。呃,Response对象啊,就还有这个request对象,我们一定来说啊,就是主要是我们这里用到的这两个request,以及response这两个对象啊,就是IQ和is,然后这两个用的比较多,对吧。打开我们的啊笔记啊,看到啊response,它有一个direct方法,可以进行这个网页的重定向啊,比如我们诶重定向的时候,给他请求某个地址,给他重定上哪个地址啊,那我们来写一写啊,比如说啊。嗯。在下面写吧。胖子啊。
29:02
先来看看这个重定项,我来定义一个啊请求啊,请求谁呢,就请求我们的。啊。请求这个根吧,然后让它执行一个哎,回调函数,一个IQ,一个I。那使用这个res的这个redirect方法来重新行到谁呢?啊,我们给它重新行到百度吧,啊,就少个W啊使用APS吧。好,那现在请求我们的这个根,我们就能给他重定向的百度啊,这是它的一个重定向的一个方法来保存,下面来运行看一看,访问我们的根目录,哎,是不是来到百度啊,这是这个重定向啊。那接着再来看我们的这个笔记。还有一个send feel啊,来发送一个文件啊,这个就不演示了,还有一个run的方法用来渲染啊,这个网页的这个。页面啊,用来渲染这个网页模板。
30:05
那这个我们等会儿再给大家看啊。好,上面的这个代码是使用render方法将啊message这个变量传入这个模板之后,它会渲染成A的一个页面,那在后面的实例我给大家演示动态页面的时候,会使用啊这个模板来同时使用这个。Render方法,来给大家去做一个演示,这里我们先跳过啊。接着再来看一看。这个request对象啊,那request呢,呃,主要包含了请求相关的信息,比如说这个IP啊,比如说呃呃,这个上传的一些文件呐,还有啊,我们传的一些参数等等啊,这里没有给大家写全,大家可以看L看一下。那到这里呢,Express相关的啊,这个基础知识已经给大家啊介绍完了啊,下面有一个这个项目的开发实例,这个呢,大家拿到文档以后自己去啊练习一下啊就可以啊。那本课程呢,只是对这个1PLUS进行简单的一个介绍,让大家能简单的入手去使用,那关于它更多的一个用法,比如说如何使用它去写一个完整的后台的一个项目,那这里就不再过多的这个设计啊,大家如果有兴趣可以自己去看一个plus的这个官方文档啊,甚至也可以使用它的一个脚手架去快速的去构建一些应用啊,那这个呢,大家自己下去,如果对它有兴趣可以看一下,因为我们在下一节课还会讲到其他的框架,比如说啊,同样是一个pass,同一个作者开发的啊Co框架,好,那这节课我们就先到这里。
我来说两句