nodeJs上

news2024/12/23 16:12:01

文章目录

    • 使用node执行js脚本文件
      • 流程
      • 示例
        • 读文件
        • 写文件
    • node构建web服务器
        • 流程
        • 根据不同请求路径返回不同数据
        • 核心模块
        • 模块系统
        • ip地址和端口号的概念
        • 响应内容类型Content-type
      • 初步实现Apache功能
      • 第三方模块

使用node执行js脚本文件

流程

1.创建js脚本文件
2.打开终端,定位到文件所属目录(或者直接使用Git Bash Here)
3.输入:node 文件名,执行对应文件(文件名不要使用node.js来命名,最好不要使用中文)
4.解析执行js文件

示例

读文件

浏览器中的js是没有文件操作能力,但是node中的js有;
fs是file-system的简写,就是文件系统的意思;
在Node中如果想要进行文件操作,就必须引入fs这个核心模块,里面提供了所有文件操作的API
在这里插入图片描述

condole.log(data.toString)
在这里插入图片描述
在这里插入图片描述

写文件

跟读取文件差不多
在这里插入图片描述

可以添加错误的处理机制

node构建web服务器

在node中专门提供了一个核心模块:http,这个模块的职责就是编写服务器的

流程

1.加载http核心代码模块

var http = require('http')

2.使用http.createSever()方法创建一个web服务器,返回一个Sever实例

var sever = http.createSever()

3.服务器:提供服务(对数据的服务)
发请求
接受请求
处理请求
给个反馈(发送响应)
注册request请求事件,当客户端请求过来时,就会自动触发服务器的request请求事件,然后执行第二个参数,回调处理函数.
request请求事件处理函数,需要接收两个参数,Request(请求对象),Response(响应对象)。
请求对象可以获取客户端的一些请求信息,例如请求路径
响应对象可以用来给客户端发送响应消息,response对象有一个方法,write,可以用来给客户端发送响应数据,write可以使用多次,但最后一定要使用end来结束响应,否则客户端会一直等待

sever.on('request',function(request,response){
    conlose.log("收到客户端请求,请求路径是:"+request.url)
    response.write('hellow')
    response.write('node')
    //告诉客户端,我的话说完了,可以呈递给用户了
    response.end()
})

在这里插入图片描述
上面的方式比较麻烦,推荐使用更简单的方式,直接end的同时,发送响应数据

response.write('hellow node')

4.绑定端口号,启动服务器(3000,5000,8000)

sever.listen(3000,function(){
    console.log("服务器启动成功")
})

5.关闭服务器
ctrl+C

根据不同请求路径返回不同数据

1.获取请求路径
request.url获取到的是端口号之后的那一部分路径,也就是说所有的url都是以/开头的
2.判断路径处理响应

var url=request.url
if(url==='/'){
    response.end('内容1')
}else if(url==='内容'){
    response.end('内容2')
}else{
    response.end('其他')
}
if(url==='/products'){
    var products=[
        {
           name:"苹果",
           price:99999
        },
        {
            name:菠萝,
            price:2000
        }
    ]
    //响应内容只能是二进制数据或者字符串
    response.end(JSON.stringfy(products))
}
核心模块

node为js提供了很多服务器级别的API,这些API绝大多数都被包装到一个具名的核心模块中了。例如文件操作的fs模块,http服务构建的http模块,path路径操作模块,os操作系统信息模块

在这里插入图片描述
在这里插入图片描述

模块系统

require是一个方法,它的作用就是来加载模块的。在node中,模块有三种:具名的核心模块,例如fs,http;用户自己编写的文件模块(相对路径必须加./; 可以省略后缀名)

require.url(./文件名.js)
require.url(./文件名)
//效果是一样的

在node中,没有全局作用域,只有模块作用域,外部访问不到内部,内部也访问不到外部
require方法有两个作用:
1.加载文件模块并执行里面的代码
2.拿到被加载文件模块导出的对象
在每个文件模块中都提供了一个对象:exports,exports默认是一个空对象

在这里插入图片描述

ip地址和端口号的概念

所有联网的程序都要进行网络通信
在这里插入图片描述
ip地址用来定位计算机,端口号用来定位具体的应用程序,所有需要联网通信的应用程序都会占用一个端口号,端口号的范围从0-65536之间;可以同时开启多个服务号,但一定要确保不同的服务占用的端口号不一致

响应内容类型Content-type

在服务端默认发送的数据,其实是utf8编码的内容,在http协议中,Content-type就是用来告知对方我给你发送的数据内容是什么类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

var http=require('http')
var fs=require('fs')
var server=http.createServer()
server.on('request',function(req,res){
    var url=req.url
    if(url==='/'){
       fs.readFile('test.html',function(err,data){
          if(err){
             res.setHeader('Content-type','text/plain;charset=utf-8')
             res.end('文件读取失败,请稍后重试')
          }else{
             res.setHeader('Content-type','text/html;charset=utf-8')
             res.end(data)
          }
       })
    }
})
server.listen(3000,function(){
   console.log('is running')
})

修改代码后不用重启,node在动态读取文件,刷新一下就好
在这里插入图片描述
一个请求对应一个响应,如果在一个请求的过程中,已经结束响应了,则不能重复发送响应

初步实现Apache功能

Apache服务器软件默认有一个www目录,所有存放在www目录中的资源都可以通过网址来浏览

在这里插入图片描述

第三方模块

nodemailer
在这里插入图片描述

"use strict";
const nodemailer = require("nodemailer");
//创建发送邮件对象
let transporter = nodemailer.createTransport({
   host:"smtp.ethereal.email",//发送方邮箱
   port:587,//端口号
   secure:false,
   auth:{
      user:testAccount.user,//发送方的邮箱地址
      pass:testAccount.pass  //mtp 验证码
   }
});
//邮件信息
····
//发送邮件

在这里插入图片描述
判断信息发送成功可以在定时器里加一个回调函数
在这里插入图片描述
如果打印出来是null,说明发送成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1700053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5月21号作业

思维导图 代码实现 TCP域套接字服务器 #include <header.h> #include <math.h>int main(int argc, const char *argv[]) {//为通信创建一个端点int sfdsocket(AF_UNIX,SOCK_STREAM,0);//参数1&#xff1a;说明使用的三ipv4通信域//参数2&#xff1a;说明使用的三…

你真的了解HTTPS协议吗

前言 在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。本文即将带大家来了解这些。 任何事物都有两面性&#xff0c;为了满足HTTP协议的快&#xff0c;但导致了它有如下的不足&#xff1a; 通信采用明文&#xff08;不加…

【Linux-INPUT输入的子系统】

Linux-INPUT输入的子系统 ■ input 子系统简介■ input 驱动编写流程■ ■ input 子系统简介 input 子系统就是管理输入的子系统&#xff0c; input 子系统分为 input 驱动层、 input 核心层、 input 事件处理层&#xff0c;最终给用户空间提供可访问的设备节点 ■ input 驱…

模仿高效网络进行目标检测——知识蒸馏

摘要 链接&#xff1a;https://openaccess.thecvf.com/content_cvpr_2017/papers/Li_Mimicking_Very_Efficient_CVPR_2017_paper.pdf 当前的基于卷积神经网络&#xff08;CNN&#xff09;的目标检测器需要从预训练的ImageNet分类模型中初始化&#xff0c;这通常非常耗时。在本…

【除自身以外数组的乘积】python

目录 思路&#xff1a; 代码&#xff1a; 思路&#xff1a; 直接计算前缀乘积&#xff0c;后缀乘积&#xff0c;然后相乘即可 开始我还在想&#xff0c;遍历一次i&#xff0c;怎么能同时计算前缀乘积和后缀乘积&#xff0c;事实上分开计算比较方便。。 代码&#xff1a; cl…

数据集002:眼疾识别数据集 (含数据集下载链接)

说明 病理性近视&#xff08;Pathologic Myopia&#xff0c;PM&#xff09;的医疗类数据集&#xff0c;包含1200个受试者的眼底视网膜图片&#xff0c;训练、验证和测试数据集各400张。 说明&#xff1a; 如今近视已经成为困扰人们健康的一项全球性负担&#xff0c;在近视人…

CMS Full GC流程以及调优配置

个人博客 CMS Full GC流程以及调优配置 | iwts’s blog CMS CMS 收集器是以实现最短 STW 时间为目标的收集器&#xff0c;所以对于偏业务的后台开发而言&#xff0c;基本上都无脑选CMS了。 多线程收集器&#xff0c;工作在老年代&#xff0c;采用标记清除算法。比较特殊&am…

Three.js 研究:3、创建一个高科技圆环

打开Alpha混合 修改环形颜色&#xff0c;更改发光的颜色&#xff0c;更改发光的强度为2 更改世界环境灯光

基于集成经验模态分解的心电信号降噪和基于希尔伯特变换的R峰检测(MATLAB R2018)

近年来&#xff0c;心脏病已成为危害人类健康最常见的疾病。为了有效预防心脏疾病的发生&#xff0c;往往需要更加准确地采集与诊断心电信号&#xff0c;以便于更好地反映心脏情况。心电信号作为人体生理信号&#xff0c;对于识别心脏异常和心脏疾病具有重要的参考价值。心电信…

Docker 常用命令大全!!

Docker 常用命令 一、启动类1. 启动 docker2. 关闭 docker3. 重新启动 docker4. docker 设置自启动5. 查看 docker 运行状态6. 查看 docker 版本号等信息7. docker 帮助 二、 镜像类1. 查看镜像2. 搜索镜像3. 拉取镜像4. 运行镜像5. 删除镜像6. 加载镜像7. 保存镜像 三、容器类…

电机转速计算(基于码盘和IO外部中断)

目录 概述 1 硬件介绍 1.1 整体硬件结构 1.2 模块功能介绍 2 测速框架介绍 2.1 测速原理 2.2 软件框架结构 3 使用STM32Cube配置Project 3.1 准备环境 3.2 配置参数 3.3 生成Project 4 功能实现 4.1 电机控制代码 4.2 测试代码 4.3 速度计算 5 测试 5.1 编写测…

0基础认识C语言

为了给0基础一个舒服的学习路径&#xff0c;就有了这个专栏希望带大家一起进步。 话不多说&#xff0c;开始正题。 一、C语言的一段小历史 C语言的设计要追溯到20世纪60年代末和70年代初&#xff0c;在那个时代美国有这么一号人叫做丹尼斯.里奇&#xff0c;他和同事肯.汤普逊…

pyqt 浮动窗口QDockwidget

pyqt 浮动窗口QDockwidget QDockwidget效果代码 QDockwidget QDockWidget 是 PyQt中的一个控件&#xff0c;它提供了一个可以停靠在主窗口边缘或者浮动在屏幕上的窗口小部件&#xff08;widget&#xff09;。QDockWidget 允许用户自定义其界面&#xff0c;并提供了灵活的停靠和…

【数据结构】栈和队列超详细解析

最重要的就是不要去看远方模糊的&#xff0c;而要做手边清楚的事。&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;栈 • &#x1f330;1.什么是栈&#xff1f; • &#x1f330;2.如何实现栈 • &#x1f330;3.栈的基本操作…

一文教你使用stream流轻松解决java项目数据枚举显示问题

本篇文章主要讲解java枚举、vo实体类通过stream流形式输出枚举参数的方法。 日期&#xff1a;2024年5月26日 作者&#xff1a;任聪聪 本文代码实例附件&#xff1a;https://download.csdn.net/download/hj960511/89361611 实际效果 可以看到在枚举参数的基础上&#xff0c;我们…

56.合并区间

class Solution {public int[][] merge(int[][] intervals) {// 对 intervals 数组按照每个区间的开始位置进行排序Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);int len intervals.length;// 创建结果数组 res&#xff0c;初始化长度为 intervals 的长度int[][] re…

【Text2SQL 经典模型】TypeSQL

论文&#xff1a;TypeSQL: Knowledge-Based Type-Aware Neural Text-to-SQL Generation ⭐⭐⭐ Code: TypeSQL | GitHub 一、论文速读 本论文是在 SQLNet 网络上做的改进&#xff0c;其思路也是先预先构建一个 SQL sketch&#xff0c;然后再填充 slots 从而生成 SQL。 论文发…

Thinkphp5内核宠物领养平台H5源码

源码介绍 Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP&#xff0c;适合做猫狗宠物类的发信息发布&#xff0c;当然懂的修改一下&#xff0c;做其他信息发布也是可以的。 源码预览 源码下载 https://download.csdn.net/download/huayula/89361685

什么是云渗透测试?

推荐阅读&#xff1a; 什么是安全态势&#xff1f; 什么是人肉搜索 什么是恶意软件&#xff1f; 什么是数字取证&#xff1f; 什么是语音网络钓鱼&#xff1f; 什么是网络安全中的社会工程&#xff1f; 什么是网络安全中的威胁情报&#xff1f; 什么是端点检测和响应 (…

面试中算法(A星寻路算法)

一、问题需求&#xff1a; 迷宫寻路游戏中&#xff0c;有一些小怪物要攻击主角&#xff0c;现在希望你给这些小怪物加上聪 明的AI (Artificial Intelligence&#xff0c;人工智能&#xff09;&#xff0c;让它们可以自动绕过迷宫中的障碍物&#xff0c;寻找到主角的所在。 A星…