0
点赞
收藏
分享

微信扫一扫

从零开始学node.js笔记 02

一、node.js中http模块

http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,

就能方便的把一台普通的电脑变成一台Web服务器,从而对外提供Web资源服务。

如果希望使用http模块创建Web服务器,则需要先导入:

const http = require('http')

服务器和普通电脑的区别在于,服务器上安装了web服务器软件,通过服务器软件,将一台普通电脑变成一台web服务器。

在node.js中,我们不需要使用web服务器软件。因为我们可以基于node.js提供的http模块,通过代码对外提供web服务。


服务器相关概念:

1.ip地址:

ip地址就是互联网上每台计算机的唯一地址,因此ip地址具有唯一性。只有在知道对方ip地址的前提下才能与对应的电脑之间进行数据通信。

ip地址的格式:通常使用“点分十进制”表示成(a,b,c,d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。

注意:

互联网中每台Web服务器,都有自己的ip地址。

在开发期间,自己的电脑既是一台服务器,也是一个客户端。


2.域名和域名服务器:

ip地址不够直观且不方便记忆,于是人们发明了另一套字符型的地址方案,即所谓的域名地址。

ip地址和域名是一一对应的关系,这份对应关系存放在一个叫做域名服务器的电脑中,使用者只需要通过域名访问对应的服务器即可,对应的转换工作有域名服务器实现。因此,域名服务器就是通过ip地址和域名之前转换服务的服务器。


3.端口号:

在一台电脑中,可以运行成百上千个web服务,每个web服务都对应一个唯一的端口号,客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的web服务进行处理。

注意:

每个端口号不能同时被多个web服务占用。

在世纪应用中url中的80端口可以被省略。




创建web服务器:

步骤一  导入http模块:

const http = require('http')

步骤二  创建web服务器实例:

调用http.createServer()方法

const server = http.createServer()

步骤三  为服务器绑定request事件:

server.on('request',(req,res) => {

})

步骤四  启动服务器:

调用服务器实例的server.listen()方法

//server.listen(端口号,回调)
server.listen(80,()=>{

})



req请求对象:

只要服务器接收到了客户端的请求,就会调用通过server.on()为服务器绑定的request事件处理函数

如果想在事件处理函数中,访问与客户端相关的数据属性,可以使用如下方式:

const http = require('http')
const server = http.createServer()
// req 是请求对象,包含了与客户端相关的数据和属性
server.on('request', (req) => {
// req.url 是客户端请求的 URL 地址
const url = req.url
// req.method 是客户端请求的类型
const method = req.method
const str = `请求url: ${url}, 请求方式: ${method}`
console.log(str)
})
server.listen(80, () => {
console.log('server running at http://127.0.0.1')
})



res响应对象:

在服务器的request事件处理函数中,访问与客户端相关的数据属性,可以使用如下方式:

const http = require('http')
const server = http.createServer()
// req 是请求对象,包含了与客户端相关的数据和属性
server.on('request', (req, res) => {
// req.url 是客户端请求的 URL 地址
const url = req.url
// req.method 是客户端请求的类型
const method = req.method
const str = `请求url: ${url}, 请求方式: ${method}`
console.log(str)
// 调用 res.end() 方法,向客户端响应一些内容
res.end(str)
})
server.listen(8080, () => {
console.log('server running at http://127.0.0.1')
})

解决中文乱码:

添加一个响应头以解决乱码问题

// 调用 res.setHeader() 方法,设置 Content-Type 响应头,解决中文乱码的问题
res.setHeader('Content-Type', 'text/html; charset=utf-8')



二、模块化

1.模块化的基本概念

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。

编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并相互依赖的多个小模块

把代码进行模块化拆分的好处:

提高代码的复用性

提高代码的可维护性

可以实现按需加载


模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的规则。

模块化规范的好处:降低沟通成本,极大地方便了个模块之间的互相调用。



2、node.js中模块的分类

node.js中根据模块来源不同,将模块分为三大类:

内置模块(官方提供的)

自定义模块(用户创建的每个js文件都是自定义模块)

第三方模块 (由第三方开发的,使用时需要下载)



3、模块作用域

函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域

模块作用域能够防止全局变量污染问题

在每个自定义模块当中,都有过一个module对象,它里面存储了和当前模块有关的信息


module.exports对象

在自定义模块中,可以使用module.exports对象,模块内的成员共享出去,弓外界使用

外界使用require方法导入自定义模块时,得到的是module.exports所指向的对象

使用require方法导入模块时,导入的结果,永远以module.export指向的对象为准


exports对象

由于module.exports单词写起来比较复杂,为了简化向外共享成员代码,node还提供exports对象

默认情况下exports和module.exports指向同一个对象。最终共享结果,还是以module.exports指向的对象为准。




三、npm与包

1、什么是包

node.js中第三方模块又叫做包


2、包的来源

不同于node.js中的内置模块与自定义模块,包是第三方个人或团队开发的,免费供所有人使用。



3、

举报

相关推荐

0 条评论