从零开始学node.js笔记 02
一、node.js中http模块
http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,
就能方便的把一台普通的电脑变成一台Web服务器,从而对外提供Web资源服务。
如果希望使用http模块创建Web服务器,则需要先导入:
服务器和普通电脑的区别在于,服务器上安装了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模块:
步骤二 创建web服务器实例:
调用http.createServer()方法
步骤三 为服务器绑定request事件:
步骤四 启动服务器:
调用服务器实例的server.listen()方法
req请求对象:
只要服务器接收到了客户端的请求,就会调用通过server.on()为服务器绑定的request事件处理函数。
如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下方式:
res响应对象:
在服务器的request事件处理函数中,访问与客户端相关的数据或属性,可以使用如下方式:
解决中文乱码:
添加一个响应头以解决乱码问题
二、模块化
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、包管理配置文件
npm规定,在项目根目录中,必须提供一个package.json的包管理配置文件。用来记录与项目有关的一些配置信息。
例如:
项目的名称、版本号、描述等
项目中使用的包
哪些包只在开发期间用到
哪些包咋开发和部署的时候需要用到
快速创建package.json:
注意:
只能在英文目录下执行,在包含中文的目录下会报错
快速安装package.json中的包: