Node.js 学习系列(二) —— 创建一个应用

news2024/12/23 15:55:07

Node.js 应用由三部分组成:

(一)require 指令:

Node.js 中,使用 require 指令来加载和引入模块,引入的模块可以是内置模块,也可以是第三方模块或自定义模块。

语法格式:

const module = require('module-name');

module-name 可以是一个文件路径(相对或绝对路径),也可以是一个模块名称,如果是一个模块名称,Node.js 会自动从 node_modules 目录中查找该模块。

require 指令会返回被加载的模块的导出对象,可以通过该对象来访问模块中定义的属性和方法,如果模块中有多个导出对象,则可以使用解构赋值的方式来获取它们。

var http = require("http");

如上所示,使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http

(二)创建服务器:

服务器可以监听客户端的请求,类似于 Apache 、NginxHTTP 服务器。

http.createServer(function (request, response) {
}).listen(6060 );

如上所示,使用 http.createServer() 方法创建服务器,向 createServer 函数传递了一个匿名函数,函数通过 request, response 参数来接收和响应数据,并使用 listen 方法绑定 6060 端口。

(三)接收请求与响应请求:

服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

http.createServer(function (request, response) {
}).listen(6060 );

当回调启动,有两个参数被传入:requestresponse 。它们是对象,可以使用它们的方法来处理 HTTP 请求的细节,并且响应请求(例如:向发出请求的浏览器发回一些东西)。

现在,在 D:\demo\node 下新建一个 server.js 文件完成一个可以工作的 HTTP 服务器,代码如下:

// 请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量
var http = require('http');
const hostname = '127.0.0.1';
const port = 6060;
// 调用 http 模块提供的函数: createServer 。这个函数会返回一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号
http.createServer(function (request, response) {
	console.log("Request received.");
    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    // 当收到请求时,使用 response.writeHead() 函数发送一个HTTP状态200和HTTP头的内容类型(content-type)
    response.writeHead(200, {'Content-Type': 'text/plain'});
    // 使用 response.write() 函数在HTTP相应主体中发送文本“response message:"
    response.write("response message:");
    // 调用 response.end() 发送响应数据 "Hello World" 完成响应
    response.end('Hello World!\n');
}).listen(port);

// 终端打印如下信息
console.log(`Server running at http://${hostname}:${port}/`);

使用 node 命令运行代码:
在这里插入图片描述

打开浏览器访问 http://localhost:6060/,可以看到页面效果如下:
在这里插入图片描述

(注意,当在服务器访问网页时,服务器可能会输出两次“Request received.”。是因为大部分服务器都会在访问 http://localhost:6060/ 时尝试读取 http://localhost:6060/favicon.ico )

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

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

相关文章

Qt+QtWebApp开发笔记(一):QtWebApp介绍、下载和搭建基础封装http轻量级服务器Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130631547 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

MySQL学习---16、触发器

1、触发器 MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。 触发器是由某个事件来触发某个操作,这些事件包括Insert、Update、Delete事件。所谓事件就是指用户的动作或者触发某项行为。如过定义了触发…

杂记——24.HTML中空格的写法

前几天写项目时,突然对HTML中空格的写法感兴趣,于是搜了一下,现在对其进行总结 HTML不是一种编程语言,而是一种超文本标记语言 (markup language),是网页制作所必备的。超文本”就是指页面内可以包含图片、链接&#…

PDF文件转换工具Solid Converter PDF 10.1版本在Win10系统的下载与安装配置教程

目录 前言一、Solid Converter PDF安装二、使用配置总结 前言 Solid Converter PDF是一种PDF文件转换工具,可以将PDF文件转换为Microsoft Word、Excel、PowerPoint等格式。它还支持批量转换和OCR(光学字符识别)功能。 Solid Converter PDF的…

NIO基础

NIO 在学习Netty之前,我们需要先了解一下NIO,以便更好的学习Netty NIO是non-blocking io,也就是非阻塞IO 1.三大组件 1.1 channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 ch…

【YOLO系列】YOLO v3(网络结构图+代码)

文章目录 网络结构YOLO v3YOLOv3-SPP 多尺度预测损失函数参考 最近在研究YOLO系列,打算写一系列的YOLO博文。在YOLO的发展史中,v1到v3算法思想逐渐完备,后续的系列也都以v3为基石,在v3的基础上进行改进,所以很有必要单…

KD600A变频抗干扰精密介质损耗测量仪

一、产品概述 KD600A变压器介质损耗测试仪是发电厂、变电站等现场自动测量各种高压电力设备介损正切值及电容量的高精度仪器。由于采用了变频技术能保证在强电场干扰下准确测量。仪器采用中文菜单操作,微机自动完成测量。 该仪器同样适用于车间、试验室、科研单位测…

映射及有关概念

映射的概念:有两个集合A,B,若A的任何元素都有唯一的B中元素与之对应,B中元素与之对应的称为像,A中对应的元素称为原像 一个集合也有像,定义为各自像的集合 B中集合也有原像,定义为各自原像的集合 虽然采用了f-1的符号&…

端口隔离、MAC地址表项、MAC地址漂移防止与检测

目录 前言 端口隔离 MAC地址表项 端口安全 MAC地址漂移检测 前言 目前网络中以太网技术的应用非常广泛。然而,各种网络攻击的存在(例如针对ARP、DHCP等协议的攻击),不仅造成了网络合法用户无法正常访问网络资源,…

【案例教程】山洪径流过程模拟及洪水危险性评价技术

GIS水文分析(ArcHydro、Spatial Anlysist等模块)是流域水文模拟建模的重要工具,能够自动提取及计算流域边界、河网水系、流向、汇流时间和其它流域特征参数。美国陆军工程兵团开发的开源、免费Hec-RAS软件具有强大的空间数据分析与整合功能、…

每日学术速递5.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.VideoChat: Chat-Centric Video Understanding 标题:VideoChat:以聊天为中心的视频理解 作者:KunChang Li, Yinan He, Yi Wang, Yizhuo Li, Wen…

计算机网络基础知识(五)——什么是TCPUDP协议?图文并茂的方式对两大传输层协议进行从头到尾的讲解

文章目录 01 | 📕 什么是 T C P ? \color{red}{什么是TCP?} 什么是TCP?📕特点三次握手 && 四次挥手超时重传滑动窗口 02 | 📙 什么是 U D P ? \color{orange}{什么是UDP?} 什…

1. 链表

b站懒猫数据结构课程笔记:https://www.bilibili.com/read/cv8013121?spm_id_from333.999.0.0 一、链表的概念 单链表:线性表的链接存储结构 单链表存储特点: 逻辑次序和物理次序不一定相同 元素之间的逻辑关系用指针表示 举例&#xff1a…

PASCAL VOC数据集

一、前言 之前寒假好像就学了,但是没有记笔记,现在看来还是得记笔记,都忘得差不多了啊。 二、数据集的介绍 2.1数据集背景 分类类别 2.2数据集文件结构: 2.3文件夹 2.3.1Annotations文件夹 对于标注文件Annotations:里…

基于SpringBoot框架的程序开发步骤

SpringBoot简介 1. 入门案例问题导入1.1 入门案例开发步骤1.2 基于SpringBoot官网创建项目1.3 SpringBoot项目快速启动 2. SpringBoot概述问题导入2.1 起步依赖2.2 辅助功能 1. 入门案例 问题导入 SpringMVC的HelloWord程序怎么写? SpringBoot是由Pivotal团队提供…

死锁、生产者和消费者问题

目录 生产者和消费者问题 死锁的概念 内存的基础知识 内存管理的概念 覆盖与交换 介绍一下PCB 连续分配管理方式​编辑 生产者和消费者问题 死锁的概念 什么是死锁 进程死锁、饥饿、死循环的区别 死锁产生的必要条件 什么时候会发生死锁 死锁的处理策略 内存的基础知识 内存…

微三云润秋带你解析商城分销系统

管理大师德鲁克曾说过:当今企业间的竞争,不是产品之间的竞争,而是商业模式之间的竞争。创业不只是项目选择重要,好的商业模式同样重要,如果没有好的商业模式,企业将会被淘汰。 今天我们要聊的这个商城就有点…

怎样设置CRM目标?有什么作用?

实施CRM系统可以帮助企业提高客户保留率,增加收入,并推动业绩增长。然而,在实施CRM系统之前,必须设定明确的目标,与企业的整体战略保持一致。在这篇文章中,我们来讨论实施CRM目标是什么,如何设定…

基于AD9172/AD9176的4 通道12.6GSPS 采样率16 位DA 播放FMC JESD204B 接口子卡模块

板卡概述 FMC_XM131 是一款4 通道12.6GSPS 采样率16 位DA 播放FMC子卡模块,该板卡为FMC标准,符合VITA57.4 规范,可以作为一个理想的IO 模块耦合至FPGA 前端,16 通道的JESD204B 接口通过FMC连接器连接至FPGA 的高速串行端…

【Python TurboGears】零基础也能轻松掌握的学习路线与参考资料

Python TurboGears是一款开源的web框架,它篮了多种Python库和工具,可以更容易地开发和维护web应用程序。TurboGears具有优秀的文档和活跃的社区支持,是学习web开发的理想选择之一。以下是Python TurboGears学习路线,参考资料和优秀…