我的编程空间,编程开发者的网络收藏夹
学习永远不晚

nodejs中的http模块与npm模块使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

nodejs中的http模块与npm模块使用

http模块

创建服务器基本步骤

//1. 导入http模块,http模块是node的核心模块,作用是用来创建http服务器的。
var http = require("http");
 
//2. 创建服务器
var server = http.createServer();
 
//3. 服务器处理请求
server.on("request", function() {
  console.log("我接收到请求了");
});
 
//4. 启动服务器,监听某个端口
server.listen(9999, function(){
  console.log("服务器启动成功了, 请访问: http://localhost:9999");
});

详细说明

  • 给服务器注册request事件,只要服务器接收到了客户端的请求,就会触发request事件
  • request事件有两个参数,request表示请求对象,可以获取所有与请求相关的信息,response是响应对象,可以获取所有与响应相关的信息。
  • 服务器监听的端口范围为:1-65535之间,推荐使用3000以上的端口,因为3000以下的端口一般留给系统使用

request对象详解

文档地址:http://nodejs.cn/api/http.html#http_message_headers

常见属性:

  • headers: 所有的请求头信息
  • method: 请求的方式
  • url: 请求的地址

注意:在发送请求的时候,可能会出现两次请求的情况,这是因为谷歌浏览器会自动增加一个favicon.ico的请求。

小结:request对象中,常用的就是method和url两个参数

response对象详解

文档地址:http://nodejs.cn/api/http.html#http_class_http_serverresponse

常见的属性和方法:

  • res.write(data): 给浏览器发送请求体,可以调用多次,从而提供连续的请求体
  • res.end();   通知服务器,所有响应头和响应主体都已被发送,即服务器将其视为已完成。
  • res.end(data); 结束请求,并且响应一段内容,相当于res.write(data) + res.end()
  • res.statusCode: 响应的的状态码 200 404 500
  • res.statusMessage: 响应的状态信息, OK Not Found ,会根据statusCode自动设置。
  • res.setHeader(name, value); 设置响应头信息, 比如content-type
  • res.writeHead(statusCode, statusMessage, options); 设置响应头,同时可以设置状态码和状态信息。

注意:必须先设置响应头,才能设置响应。

实现静态WEB服务器

服务器响应首页

注意:浏览器中输入的URL地址,仅仅是一个标识,不与服务器中的目录一致。也就是说:返回什么内容是由服务端的逻辑决定

server.on('request', function(req, res) {
  var url = req.url
  if(url === '/') {
    fs.readFile('./index.html', function(err, data) {
      if(err) {
        return res.end('您访问的资源不存在~')
      }
 
      res.end(data)
    })
  }
})

根据根据不同url,响应不同文件

content-type设置-MIME类型

  • MIME(Multipurpose Internet Mail Extensions)多用途Internet邮件扩展类型 是一种表示文档性质和格式的标准化方式
  • 浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器将正确的MIME类型附加到响应对象的头部是非常重要的
  • MIME 类型

静态资源的通用处理

MIME类型的通用处理-mime模块

  • 作用:获取文件的MIME类型
  • 安装:npm i mime

引入mime:

var mime = require('mime')
 
// 获取路径对应的MIME类型
mime.getType('txt')                    // ⇨ 'text/plain'
// 根据MIME获取到文件后缀名
mime.getExtension('text/plain')        // ⇨ 'txt'
const http = require('http')
const fs = require('fs')
const path = require('path')
const mime = require('mime')
http.createServer((req, res) => {
    // 只需要判断 url是否以 /www开始
    const url = req.url
 
    if (url.startsWith('/www')) {
      // 直接读取文件
      const filePath = path.join(__dirname, url)
      fs.readFile(filePath, (err, data) => {
        if (err) {
          // 响应404
          res.statusCode = 404
          res.end('404')
        } else {
          // 设置mime类型
          res.setHeader('content-type', mime.getType(url))
          // 响应数据
          res.end(data)
        }
      })
    } else {
      res.statusCode = 404
      res.end('404')
    }
  })
  .listen(9999, () => {
    console.log('服务器启动成功了')
  })

npm - Node包管理工具

npm的基本概念

  • node package manager
  • npm官网
  • npm中文文档

1. npm 是node的包管理工具,

2. 它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。

3. 来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。

  • 作用:通过npm来快速安装开发中使用的包
  • npm不需要安装,只要安装了node,就自带了npm

npm基本使用

初始化包

npm init;    //这个命令用于初始化一个包,创建一个package.json文件,我们的项目都应该先执行npm init
npm init -y;  //快速的初始化一个包, 不能是一个中文名

安装包

npm install 包名;  //安装指定的包名的最新版本到项目中
npm install 包名@版本号;  //安装指定包的指定版本
npm i 包名; //简写

卸载包

npm uninstall 包名;  //卸载已经安装的包

清除缓存

npm cache clean -f // 如果npm安装失败了,可以用这个命令来清除缓存

package.json文件

package.json文件,包(项目)描述文件,用来管理组织一个包(项目),它是一个纯JSON格式的。

  • 作用:描述当前项目(包)的信息,描述当前包(项目)的依赖项
  • 如何生成:npm init或者npm init -y
  • 作用

作为一个标准的包,必须要有package.json文件进行描述

一个项目的node_modules目录通常都会很大,不用拷贝node_modules目录,可以通过package.json文件配合npm install直接安装项目所有的依赖项

  • 描述内容
{
  "name": "03-npm",  //描述了包的名字,不能有中文
  "version": "1.0.0",  //描述了包的的版本信息, x.y.z  如果只是修复bug,需要更新Z位。如果是新增了功能,但是向下兼容,需要更新Y位。如果有大变动,向下不兼容,需要更新X位。
  "description": "", //包的描述信息
  "main": "index.js", //入口文件(模块化加载规则的时候详细的讲)
  "scripts": {  //配置一些脚本,在vue的时候会用到,现在体会不到
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],  //关键字(方便搜索)
  "author": "",  //作者的信息
  "license": "ISC",  //许可证,开源协议
  "dependencies": {   //重要,项目的依赖, 方便代码的共享  通过 npm install可以直接安装所有的依赖项
    "bootstrap": "^3.3.7",
    "jquery": "^3.3.1"
  }
}

注意:一个合法的package.json,必须要有name和version两个属性

本地安装和全局安装

有两种方式用来安装 npm 包:本地安装和全局安装。选用哪种方式来安装,取决于你如何使用这个包。

全局安装:如果你想将其作为一个命令行工具,那么你应该将其安装到全局。这种安装方式后可以让你在任何目录下使用这个命令。比如less命令,webpack命令,hcc-md命令 。

本地安装:如果你自己的模块依赖于某个包,并通过 Node.js 的 require 加载,那么你应该选择本地安装,这种方式也是 npm install 命令的默认行为。

// 全局安装,会把npm包安装到C:\Users\HUCC\AppData\Roaming\npm目录下,作为命令行工具使用
npm install -g 包名;
//本地安装,会把npm包安装到当前项目的node_modules文件中,作为项目的依赖
npm install 包名;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

nodejs中的http模块与npm模块使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

nodejs中的http模块与npm模块使用

这篇文章主要介绍了nodejs中的http模块与npm模块使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

Nodejs中的http模块怎么使用

这篇文章主要介绍了Nodejs中的http模块怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Nodejs中的http模块怎么使用文章都会有所收获,下面我们一起来看看吧。一、http 模块http 模块是
2023-07-04

Node.js中path模块,url模块,http模块怎么用

小编给大家分享一下Node.js中path模块,url模块,http模块怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!path模块Node.js中,提供了一
2023-06-29

Node.js中HTTP模块与事件模块详解

Node.js的http服务器 通过使用HTTP模块的低级API,Node.js允许我们创建服务器和客户端。刚开始学node的时候,我们都会遇到如下代码:var http = require('http');http.createServe
2022-06-04

深入浅析Nodejs的Http模块

一、http服务器我们知道传统的HTTP服务器是由Aphche、Nginx、IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器,例如:var http = require("http
2022-06-04

Nodejs的fs模块怎么使用

本文小编为大家详细介绍“Nodejs的fs模块怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Nodejs的fs模块怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Nodejs 中的 fs 模块的使
2023-06-29

浅析Nodejs中的http模块和导出共享

本篇文章聊聊node的基础,关于http模块及module.exports导出共享的理解和案例,希望对大家有所帮助!
2022-11-22

Nodejs中内置模块怎么使用

小编给大家分享一下Nodejs中内置模块怎么使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内置模块的基本使用// 01. 导包const fs = requi
2023-06-14

编程热搜

目录