node基础

2022/2/14 22:42:45

本文主要是介绍node基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

NodeJS

相关网址:

●https://nodejs.org/zh-cn/

●http://nodejs.cn/

Nodejs 应用场景

1.创建应用服务
2.web开发(后端)
3.接口开发(小程序)
4.客户端应用工具 webpacck,vue,react,小程序

模块化

1.核心(内置)模块

2.第三方模块

3.自定义模块

node基础操作

node -v  查看是否安装node

node 路径  运行js

两个全局变量
__dirname  当前文件所处的文件路径(绝对路径,不包含文件名)
__filename 当前文件完整路径(绝对路径,包含文件名)

path模块(重点)

步骤:
1.导入相关模块,const xxx=require("模块名/路径")
2.本模块的核心代码(业务代码)
3.导出本模块(可能不需要导出)
module.exports = {}
path模块:
作用:用于操作路径相关的

\在编程中具备转义的作用,如果要用\写成"\\"或者改成路径分隔符"/",后者是windows及Linux及mac共同的目分割符

path.dirname():获取路径中,文件或文件夹所在的目录
path.extname():获取路径中文件扩展名(带.)
path.basename():获取路径中最后的一个文件或文件夹的名字  
path.join():将多个路径描述拼接成一个完整的路径
path.join(__dirname)
path.resolve():将多个路径描述拼接成一个完整的路径   
Windows下是"盘符:\d"
Mac/Linux下是:"/d"

url类

在v16中,nodejs已经废弃了url/querystring模块,需要被URL类给替代

语法

new URL(path[,baseUrl])
path:需要被URL类解析的路径
baseUrl:主机名,如果path中已经带有域名,则baserUrl可以不写

1.URL类不是模块,不需要导入

fs模块

fs模块:操作文件的模块
其提供了两套语法来操作文件
同步语法风格(推荐)
异步语法风格

坑:fs模块在读写文件的时候路径往往是必须的,路径支持相对路径也支持绝对路径,相对路径容易出错,建议如果拿捏不准的话,采用绝对路径。在fs模块中相对路径并不是相对于当前的脚本文件,而是相对于命令行中执行脚本文件的路径来说的
const fs=require("fs")
读文件:
同步: fs.readFileSync(文件路径,{encoding:"utf-8"})
异步:fs.readFile(文件路径,字符集,回调函数)

写文件:
两种:1.覆盖写,2.追加写
如果要求换行,换行符不是<br/>,换行符是"\n"

1.覆盖写,同步:
fs.writeFileSync(文件路径,写入内容)
2.追加写,同步:
fs.appendFileSync(文件路径,写入内容)

判断文件是否存在:
fs.existsSync(文件路径)

获取文件的一些基本属性:
fs.statSync(文件路径)

删除文件:
fs.unlinkSync(文件路径)

http模块

http默认端口号80
Https默认端口号443

nodejs常用端口号

3000
8000
8080

http模块

1.nodejs中非常常用的内置模块,其作用是为了开发者创建代码的运行环境(服务器)
2.后续的vue和react中,运行环境虽然是最终基于http模块实现,但是不是直接基于,而是如下关系
express  ->  http
3.步骤:


  a.导入http模块
   const http=require("http")
  b.产生服务器实例对象
   const server = http.createServer()
  c.监听请求,并且做出响应(设置请求对应的回调处理)[监听事件]
   server.on("request",(req,res) => {
   //req:请求对象
   //req.url 获取请求路径
   //req.method: 获取请求类型 GET/POST/PUT/DELETE
   //req.header: 获取头信息
   .....
   //res:响应对象
   //res.end(文本):将文本内容输出到浏览器
   //res.statusCode = 404状态码
   //res.setHeader("Content-Type","text/html;charset=utf8"):设置响应头
   
   })
  d.监听指定的端口号
  server.listen(3000,() => {
    //当监听指定端口号成功后触发该回调函数
    console.log("server in running at http://localhost:3000")
  })

静态服务资源服务器

/**
 * 要求:使用本文件创建一个http服务器,当用户输入http://localhost:3000/1.jpg 能够访问第一张图片,当用户输入http://localhost:3000/2.jpg能够访问第二张图片,当用户输入其它地址,由于我们没有对应的文件,则输出404找不到的提示。
 * 提示今天的知识点:
 *      fs模块,http模块,path模块
 */

// 导入相关的模块
const http = require("http")
const fs = require("fs")
const path = require("path")

// 创建出服务器实例对象
const server = http.createServer()

// 设置请求的响应处理程序
server.on("request", (req, res) => {
    // 思路:
    // 1. 获取用户请求路径(req.url)
    // 2. 拼接地址
    // 3. 文件可能不存在的,此处需要判断
    //      3.1、如果文件存在,则读取文件,输出即可
    //      3.2、如果文件不存在,则暑促互404
    // 坑:现在的浏览器都会在请求的时候默认先访问/favicon.ico
    const url = req.url
    const filepath = path.join(__dirname, "static", url)
    if (url !== "/favicon.ico") {
        // 如果请求的地址不是网站的logo图标则处理(或者也可以不加这个判断,直接将图标也放到static目录下)
        console.log(filepath)
        if (fs.existsSync(filepath)) {
            // 文件存在(输出,输出效果=读取+输出)
            const data = fs.readFileSync(filepath)
            // 输出
            res.end(data)
        } else {
            // 文件可能不存在
            res.statusCode = 404
            res.end("<h1>404</h1>")
        }
    }
})

// 监听指定的端口号
server.listen(3000, () => {
    console.log("static files server is running at http://localhost:3000")
})



这篇关于node基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程