位置: 编程技术 - 正文

从零学习node.js之搭建http服务器(二)(node js入门)

编辑:rootadmin

推荐整理分享从零学习node.js之搭建http服务器(二)(node js入门),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js基础入门,node.js入门教程,node js入门,怎么学node.js,node.js怎么学,node js入门,node.js入门教程,学node.js需要什么基础,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在上篇文章中我们了解了一下不同模块规范之间的联系与区别。本文我们正式开始node的学习,首先我们从搭建一个http服务器,能运行简单的程序开始说起。

一、hello world

最经典的hello world。首先我们创建一个server.js来保存我们的代码:

在终端输入node server.js运行:

终端就会输出 hello world 的字样。可是我们一个node服务器程序,总是要在浏览器上访问的呀,这里就要用到node里自带的http模块了:

我们再次在终端输入node server.js运行,终端里会有输出 server has started… 的字样,表示服务器已创建并正在运行,然后我们在浏览器上访问.0.0.1:,就可以看到页面中输出了hello world。

二、form表单

刚才我们只是在页面中输出了一段简单的文本,现在我们要在页面中呈现一个表单,可以让用户输入信息并进行提交:

修改server.js中的内容,重新运行:

刷新页面后,我们发现页面中输出了3个文本框和1个提交按钮。因为我们的程序只是呈现页面,并没有做任何其他的处理,因此在页面中提交数据只是刷新当前页面。

注意: 我们每次修改node中的任何代码后,都要重新进行启动。

2.1 获取表单GET方式提交的数据

我们上面的代码中使用的是POST方式,不过这里要先讨论使用GET方式提交过来的数据,我们先不考虑数据的安全性,只是学习如何获取使用get方式提交过来的form表单数据,将post改为get,重新运行。

我们知道,使用get方式提交数据,会将数据作为URL参数传递过来,因此我们通过解析URL中的参数获取到数据,这里就用到了url模块中的方法:

我们再次运行提交后就能在页面中显示出数据了。

url.parse是用来解析URL字符串的,并返回解析后的URL对象。若我们只输出一下 url.parse(request.url) :

如果将第2个参数设置为true,则会将返回结果中的query属性解析为一个对象,其他属性不变;默认值为false,即query属性是一个字符串:

因此我们可以通过如下语句判断是否有提交数据并获取提交数据,然后再输出到中即可:

2.2 获取表单POST方式提交的数据

现在我们使用post方式来提交数据。因为POST请求一般都比较“重” (用户可能会输入大量的内容),如果用阻塞的方式来处理处理,必然会导致用户操作的阻塞。因此node将post数据拆分为很多小的数据块,然后通过data事件(表示新的小数据块到达了)和end事件传递这些小数据块(表示所有的数据都已经接收完毕)。 所以,我们的思路应该是:在data事件中获取数据块,在end事件中操作数据。

这段代码与上段代码项目,主要有的几个变化是:

不再引入url模块, 改用引入querystring模块。因为我们不再对URL进行操作了,也没必要引入了; 使用request.method.toLowerCase()=='post'判断当前是否有数据提交; 在data事件进行数据的拼接,在end事件中进行的处理; response.end()写在了end事件内部,因为end事件是异步操作,因此必须得数据输出完成之后才能执行response.end()

我们在控制台中可以看出,postData是这样的一个字符串:

因此我们使用query.parse将postData解析为对象类型,以便获取提交过来的数据。

三、路由

从零学习node.js之搭建http服务器(二)(node js入门)

现在我们所有的逻辑都是在根目录下进行的,没有按照url区分,这里我们按照功能进行路由拆分。以上面的post请求为例,我们可以拆分为:页面初始化和form提交后的处理。

页面初始化:

展示获取的数据:

然后在server.js中进行路由选择

我们任意改变URL地址,会看到输出的每个地址的pathname(忽略/favicon.ico):

因此我们就根据pathname进行路由,对路由进行方法映射:

如果匹配到路由 / ,则执行 starter.start(request, response) ;如果匹配到路由 /show ,则执行 uploader.upload(request, response) 。如果都没匹配到,则显示。

四、 图片上传并显示

在上面我们已经能成功提交数据了,这里来讲解如何进行图片上传并显示。使用node自带的模块处理起来非常的麻烦,这里我们使用别人已经开发好的formidable模块进行编写,它对解析上传的文件数据做了很好的抽象。

在starter.js中,我们添加上file控件:

4.1 图片上传

首先我们进行的是图片上传操作,首先我们要确保当前目录中存在tmp和img目录。

在 uploader.js 中:

我们上传图片后跳转到upload路径,然后显示出相应的信息:

我们再查看img目录时,就会发现我们刚才上传的照片了。

4.2 图片显示

将图片上传到服务器后,怎样才能把图片显示在浏览器上呢。这里我们就使用到了fs模块来读取文件,创建一个shower.js来专门展示图片:

然后在 server.js 中添加上 show 的路由映射:

最后在 upload.js 中进行图片的引用:

五、综合

刚才学习了上传数据和上传图片,这里我们将其综合一下,拟定一个题目:“设定用户名密码,并上传头像”。希望可以自己实现一下。

六、接口的实现

在第2部分学习了GET和POST请求,那么在这里写一个简单json或jsonp接口应该不是什么难事儿了吧。

创建一个 inter.js :

在server中添加inter的引用和路由映射:

然后对 进行json请求或jsonp请求即可。

为大家提供一个查询API的中文地址:

从零学习node.js之文件操作(三) 一、文件操作在文件操作里,主要是有文件读写,创建、移动文件等。1.1读取文件读取文本文件时,如.txt,.js,.json等文件,直接使用readFile就可以获取文

从零学习node.js之简易的网络爬虫(四) 前言之前已经介绍了node.js的一些基本知识,下面这篇文章我们的目标是学习完本节课程后,能进行网页简单的分析与抓取,对抓取到的信息进行输出和

基于Nodejs利用socket.io实现多人聊天室 socket.io简介在Html5中存在着这样的一个新特性,引入了websocket,关于websocket的内部实现原理可以看这篇文章,这篇文章讲述了websocket无到有,根据协议,

标签: node js入门

本文链接地址:https://www.jiuchutong.com/biancheng/376379.html 转载请保留说明!

上一篇:从零学习node.js之模块规范(一)(学node.js需要什么基础)

下一篇:从零学习node.js之文件操作(三)(怎么学node.js)

  • 生产经营怎么填写
  • 自产和外购的视频区别
  • 用友t3普及版价格
  • 个税代扣代缴返还手续费如何入账
  • 福利费的支出要求及标准
  • 代扣代缴附加税怎么做账
  • 报废车辆残值收入交多少增值税
  • 汇算清缴补交所得税会计分录小企业会计政策
  • 付垫资款给其他公司应该怎么做账?
  • 研发物资
  • 一般纳税人销售自己使用过的物品
  • 护栏发票税点
  • 运输费发票备注栏填不下
  • 公司购买新办公楼装修计入什么科目
  • 企业为职工负担的个人所得税是什么意思
  • 存货周转次数计算公式怎么理解
  • 如何栽柑橘苗
  • 反映留存收益的账户
  • 进料加工分配率是什么意思
  • 路由器管家怎么登录
  • 车辆维修的增值税怎么算
  • 票据权利消灭是啥意思
  • win10应用商店下载的软件在哪
  • env文件夹是什么文件
  • 会计实务加班费的账务处理
  • 苹果14pro真实图片发朋圈
  • PHP:Memcached::getDelayed()的用法_Memcached类
  • 新准则规定
  • 微信小程序开发一个多少钱
  • 存货盘盈盘亏影响当期利润吗
  • 旅行社专票开票内容的规定
  • 房产税去哪交税
  • 企业固定资产账户2019年6月初借方余额5000000元
  • 长期股权投资追加投资
  • 销售废旧设备增值税率
  • 挂在树上的小鸟怎么画
  • 梅萨维德国家公园特点
  • chat gpt 国内版免费手机
  • web前端视频教程全套
  • 班迪录屏软件录制框怎样在ppt上一直指定
  • 普通发票冲红后还会有税吗
  • 退税还没到
  • 递延所得税资产借贷方向
  • 自产自销农产品增值税免税政策
  • mysql查询表里数据
  • 什么叫动量交易
  • 其他综合收益影响所得税费用吗
  • 月末研发支出会结转至哪个账户
  • ce认证所需的模块有哪些
  • 2021年购买土地需要缴纳什么税
  • 来料加工的账务处理新收入准则
  • 减免税额月底怎么结转
  • 以前年度损益调整是什么意思
  • 银行扣款后又退回怎么办
  • 项目开票分录
  • 应纳税所得额收入总额包括
  • 外汇申报要在几天之内
  • centos6.10安装教程
  • Windows Server 2003报错无法定位程序输入点DecodePointer解决方法
  • 一步一步教会你走路
  • win7系统调节亮度快捷键
  • 怎么找回手机删除的照片和视频
  • ghoststartservice.exe是什么进程 有什么作用 ghoststartservice进程查询
  • xp无法访问win7电脑
  • xp sp3精简版
  • win10 ie桌面图标
  • 常用的加锁方式
  • 安卓专业图片处理软件
  • centos 开机启动程序
  • linux find -cmin
  • python3gui
  • unity 3d完全自学教程
  • c#未来展望
  • 红字专用发票进什么科目
  • 非房地产企业土地增值税
  • 什么是"五证合一"登记制度?办理"五证合一"程序和方案
  • 为什么要进行进气歧管真空度检测
  • 临沂市2020年居民燃气价格
  • 计算土地增值税时下列费用准予从收入总额中扣除的有
  • 怎样通过发票号码查询电子发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设