就业班nodejs视频案例第3天_第1页
就业班nodejs视频案例第3天_第2页
就业班nodejs视频案例第3天_第3页
就业班nodejs视频案例第3天_第4页
就业班nodejs视频案例第3天_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程名称第 1 天课堂笔记(本课程共 8 天)前端与移动开发学院htt目录目录2一、3一、Express 框架Express 框架是的 Node 框架,所以和 jQuery、zepto、yui、bootstrap 都不一个东西。Express 在的受欢迎的程度,和 jQuery 一样,就是企业的事实上的标准。自己可以把第一天的作业,就是那个静态文件服务给封装成为模块。封装的越多,就自己做出了类似Express 的东西。EXPRESS 的哲学是在你的想法和服务器之间充当薄薄的一层。这并不意味着他不够健壮,或者没有足够的有用特性,而是尽量少干预你,让你充分表达自己的,同时提供一些有用的东西。英语官

2、网:ht/中文官网:http:/.cn/整体感知,Express 框架。安装 Express 框架,就是使用 npm令。-save 参数,表示自动修改 package.json 文件,自动添加依赖项。1var express = require(express); 23var app = express();路由能力:1npm install -save express原生 Node 开发,会发现有很多问题。比如:呈递静态页面很不方便,需要处理每个 HTTP 请求,还要考虑 304 问题路由处理代码不直观清晰,需要写很多正则表达式和字符串函数不能集中精力写业务,要考虑很多其他的东西1var e

3、xpress = require(express); 23var app = express(); 45app.set(view engine,ejs); 6app.get(/,function(req,res)res.render(haha,news : 我是小啊,我也是啊,哈10);模板引擎:1app.use(express.sic(./public);静态文件伺服能力:4app.get(/,function(req,res)res.send(你好); 7);8app.get(/haha,function(req,res)res.send(这是 haha 页面,); 11);12app.g

4、et(/student/(d10)$/,function(req,res)res.send(学生信息,学号 + req.params0); 15);16app.get(/teacher/:gonghao,function(req,res)res.send(老师信息,工号 + req.params.gonghao); 19);2021app.listen(3000);学习的是 Express4.X,和 Express3.X 差别非常大。11);1213app.listen(3000);二、路由当用 get 请求一个的时候,做什么事情:当用t一个的时候,做什么事情:如果想处理这个的任何 metho

5、d 的请求,那么写 all这里的,不分大小写,也就是说,你路由是实际上小写的也行。所有的 GET 参数,? 后面的都已经被忽略。#也被忽略你路由到/a , 实际/a?id=2&sex=nan 也能被处理。正则表达式可以被使用。正则表达式中,未知部分用圆括号分组,然后可以用 req.params0、1得到。req.params 类数组对象。app.get(/AAb,function(req,res)res.send(你好); 3);1app.all(/,function() 23);1app.t(,function(req,res) 23);1app.get(,function(req,res)

6、 23);冒号是更的写法。app.get(/student/:id,function(req,res)var id = req.paramsid;3var reg= /d6$/;/正则验证if(reg.test(id)res.send(id);elseres.send(请检查格式); 89);app.get(/student/(d10)$/,function(req,res)res.send(学生信息,学号 + req.params0); 3);表单可以自己提交到自己上。适合进行 RESTful 路由设计。简单说,就是一个路径,但是 http method 不同,对这个页面的使用也不同。/st

7、udent/345345get学生信息add添加学生信息delete删除学生新三、中间件如果的 get、t 回调函数中,没有 next 参数,那么就匹配上第一个路由,就不会往下匹配了。如果想往下匹配的话,那么需要写 next()app.get(/,function(req,res,next)console.log(1);next();4);5app.get(/,function(req,res)console.log(2); 8);app.get(/,function(req,res)res.render(form); 3);4app.t(/,function(req,res)/将数据添加进入

8、数据库res.send(成功); 8);下面两个路由,感觉没有关系:但是实际上了,因为 admin 可以当做用户名 login 可以当做 id。app.get(/:username/:id,function(req,res)console.log(1);res.send(用户信息 + req.params.username); 4);5app.get(/admin/login,function(req,res)console.log(2);res.send(管理员登录); 9);解决方法 1:交换位置。 也就是说,express 中所有的路由(中间件)的顺序。匹配上第一个,就不会往下匹配了。具

9、体的往上写,抽象的往下写。解决方法 2:路由 get、t 这些东西,就是中间件,中间件讲究顺序,匹配上第一个之后,就不会往后匹配了。next 函数才能够继续往后匹配。app.get(/:username/:id,function(req,res,next)var username = req.params.username;/检索数据库,如果 username 不存在,那么 next()if(检索数据库)console.log(1);res.send(用户信息);elsenext();910);11app.get(/admin/login,function(req,res)console.lo

10、g(2);res.send(管理员登录); 15);app.get(/admin/login,function(req,res)console.log(2);res.send(管理员登录); 4);5app.get(/:username/:id,function(req,res)console.log(1);res.send(用户信息 + req.params.username); 9);app.use()也是一个中间件。与 get、t 不同的是,他的不是精确匹配的。而是能够有小文件夹拓展的。比如:如果写一个/app.use()就给了增加一些特定功能的便利场所。实际上 app.use()的东西

11、,基本上都从第能得到。大多数情况下,渲染内容用 res.render(),将会根据views 中的模板文件进行渲染。如果不想使用 views文件夹,想自己设置文件夹名字,那么 app.set(views,aaaa);如果想写一个快速测试页,当然可以使用 res.send()。这个函数将根据内容,自动帮设置了Content-Type 头部和 200 状态码。send()只能用一次,和 end 一样。和 end 不一样在哪里?能够自动设置 MIME类型。如果想使用不同的状态码,可以:res.sus(404).send(Sorry, we cannot findt!);如果想使用不同的 Conten

12、t-Type,可以:res.set(Content-Type, text/html);/当你不写路径的时候,实际上就相当于/,就是所有app.use(function(req,res,next)console.log(new Date();next();5);app.use(/admin,function(req,res)res.write(req.originalUrl + n);/admin/aa/bb/cc/ddres.write(req.baseUrl + n);/adminres.write(req.path + n);/aa/bb/cc/ddres.end(你好); 6);四、GET 请求和T 请求的参数GET 请求的参数在 URL 中,在原生 Node 中,需要使用 url 模块来识别参数字符串。在 Express 中,不需要使用 url 模块了。可以直接使用 reuery 对象。T 请求在 express 中不能直接获得,必须使用 body-parser 模块。使用后,将可以用 req.body 得到参数。但是如果表单中含有文件上传,那么还是需要使用 formidable 模块。Node 中全是回调函数,所以法封装。自己封装的函数,里面如果有异步的方法,比如 I/O,那么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论