位置: IT常识 - 正文

Node.js——http模块和导出共享

编辑:rootadmin
Node.js——http模块和导出共享

推荐整理分享Node.js——http模块和导出共享,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

个人简介

👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿 offer(秋招) 🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2&Vue3项目实战 🥝Node.js 🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

Node.js系列文章目录内容参考链接Node.js(一)初识 Node.jsNode.js(二)Node.js——文件模块和路径模块文章目录Node.js系列文章目录一、http 模块1、创建 web 服务器2、req 请求对象3、res 响应对象4、解决中文乱码问题5、根据不同的 url 响应不同的 html 内容二、Node.js 中的模块分类1、三大模块分类2、模块作用域3、module.exports 对象4、共享成员时的注意点5、exports 和 module.exports一、http 模块

http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。

通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 web 服务器,从而对外提供 web 资源服务。

1、创建 web 服务器导入 http 模块创建 web 服务器实例为服务器实例绑定 request 事件,监听客户端的请求启动服务器

示例:监听 8080 服务

// 导入 http 模块const http = require('http')// 创建 web 服务器实例const server = http.createServer()// 为服务器实例绑定 request 事件 监听客户端的请求server.on('request', function (req, res) { console.log('请求中...')})// 启动服务server.listen(8080, function () { console.log('http://127.0.0.1:8080')})

2、req 请求对象

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

示例:在事件处理函数中,访问与客户端相关的数据或属性

// 导入 http 模块const http = require('http')// 创建 web 服务器实例const server = http.createServer()// req 是请求对象 包含了与客户端相关的数据和属性server.on('request', (req) => { // req.url 客户端请求的 url 地址 const url = req.url // req.method 是客户端请求的 method 类型 const method = req.method const str = `Your request url is ${url} and request method is ${method}` console.log(str)})// 启动服务server.listen(8080, function () { console.log('http://127.0.0.1:8080')})

3、res 响应对象

在服务器的 request 事件处理函数中,如果想访问与服务器相关的数据或属性,需要使用 response

示例:请求响应

// 导入 http 模块const http = require('http')// 创建 web 服务器实例const server = http.createServer()// req 是请求对象 包含了与客户端相关的数据和属性server.on('request', (req, res) => { // req.url 客户端请求的 url 地址 const url = req.url // req.method 是客户端请求的 method 类型 const method = req.method const str = `Your request url is ${url} and request method is ${method}` console.log(str) // 调用 res.end() 方法 向客户端响应一些内容 res.end(str)})// 启动服务server.listen(8080, function () { console.log('http://127.0.0.1:8080')})

4、解决中文乱码问题

当调用 res.end() 方法,向客户端发送中文内容时,会出现乱码问题,需要手动设置内容的编码格式

示例:解决中文乱码

// 导入 http 模块const http = require('http')// 创建 web 服务器实例const server = http.createServer()// req 是请求对象 包含了与客户端相关的数据和属性server.on('request', (req, res) => { // req.url 客户端请求的 url 地址 const url = req.url // req.method 是客户端请求的 method 类型 const method = req.method const str = `请求地址是 ${url} 请求方法是 ${method}` console.log(str) // 设置 Content-Type 响应头 解决中文乱码问题 res.setHeader('Content-Type', 'text/html; charset=utf-8') // 调用 res.end() 方法 向客户端响应一些内容 res.end(str)})// 启动服务server.listen(8080, function () { console.log('http://127.0.0.1:8080')})

5、根据不同的 url 响应不同的 html 内容

示例:步骤如下

获取请求的 url 地址设置默认的响应内容为 404 Not found判断用户请求的是否为 / 或 /index.html 首页判断用户请求的是否为 /about.html 关于页面设置 Content-Type 响应头,防止中文乱码使用 res.end() 把内容响应给客户端// 导入 http 模块const http = require('http')// 创建 web 服务器实例const server = http.createServer()// req 是请求对象 包含了与客户端相关的数据和属性server.on('request', (req, res) => { // req.url 客户端请求的 url 地址 const url = req.url // 设置默认的内容为 404 Not Found let content = '<h1>404 Not Found!</h1>' // 用户请求页是首页 if(url === '/' || url === '/index.html') { content = '<h1>首页</h1>' } else if (url === '/about.html') { content = '<h1>关于页面</h1>' } // 设置 Content-Type 响应头 防止中文乱码 res.setHeader('Content-Type', 'text/html; charset=utf-8') // 调用 res.end() 方法 向客户端响应一些内容 res.end(content)})// 启动服务server.listen(8080, function () { console.log('http://127.0.0.1:8080')})

二、Node.js 中的模块分类1、三大模块分类内置模块:由 node.js 官方提供的,如 fs、path、http 等自定义模块:用户创建的每个 .js 文件,都是自定义模块第三方模块:由第三方开发出来的模块,使用前要先下载2、模块作用域

防止了全局变量污染的问题

示例:

index.js 文件

const username = '张三'function say() { console.log(username);}Node.js——http模块和导出共享

test.js 文件

const custom = require('./index')console.log(custom)

3、module.exports 对象

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

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

示例:

index.js 文件

const blog = '前端杂货铺'// 向 module.exports 对象上挂载属性module.exports.username = '李四'// 向 module.exports 对象上挂载方法module.exports.sayHello = function () { console.log('Hello!')}module.exports.blog = blog

test.js 文件

const m = require('./index')console.log(m)

4、共享成员时的注意点

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

示例:

index.js 文件

module.exports.username = '李四'module.exports.sayHello = function () { console.log('Hello!')}// 让 module.exports 指向一个新对象module.exports = { nickname: '张三', sayHi() { console.log('Hi!') }}

test.js 文件

const m = require('./index')console.log(m)

5、exports 和 module.exports

默认情况下,exports 和 module.exports 指向同一个对象。

最终共享的结果,还是以 module.exports 指向的对象为准。

示例:

index1.js 文件

exports.username = '杂货铺'module.exports = { name: '前端杂货铺', age: 21}

index2.js 文件

module.exports.username = 'zs'exports = { gender: '男', age: 22}

index3.js 文件

exports.username = '杂货铺'module.exports.age = 21

index4.js 文件

exports = { gender: '男', age: 21}module.exports = exportsmodule.exports.username = 'zs'

对 index2.js 文件结果的解析如下:

对 index4.js 文件结果的解析如下: 注意:为防止混乱,尽量不要在同一个模块中同时使用 exports 和 module.exports

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

上一篇:关系代数(关系代数的五个基本操作)(关系代数关系运算)

下一篇:【Vue】Vue简介、引入、命令式和声明式编程(vue的简介)

  • 荣耀X30i支持内存卡吗(荣耀x30i支持nfc吗)

    荣耀X30i支持内存卡吗(荣耀x30i支持nfc吗)

  • 抖音为什么一直在审核中(抖音为什么一直关注不了对方)

    抖音为什么一直在审核中(抖音为什么一直关注不了对方)

  • 手机屏幕出现条纹怎么自修(手机屏幕出现条纹是不是内屏坏了)

    手机屏幕出现条纹怎么自修(手机屏幕出现条纹是不是内屏坏了)

  • 新买的电脑很卡正常吗(新买的电脑很卡很慢怎么办)

    新买的电脑很卡正常吗(新买的电脑很卡很慢怎么办)

  • 淘宝如何切换成标准版(淘宝如何切换成英文)

    淘宝如何切换成标准版(淘宝如何切换成英文)

  • iphone11闹钟图标不显示吗(iphone11设定闹钟后状态栏没有提示怎么不显示了)

    iphone11闹钟图标不显示吗(iphone11设定闹钟后状态栏没有提示怎么不显示了)

  • 苹果手机换国产屏影响使用吗(苹果手机换国产屏有原彩吗)

    苹果手机换国产屏影响使用吗(苹果手机换国产屏有原彩吗)

  • 抖音没有粉丝怎么开橱窗(抖音没有粉丝怎么赚钱教教我)

    抖音没有粉丝怎么开橱窗(抖音没有粉丝怎么赚钱教教我)

  • 15天内发货一般是几天(15天内发货一般等多久)

    15天内发货一般是几天(15天内发货一般等多久)

  • 手机主板天线座掉了(手机主板天线座更换)

    手机主板天线座掉了(手机主板天线座更换)

  • 美版xs支持双卡吗(美版xs是单卡还是双卡)

    美版xs支持双卡吗(美版xs是单卡还是双卡)

  • 苹果11怎么进刷机模式(苹果11怎么进刷系统)

    苹果11怎么进刷机模式(苹果11怎么进刷系统)

  • 苹果7一直无服务怎么回事(苹果7一直无服务怎么办)

    苹果7一直无服务怎么回事(苹果7一直无服务怎么办)

  • 虾米app如何下载mv(虾米如何下载mp3格式的歌)

    虾米app如何下载mv(虾米如何下载mp3格式的歌)

  • 华为mate30屏幕分辨率(华为mate30屏幕分辨率几k)

    华为mate30屏幕分辨率(华为mate30屏幕分辨率几k)

  • 抖音最近联系人怎么删(抖音最近联系人是多久联系)

    抖音最近联系人怎么删(抖音最近联系人是多久联系)

  • 微博动图怎么发朋友圈(微博动图怎么发微信)

    微博动图怎么发朋友圈(微博动图怎么发微信)

  • 苹果手机拍照镜像关闭(苹果手机拍照镜头抖动什么原因)

    苹果手机拍照镜像关闭(苹果手机拍照镜头抖动什么原因)

  • 如何去除手机新闻资讯(如何去除手机新闻广播)

    如何去除手机新闻资讯(如何去除手机新闻广播)

  • 禁用网络的Nagle功能来降低延迟(禁用的网络在哪里开启)

    禁用网络的Nagle功能来降低延迟(禁用的网络在哪里开启)

  • 量子退火算法入门(4):旅行商问题的QUBO建模「上篇」(量子退火算法入门6)

    量子退火算法入门(4):旅行商问题的QUBO建模「上篇」(量子退火算法入门6)

  • mknod命令   创建字符及块设备文件(命令行mkdir创建文件夹)

    mknod命令 创建字符及块设备文件(命令行mkdir创建文件夹)

  • getenforce命令  显示SELinux服务模式(geth命令行)

    getenforce命令 显示SELinux服务模式(geth命令行)

  • 帝国cms有哪些功能(帝国cms功能)

    帝国cms有哪些功能(帝国cms功能)

  • 浙江税务网上办税大厅官网
  • 不能从销项税额中抵扣的进项税额都有什么
  • 房地产开发企业土地增值税预缴
  • 增值税专用发票抵扣期限
  • 普通发票需要进项税额转出吗
  • 生产经营行业
  • 利率与股价的计算方法
  • 股票价值的计算公式财务管理
  • 税控设备维护费怎么填申报表
  • 自然人股权出资 税收优惠政策
  • 注册资金印花税是资金账簿吗
  • 开了发票一定要确认收入吗
  • 工会票据电子化管理系统如何领发票
  • 购材料有折让如何做会计分录?
  • 当月费用下月付款
  • 先征后退房产税的会计处理?
  • 技嘉主板bios更新后无法开机
  • 现金流量表与资产负债表不符
  • 会计折算是什么意思
  • 专票和普票都要交税吗
  • 外观专利的价值
  • bios设置第一启动项Linux
  • 报销旅游门票怎么报销
  • 一般纳税人接受固定资产投资时相关的科目可能有
  • mac笔记本装了双系统后打开苹果系统和原来一样吗
  • 公司收入没有进项税额
  • 前端工程化的理解简书
  • php点击下载
  • vue安装使用
  • js监听事件和处理事件
  • [深度学习] 基于切片辅助超推理库SAHI优化小目标识别
  • php正则匹配网址
  • 增值税申报表期初未缴税额
  • 红字发票信息表盖什么章
  • 销售发票重复开库存商品如何处理?
  • 融资租赁的利息进项税可以抵扣吗
  • 差旅费必须填写差旅费报销单吗
  • seata1.3.0配置
  • 织梦怎么安装
  • 年末未分配利润减去年初未分配利润等于什么
  • 自然人独资公司可以变更法人吗
  • 不含税单价和不含税合价的区别
  • mysql备份数据
  • 税金及附加里面包含什么
  • 金税四期有什么变化
  • 生产成本明细科目有哪些内容
  • 营改增后土地出让增值税
  • 简易征收的纳税标准
  • 个体户如何做账?
  • 个体工商户怎么变更法人
  • 客户给的现金如何转到公司账上
  • 车辆保险赔款怎么算
  • 企业银行贷款保证金多少
  • 现代服务业主要包括哪些类型
  • 银行退票业务
  • fat32转换为ntfs分区命令
  • win8关机立马自动重启
  • windowsxp设置语言
  • win10重置系统快捷键
  • cocos2d schedule
  • cocos预加载
  • django中的setting.py的作用
  • android profiler内存分析
  • linux perl -e
  • unity rp
  • 台湾 游戏论坛
  • Unity3D游戏开发(第2版)pdf
  • RadioGroup+Fragment实现底部菜单栏
  • 安卓登录界面布局设计
  • js设计模式有哪些
  • python 解析算法
  • 广西税务怎么交城乡养老保险
  • 开采砂石
  • 2022年安徽城镇非私营单位平均工资
  • 企业所得税改革
  • 出国海关申报单图片
  • 企业报税年报如何填写
  • 陕西省税务局袁小平简介
  • 罗湖税务局在哪
  • 山西税务体检医院
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设