Node.js基础

本文介绍了Node.js中的几个核心模块,包括http模块用于快速搭建web服务器,URL模块用于解析和格式化URL,fs模块用于文件系统的操作,以及queryString模块用于处理URL查询字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

肯定写的比较乱,以后慢慢整理吧

Node.js是一个基于 Chrome V8引擎的JavaScript 运行环境
单线程, 事件驱动非阻塞式I/O的模型,使其轻量又高效

标题

Node.js中的模块

1.http模块
可以借助http模块,快速搭建一个迷你webserver

代码:

var  http =   require("http");
http.createServer(function(req,res){
    res.end("这是一个服务")
}).listen(3000,"127.0.0.1")

需要知道以下几点:

  1. require是node.js中的引入功能
  2. createServer创建服务
  3. 创建服务中函数的参数**(req,res)** req代表请求 (收),res代表响应,(发)
  4. .listen监听服务,括号中(3000,“127.0.0.1”),3000代表端口,后边是服务器地址
  5. res.end会在页面输出括号中的内容,必须有这条res.end哪怕括号是空的,不然网页会一直转圈,无法结束

2.URL模块
引入

var   url =  require("url");

url常用API
url.parse() 将一个url字符串解析并返回一个 URL对象 {json格式}

var  http = require("http");
var  url =  require("url");
var  server =   http.createServer(function(req,res){
    // console.log(req)
    console.log(req.url);
    var urlObj = url.parse(req.url)  //url.parse  将url转化为json格式
        console.log(urlObj)
    res.end()    
})
server.listen(3000,"127.0.0.1")

url.format() 对一个URL对象进行格式化操作,返回一个URL字符串

var  http =  require("http");
var  url = require("url");

var  server =  http.createServer(function(req,res){
        var urlObj = {
            protocol:"http",
            host:"127.0.0.1:3000",
            query:{
                name:"zhouchuxiong",
                age:27
            },
            pathname:"sport",
        };
        console.log(url.format(urlObj));
        res.end()
})
server.listen(3000,"127.0.0.1")

这两个互相对应使用,需要什么格式就用什么方法

3.fs模块
fs模块是Node.js的一个核心模块,专门用来操作系统中的文件,常用的操作方式是对文件的读取和写入
var fs=require('fs')
载入fs模块,模块中所有方法都有同步和异步两种形式。异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined。异步写法demo:有一个回调函数。

fs.readFile(文件路径,options,回调函数)

功能:异步读取指定路径的文件,回调函数在读取文件完成后触发

 fs.readFile("./student.txt","utf-8",function(err,data){
       console.log(data);
       res.end(data)
 }) 

注意: function中第二个参数为文件内容,通过调用第二个参数来读取文件

fs.readFile("./img/kfc.jpg",function(err,data){
           console.log(data);
           res.end(data)
     })

同样可读取图片,或者css文件等

fs.writeFile(文件路径,写入的数据,options,回调函数)

异步的向指定路径的文件写入指定数据。回调函数在写完指定数据后触发异步写入文件.,如果文件不存在,则自动创建。可以在文件里面写入任何的数据类型,所有数据都会被隐式转换成字符串。

fs.writeFile("./index.html","<h1>开始减肥</h1>",function(err){
     res.end();
})

fs.readdir(文件路径,回调函数)

读取指定文件夹下的所有文件

  var  path = "./kfc/";
    //  可以通过顺着文件夹来找到任意的文件
    fs.readdir(path,"utf-8",function(err,files){
        console.log(files);
        fs.readFile(path+files[0],function(errar,data){
              console.log(data);
              res.end(data)
        })
    })

fs.mkdir(文件路径,回调函数)

创建指定路径的空文件夹

var http =  require("http");
var url  =  require("url");
var fs  =  require("fs");
 
http.createServer(function(req,res){
      if(req.url == "./favicon.ico"){
          return;
      }
      res.writeHead(200, {
        "Content-type":"text/html;charset=UTF-8"
      })
      //  mkdir  用来创建文件夹
      fs.mkdir("./helloWorld" ,function(err){
          s.writeFile("./helloWorld/kfc.txt","麦当劳,function (error){
              fs.readFile("./helloWorld/kfc.txt",function(err,data){
                res.end(data)
              })          
          })
      })
}).listen(3000,"127.0.0.1")

fs.rename(oldPath, newPath,function(err){

})

修改文件名称,可更改文件的存放路径。
oldPath替换成newPath

4.queryString
querystring 模块提供用于解析和格式化 URL 查询字符串的实用工具。
简单点说比如我有以下一串字符串

let str="name=wz&age=18&sex=男"

这就是url路径后边携带的参数,queryString提供方法转换他的格式

let str="name=wz&age=18&sex=男"
console.log(qs.parse(str))  //字符串转换成object格式
let obj = { name: 'wz', age: '18', sex: '男' }
let escape=qs.stringify(obj)//object格式转换成字符串

querystring.escape() 方法以对 URL 查询字符串的特定要求进行了优化的方式对给定的 str 执行 URL 百分比编码。
console.log(qs.escape(escape)) //name%3Dwz%26age%3D18%26sex%3D%25E7%2594%25B7
console.log(qs.unescape("name%3Dwz%26age%3D18%26sex%3D%25E7%2594%25B7")) //"name=wz&age=18&sex=男"

响应头

 // 设置响应头
        // 参数1:状态码
        // text/plain  表示的是纯文本
        // text/html  表示以页面的方式输出
res.writeHead(200,{
"Content-type":"text/plain;charset=UTF-8","Access-Control-Allow-Origin":"*"})

后边的这个 **“Access-Control-Allow-Origin”:"*"**用来解决ajax跨域问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值