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

时间:2024-10-26 12:59:08

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

文章目录

          • 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,回车即可