Node.js初学者指南:搭建HTTP服务器、获取请求信息及响应、变量声明与NPM包管理

精神畅快,心气平和;饮食有节,寒暖当心;起居以时,劳逸均匀

文章目录

          • node.js
          • 使用http搭建服务器的问题
          • 获取请求相关的信息
          • 响应相关的信息
          • var、let、const对比
          • npm使用
          • 全局安装包

node.js
  • 概念
    • node.js是一个基于Chrome v8引擎的Javascript运行环境
      • 浏览器是javascript的前端运行环境
      • node.js是javascript的后端运行环境
      • node.js中无法调用DOM和BOM等浏览器内置API
  • 作用
    • 基于Express框架 (http://www.expressjs.com.cn/),可以快速构建web应用
    • 基于Electron框架 (https://electronjs.org/),可以构建跨平台的桌面应用
    • 基于restify框架 (http://restify.com/),可以快速构建API接口项目
    • 读写和操作数据库,创建实用的命令行工具辅助前端开发
  • 使用
    • 使用快捷键window + R打开运行面板,输入cmd后直接回车,即可打开终端
    • 打开终端,在终端输入命令node-v后,按下回车键,即可查看已安装的node.js的版本号
    • 使用 ↑ 键,可以快速定位到上一次执行的命令
    • 使用tab键,能够快速补全路径
    • 使用esc键,能够快速清空当前已输入的命令
    • 输入cls命令,可以清空终端
  • fs文件系模块
    • 如果要在javascript代码中使用fs模块来操作文件,则需要使用如下方式先导入他
      • const fs = require('fs')
      • fs.readFile() 用来读取指定文件中的内容
      • fs.writeFile() 用来指定的文件中写入内容
      • fs.readdir() 用来读取指定目录下所有文件的名称
    • http模块:用来创建web服务器客户端的模块
      • 如果要在javascriptjavascript代码中使用http模块,则需要先导入他
        • const http = require('http')
        • http.createServer() 用来创建一个web服务器,从而对外提供web资源
        • http.request() 用来发起http网络请求,请求其它web服务器上的资源
使用http搭建服务器的问题
  • 如果代码更改了,则需要重新启动服务器,代码才会生效
    • ctrl + c,先终止服务
    • 再次执行node xxx.js重新启动服务器即可
  • vscode终端使用的问题
    在这里插入图片描述
获取请求相关的信息
server.on('request', function (req) {// req是一个对象,表示请求相关的信息,是根据http.IncomingMessage类得来的// req.method : 请求的方式 GET或POST// req.url:请求的url// req.headers:请求头console.log('请求方式是: ' + req.method + ',请求的url是:' + req.url)// console.log('请求已收到')
})
得到请求相关的信息之后,方便服务器做出判断
响应相关的信息
server.on('request', function (req, res) {// 所有和请求相关的信息,都是通过req(request:请求)对象获取的// 所有和相应相关的信息,都通过res(response:响应)来完成// console.log(res instanceof http.ServerResponse)// res.end();  用于做出响应// res.setHeader(name,value) 设置响应头// res.statusCode  设置响应状态码// res.writeHead(状态码,{响应头})// 告诉浏览器,响应的数据是什么类型,什么编码// res.setHeader('Content-Type', 'text/html;charset=utf-8')res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8','Author':'tiantian',  // 值不能用中文})res.end('hello,浏览器,你的请求我收到了,这是给你的回应')
})
var、let、const对比
  • let是声明变量的,如果一个值允许他变化,则使用let
  • 如果不希望一个标识的值呗改变,则使用const
初始值更改值重新声明变量提升块级作用域window调用
var可有可无×
let可有可无×××
const必须有××××
npm使用
  • npm这个工具,在安装node的时候,就已经安装到计算机了
  • 命令行中执行 npm -v,如果看到版本号,说明安装成功
  • 作用:管理node模块的工具
  • 初始化 (在使用npm工具之前,必须先初始化)
    • npm init -y
    • npm init
  • 安装 (下载安装第三方模块)
    • `npm install``
    • npm i 模块名
  • 更改镜像源
    • 查看镜像源 (下载包的地址) npm config getregistry
    • 全局更改镜像源 npm config setregistry
  • 下载的项目模块只能在当前项目文件夹及其后代文件夹中使用
全局安装包

在这里插入图片描述

  • 全局安装的模块,不能通过require()加载使用
  • 安装一个全局模块,名字叫nodemon
    • npm i nodemon -g
  • nodemon作用:代替node命令,启动服务的,当更改代码之后,nodemon会自动帮我们重启服务
    • 运行nodemon,如果报错如下
      在这里插入图片描述
      • 解决办法是
        • 管理员方式,打开命令行窗口
        • 执行 set-ExecutionPolicyRemoteSigned
        • 在出现的选项中,输入A,回车即可

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渗透实战 JS文件怎么利用

1.前言 关于JS在渗透测试中的关键作用,想必不用过多强调,在互联网上也有许多从JS中找到敏感信息从而拿下关键系统的案例。大部分师傅喜欢使用findsomething之类的浏览器插件,也有使用诸如Unexpected.information以及APIFinder之类的Burp插件…

QT--文本框 QLineEdit、qtextedit

在Qt中,文本框(QLineEdit 或 QTextEdit)和标签(QLabel)是两种不同的部件(widget),它们的主要区别在于用途和功能: QLabel(标签) 用途&#xff1…

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力,而在这一过程中,企业架构(EA)发挥着至关重要的作用。这本白皮书《世界级企业架构:建立和发展EA能力的领导者方法》提供了深入的理论指导,为企业如何…

专线物流公告服务平台痛点分析:重塑信任、效率与透明度的新篇章

专线物流公告服务平台痛点分析:重塑信任、效率与透明度的新篇章 在当今全球化的商业环境中,专线物流服务作为连接生产与消费的关键纽带,其重要性不言而喻。然而,随着市场竞争的加剧和消费者需求的日益多样化,专线物流…

禁止VMware Service进程开机自动启动

方法一:使用服务管理器 (Services.msc) 打开服务管理器: 按 Win R 打开运行对话框,输入 services.msc,然后按 Enter。 找到 VMware Authorization Service: 在服务列表中找到 VMware Authorization Service。 更改启动…

由云智慧发起的《数字政府统一运维 第1部分:运维平台建设指南》团标正式发布

2024年9月,由云智慧和中国信通院联合主导的《数字政府统一运维 第1部分:运维平台建设指南》团体标准完成编写,经中国互联网协会相关专家审查通过并准予发布,标准编号:T/ISC 0062-2024。 中国数字政府建设已经进入了高…

java高频面试题汇总

Java 基础 Java 中的序列化和反序列化是什么? 序列化是将 Java 对象转换为字节流的过程,以便可以将其存储在文件中或通过网络进行传输。反序列化则是将字节流恢复为 Java 对象的过程。通过实现 Serializable 接口,Java 对象可以支持序列化。…

基于Arduino的LED亮灭按键控制

一、项目简介 通过一个按键控制LED的亮灭,实现按键按一下LED点亮,再按一下LED熄灭,交替循环。 二、控制原理 1. 按键检测原理: 将Arduino的监测端口设置为输入上拉模式(INPUT_PULLUP),用于连…

Python实现文本数据可视化:构建动态词云

引言 在信息爆炸的时代,如何有效地从海量的文本数据中提取关键信息并直观展示,成为数据分析师和研究人员面临的重要挑战。词云作为一种流行的文本可视化工具,通过不同大小、颜色和字体的文字展示文本中关键词的出现频率或重要性,…

某ai gpt的bug

某ai gpt的bug 背景 遇到了一个奇怪的现象: 输入内容 2024-10-21 10:09:31,052 ERROR o.a.j.t.JMeterThread: Test failed! java.lang.IllegalArgumentException:输出结果

Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent

说在前面的话 要想获得测试覆盖率报告,第一步要做的是,采集覆盖率数据,并输入到tcp。 而本文便是介绍一种java应用程序部署下的推荐方式。 作为一种通用方案,首先不想对应用程序有所侵入,其次运维和管理方便。 正好…

动态路由:RIP实验

1.划分IP 2.配置环回 3.接口配置IP地址 4.进入RIP中,关闭手工汇总,选择版本号,宣告 5.ping命令查看是否全网通 6.在R3上配置缺省路由 [R3-rip-1]default-route originate 在边界路由器上下发缺省 7.为了安全配置手工认证 [R1-Gigab…

WordPress+Nginx 安装教程

WordPress 是一个开源的网站建设工具,可以用它来“快速”搭建个人博客,官网等等。它本身是用 php 开发的,本身部署不复杂,主要是需要一些配套的东西才能跑起来,网上的一些教程也是写的不清不楚,本文针对非 …

【宠物空气净化器选购指南】希喂、米家、IAM、352 、霍尼韦尔测评

前段时间一个朋友给我吐槽说,入了个宠物空气净化器,根本就是智商税。毛吸不进去堵在进风口不说,运行声音跟隔壁在装修似的,一开机猫就躲床底下不出来。总之,已经闲置很长一段时间了。更离谱的是,最近家里隐…

qt QGraphicsGridLayout详解

一、概述 QGraphicsGridLayout是Qt框架中用于在QGraphicsScene中布置图形项的一个布局管理器。它类似于QWidget中的QGridLayout,但主要处理的是QGraphicsItem和QGraphicsWidget等图形项。通过合理设置网格位置、伸缩因子和尺寸,可以实现复杂而灵活的布局…

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天,操作系统作为数字世界的基石,其重要性不言而喻。近日,华为公司在深圳隆重举行了原生鸿蒙操作系统发布会,向全球宣告了我国首个自主可控的移动…

追寻数组的轨迹,解开算法的情愫

公主请阅 1. 移除元素1.1 题目说明示例 1示例 2 1.2 题目分析1.3 代码部分1.4 代码分析 2. 删除有序数组中的重复项2.1 题目说明示例 1示例 3 2.2 题目分析2.3 代码部分2.4 代码分析 1. 移除元素 题目传送门 1.1 题目说明 题目描述: 给你一个数组 nums 和一个值 v…

element-时间选择器单独写两个时间选择器并按照规则进行置灰选择,精确到时分秒

项目场景&#xff1a; 要求&#xff1a; 开始时间和结束时间可以分开搜索&#xff0c;所以组件自带的时间范围选择器不适用开始时间和结束时间超过当前时间置灰不可选择开始时间不可选择结束时间之后的时间结束时间不可选择开始时间之前的时间 代码实例 <el-form-item>&…

软件质量管理体系,软件评审资料,资质认证资料,安全建设,数据安全及项目管理全套资料(原件参考)

软件项目质量管理体系是指一套系统化的管理方法、流程、工具和文档&#xff0c;旨在确保软件项目从需求分析、设计、开发、测试到部署和维护的整个生命周期中&#xff0c;都能达到预定的质量标准和客户期望。该体系通过明确的角色和责任、标准化的工作流程、有效的质量控制和持…