node.js - http、模块化、npm

node-enum:用于创建和使用枚举的简单枚举库 Micro JS枚举 94字节的JavaScript枚举实现。 文献资料 文档和示例可在 立即下载

Python微信订餐小程序课程视频

https://blog.youkuaiyun.com/m0_56069948/article/details/122285951

Python实战量化交易理财系统

https://blog.youkuaiyun.com/m0_56069948/article/details/122285941
今天是node学习的第二天,其实越往后面学越感觉有点熟悉的味道了,光针对于node来说哈,为什么呢,因为我之前学过一点云计算的东西,当时感觉没什么用搞了下服务器客户端这些,没想到这里还能用一用,至少看到服务器这些概念一点不陌生,看到npm一点不奇怪,我当时用的都是yum。

我们今天先看到http模块,也是node里面的第一大模块,内置模块的内容,http是创建web服务器的模块,在前端当中,不需要iis、Apache这些第三方服务器软件,只需要一个node.js提供的http模块就能够写一个服务器,这么一看,貌似node还多强大的。

我们的服务器一般分为三个概念,ip、域名、端口,有了这三个你就可以访问一个服务器。

怎么来创建啊web服务器?

首先要导入http内置模块

const server = http.createServer()

这个创建了一个服务器实例,接下来还要对他绑定一个监听事件,能够监听到客户端发送过来的请求

server.on(‘request’,(req, res) => {})

注意这个事件里面有两个参数,这两个参数代表什么意思我们后面再说,当你绑定完事件过后,就可以开启这个服务器了

server.listen(‘端口号’,callback)

这里面两个参数一个填端口号,一个是开启服务器后的回调函数。

const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => console.log('someone visit our webServer'))
server.listen(83, () => console.log('开启成功'))

浏览器上访问 服务器过后就会在服务器的终端弹出来监听里面要打印的信息

1.1

我们接下来说一下监听事件里面两个参数到底是个什么?

首先第一个req对象,它是一个对象,包含了客户端相关的数据和属性,你要对访问进来的客户端记性操作的话,尽管用到这个对象里面的属性和方法即可

req.url是客户端请求的url地址           req.method是客户端的请求方式

const http = require('http')
const server = http.createServer()
server.on('request', req => {
 const url = req.url
 const method = req.method
 console.log(`your request url is ${url} and your request method is ${method}`)
 // post请求借助postman
})
server.listen('80',() => console.log('server is running in http:127.0.0.1'))

1.2

然后是res对象,没错,他也是一个对象,这是包含了服务器相关属性和数据的对象

res.send()可以向客户端发送你想发送的内容,而且它代表着请求结束,如果发送的内容里面包含中文的话,还需要用到res来设置表头编码不然会出现乱码的现象

const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
 let str = 'your request url is '+req.url+' + your request method is '+req.method+''
 res.end(str)
})
server.listen(80, () => console.log(
 'server is running at http://127.0.0.1'
))

1.3

来一个案例,根据不同的url反映出不同的页面,这个应该很经典吧

// 1.获取到用户的url
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
 let url = req.url
 // 2.设置默认的页面为404
    let content = `# 404 Not Found

`
    // 3.判断用户是否请求的是首页
    if (url == '/' || url == '/index.html') {
 content = `# 首页

`
    // } 4.判断用户是否访问的是分页
    } else if (url == '/son.html') {
 content = `# 子页

`
 }
 // 5.设置请求头 防止中文乱码
    res.setHeader('Content-Type', 'text/html; charset=utf-8')
 // 6.发送内容并结束请求
 res.end(content)
})
server.listen(80, () => console.log('your request is running at http://127.0.0.1'))

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

在我们编程世界里面,模块化就是遵守固定的规则,把一个大文件拆分成独立并相互依赖的小模块,大家分工合作。

Node.js模块分类?

在我们node里面模块分为三个部分,第一个是内置模块:我们前面学的都是内置模块,fs、path、http等

第二个是自定义模块:什么叫做自定义模块,其实就是我们自己写的这个js文件他就是自定义模块

第三个是第三方模块:就是由第三方开发出来的模块,需要提前下载

然后 我们的模块都需要加载用到require

还会有模块作用域,也就是在我们自定义模块里面声明的变量函数,在外面的模块是访问不到的。

那么有没有办法来访问呢?

是有的,向外共享模块成员的方法要用到一个module对象,它是每个js自定义模块都有的内置对象,然后在这里面有一个关键的对象,exports,在我们前面,require这个自定义模块的时候得到的内容其实就是exports对象里面的内容,

所以说有时候为空,就是因为没给exports赋值,他就是一个空对象,我们在写的时候可以写成module.exports 也可以是exports

module.exports = {
 uname : '张三',
 sayHello : function() {
 console.log('hello node');
 }
}
const md = require('./module对象共享')
console.log(md);

但是在模块化这里exports有几个要注意点的,始终要记住一点不管是exports还是module.exports他们虽然能完成一样的效果但是始终以为module.exports里面的数据为准。

为了防止混乱,最好不要将exports和module.exports混用

模块化规范

node遵循的是commenJS模块化的规范,包括我们前面说的module代表当前模块,exports是对外的接口,require用于加载模块都是commenJS规范的,但是我vue入了一点门被劝回来的那里,刚好看到后面应该遵循的都是es6模块化规范了,这个commenJS逐渐要淘汰了。

3

继续看到包和npm的一些内容,首先要明确什么叫包,第三方模块就叫包,包是由第三方个人和团队做出来的,都是免费的。

我们为什么要用包呢?

包是基于内置模块封装出来的,提提供了更高级、更简便的用法,其实就相当于jQuery和浏览器内置对象的关系,jq的ajax方法就是通过xhr封装来的撒。

npm

我们首先看到一个案例对时间格式化如果用我们的传统做法,也就是自定义模块的做法。

const module对象共享 = require("./module对象共享")

function timeFormat(dataStr) {
 let date = new Date(dataStr)
 let y = date.getFullYear()
 let m = addZero(date.getMonth() + 1)
 let d = addZero(date.getDate())
 let h = addZero(date.getDate())
 let mm = addZero(date.getDate())
 let s = addZero(date.getDate())
 return `${y}-${m}-${d} ${h}:${mm}:${s}`
}
function addZero(n) {
 return n = n < 10? '0' + n : n
}
module.exports.timeFormat = timeFormat
const time = require('./格式化时间传统做法')
// console.log(time);
const date = new Date()
console.log(date);
console.log(time.timeFormat(date));

这就完成了一个对于时间格式化的操作,舒适还是有点麻烦,但我们现在有了npm就不一样了,可以用npm安装一个moment的包,安装导入查看文档api这三步曲走起。

const moment = require('moment')
const timer = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(timer);

之前多少代码量,现在多少代码量,这就是为什么要用包。

最后说一下当你安装了包后文件夹多多出两个文件一个node_modules的文件夹这里面存放的npm下载的包文件,一个是pachage_lock.json的配置文件这里面是前面文件夹里面所有npm下载的包的详细信息这两个都不能去修改

最后如果要安装指定版本的包的话只需要在包名的后面添加@版本号

DS250DF410寄存器配置实战:从原理到调试的高速SerDes信号优化指南 在高速串行通信领域,SerDes(串行器/解串器)技术是实现芯片间高速数据传输的核心。其工作原理是通过时钟数据恢复(CDR)从串行数据流中提取时钟,并利用均衡技术补偿信道损耗。这项技术的核心价值在于突破PCB走线或电缆的带宽限制,确保在25Gbps及以上速率下数据的可靠传输。其应用场景广泛覆盖数据中心、高性能计算和通信设备中的高速背板、光模块及芯片互连。本文以TI的DS250DF410多通道重定时器为例,深入剖析其寄存器配置,特别是如何通过精细调控其自适应均衡器和眼图监测模块,实现对高速链路的信号整形与质量 阅读详情

相关推荐

Mplus—随机截距交叉滞后模型(RI-CLPM)语法

随机截距交叉滞后模型RI-CLPM的Mplus语法。

m0_54401011的博客 2535

用npm搭建HTTP服务器

1.NPM(node packaged modules) :javascript库的代码库管理系统 在安装Node.js的过程中,NPM也作为其中一部分被安装了(http://nodejs.cn/download/) 2. Node.js HTTP服务器 安装http-server模块 在cmd中输入(注意环境变量配置) > npm install http-server -g ...

echo2220的博客 3798

巨量千川M-API实战:5分钟搞定短视频计划数据自动获取(Python版)

本文详细介绍了如何利用巨量千川M-API和Python快速搭建自动化工具,实现短视频计划数据的自动获取。通过实战代码演示了从环境准备、Token管理到核心数据接口调用的完整流程,帮助电商运营和技术开发者告别手动导出,高效完成数据汇总与分析。

weixin_29325515的博客 1367

java 枚举

package com.ljq.test; /**  * 枚举用法详解  *   * @author jiqinlin  *   */ public class TestEnum {     /**      * 普通枚举      *       * @author jiqinlin      *      */     public enum ColorEn

wanglirong972的专栏 558

Moveit +Gazebo:搭建单臂机械臂仿真平台

Moveit +Gazebo:搭建单臂机械臂仿真平台

magic_invaid的博客 5294

# 【WorkBuddy专栏33】工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

AI人人懂 2157

本地开发 npm 好用的http server、好用的web server、静态服务器

有时需要快速启动一个web 服务器(http服务器)来伺服静态网页,安装nginx又太繁琐,那么可以考虑使用npm serve、http-server、webpack-dev-server

wangjun5159的专栏 4762

如何在 SAP BTP 上使用 Integration Suite 消费 S/4HANA Cloud API

SAP Integration Suite是一个集成平台即服务(iPaaS),允许开发人员顺利地将内部部署和基于云的应用程序和流程与SAP管理的工具和预构建内容进行集成。登录 SAP Business Technology Platform Cockpit,进入 integration suite:再点击 API management 进入 API Portal:或者直接从收藏夹里打开链接:https://304a49cetrial.integrationsuitetrial-apiportal.cfapp

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1699

HTTP模块、模块化、npm与包【Node.js】

在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。

weixin_53943447的博客 367

Odoo17商城微信支付模块,快速一个实现可在线支付的商城

通过集成微信支付APIv3,Odoo 系统实现了高效、安全的支付流程。Native扫码支付和Jsapi微信浏览器内直接拉起支付为用户提供了更加便捷的支付方式。同时,通过发送下单及支付消息给管理员,商家可以实时了解订单状态并进行相应处理。通过集成微信支付 结合 Odoo 系统内置的商城模块,可以为商家快速实现功能完善、高效的电商解决方案。

AaronZZH 的博客 2268

【全志V821_FoxPi】6-3 GC2083 MIPI摄像头适配

本文介绍了在全志V821芯片上适配GC2083 MIPI摄像头的方案。GC2083是一款支持1080P@30fps的高性能CMOS图像传感器,采用MIPI CSI-2接口,具有低功耗特性。文章详细列出了传感器的技术参数和工作电压要求,并提供了设备树配置示例,包括CSI接口、ISP处理单元和传感器节点的具体设置。通过快速配置命令one_gc2083_sensor或手动修改设备树即可启用该摄像头模组,适用于IPC等对图像质量有要求的嵌入式应用场景。

第四维度的博客 1932

Node.js - fs模块、path模块、http模块、Node.js模块化(ECMAScript标准的导出和导入)、包、npm包的管理和安装依赖、nodemon

Node.js - fs模块、path模块、http模块、Node.js模块化(ECMAScript标准的导出和导入)、包、npm包的管理和安装依赖、nodemon

qq_55626883的博客 1213

100天精通Python(爬虫篇)——第119天:基于selenium实现隐藏浏览器指纹特征(反反爬策略)

1. 什么是浏览器指纹? 2. 爬虫隐藏浏览器指纹特征的好处? 3. 手动打开浏览器指纹情况 4. 无界面模式打开浏览器 5. 脚本隐藏浏览器指纹特征

努力让自己发光,对的人才能迎着光而来 8万+

Node.js 学习笔记 fs、path、http模块;模块化;包;npm

Node.js 学习笔记 fs、path、http模块;模块化(CommonJS 、ECMAScript 模块标准);包;npm

yavlgloss的博客 1584

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Node.js——path路径,http,npm与包,模块化

Node.js知识点 一、fs(文件系统)二、path(路径)三、http(服务器)四、npm与包五、模块化六、express 一、fs(文件系统) (1) 读取指定文件内容 fs.readFile(path[,option],callback 参数1:字符串,表示文件的路径 参数2,表示以什么编码格式读取文件 参数3:读取完成后,通过会点函数读取结果 (2) 向指定的文件中写入内容 fs.writeFile(file,data[,options],callback) 参数1:指文件路径的字符串,

m0_61016904的博客 710

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Node.js和npm

什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码了解模块化概念和好处,以及 CommonJS 标准语法导出和导入把上面学的模块化语法,包的概念,常用命令进行总结。

m0_62943934的博客 1768

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Node.js

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理 需求。例如:path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串path.basename() 方法,用来从路径字符串中,将文件名解析出来如果要在 JavaScript 代码中,使用 path 模块来处理路径,则需要使用如下的方式先导入它:什么是客户端、什么是服务器?在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。

Dragon_Z的博客 2433

node.js----fs模块,path模块,http模块,模块化,npm与包

文章目录1.Fs文件系统模块1.读取指定文件1.读取指定文件的内容。2.判断文件是否读取成功2.向指定的文件中写入内容1.`fs.writeFile()` 的语法格式2.判断文件是否写入成功3.路径的问题2.Path 路径模块1. 路径拼接1. `path.join()`2. 获取路径中的文件名1. `path.basename()` 的语法格式2. `path.extname()` 方法3.http模块1. 创建web服务器2.`req`请求对象3.`res`响应对象4.解决中文乱码问题4.模块化5.np

m0_63348818的博客 1万+

Node.js基础知识、fs、path、http三大模块、nodejs的模块化、npm与包管理

① 浏览器是 JavaScript 的前端运行环境。② Node.js 是 JavaScript 的后端运行环境。③ Node.js 中无法调用 DOM 和 BOM 等浏览器内置 API。查看已安装的 Node.js 的版本号打开终端,在终端输入命令 node –v 后,按下回车键,即可查看已安装的 Node.js 的版本号。

七七的博客 1308

Node.js 第二天(http模块、模块化的基本概念、npm与包)

3.5 时钟案例(受篇幅影响,开头接上篇) 案例实现的步骤 创建两个正则表达式,分别用来匹配 style 和 script 标签 使用fs模块,读取需要被处理的HTML文件 自定义resolveCSS方法,来写入index.css样式文件 自定义resolveJS方法,来写入index.js脚本文件 自定义resolveHTML方法,来写入index.html 文件 ...

m0_56901161的博客 625

Node.JS教程

本文章主要是关于Node.js基础、Express、Koa2、MongoDB、MySQL、以及全栈项目和即时通讯和基于Mocha做测试,基于最新版V16.13和官网+周边生态,从而实现编写Restful Api接口和动态web网站的开发,即时通讯应用的开发

stc_ljc的博客 12万+

node.js详解以及版本切换

node.js详解以及版本切换

y516369的博客 700

Node.js_http模块_模块化_npm与包_模块加载机制【二】

http模块创建服务器模块化好处防止变量污染 npm与包、模块的加载机制

小管管的博客 261

【Node.js】快速入门

Node.js快速入门

weixin_45080950的博客 1297

Node.js基础

一,基础知识部分 1.node是什么? node.js基于chromeV8引擎构建的javascript运行时环境。 不是框架不是库。 说白了就是能够通过node.js来解释执行js的代码。 2.node中的js 没有dom和bom,有es; 提供了一些服务端操作的api fs;http;os;path等 3.特性 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高...

Just do IT!的博客 212
上一篇: 线性二自由度汽车模型的微分方程
下一篇: 使用pip管理库
pythonxxoo
博客等级 码龄5年 337粉丝 670原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值