美文网首页
Node的一些基本操作

Node的一些基本操作

作者: 輪徊傷 | 来源:发表于2020-09-22 23:06 被阅读0次

源码地址: https://github.com/LBipanda/Node-basics.git

一、文件的写入和读取

文件的写入和读取

文件的写入

var fs = require("fs")

// 写文件
// 第一个参数:文件路径
// 第二个参数:文件内容
// 第三个参数:回调函数
fs.writeFile("../file/createdOne.md","大家好,给大家介绍一下,我是Node.js",function(err){
    if(err){ //判断读取文件是否错误
        console.log("文件写入失败")
    }else{
        console.log("文件写入成功")
    }
})

文件的读取

var fs = require("fs")

// 读文件
// 第一个参数:要读取的文件路径
// 第二个参数:回调函数
// 成功 data 文件写入成功;  err null;
// 失败 data 文件写入失败; err 错误对象
fs.readFile("../file/createdOne.md",function(err,data){
    // console.log(data)// <Buffer e5 a4 a7 e5 ae b6 e6 88 91 e6 98 af 4e 6f 64 65 2e 6a 73>
    // 文件中储存的都是二进制数据,为甚看到的不是 0 和 1 呢?因为自动把二进制转为十六进制了
    // 我们可以用toString()方法把其转换为我们认识的字符
    if(err){ //判断读取文件是否错误
        console.log("读取文件失败")
        return
    }
    console.log(data.toString())//大家好,给大家介绍一下,我是Node.js
})

Node 核心模块 os

// 用来获取机器信息的
var os = require("os")

// 用来操作路径的
var path = require("path")

// 获取当前机器的 CPU 信息
console.log(os.cpus())

// 获取当前机器的总内存大小 
console.log(os.totalmem())


使用 Node 构建一个简单的服务器

1.在 Node 中专门提供了一个核心模块: http
2.http 这个模块的职责专门帮你编写服务器的

//第一步、加载 http 模块
var http = require("http")

//第二步、 使用 http.createServer() 方法创建一个 web 服务器
var server = http.createServer()

//第三步、 注册 request 请求事件
// 当客户端请求过来,就会自动触发服务器的 request 事件,然后执行第二参数:回调处理函数
// request 请求事件处理函数,需要接收两个参数(request,response)
// request:请求对象(请求对象可以用来获取客户端的一些请求信息,例如请求路径)
// response:响应对象(响应对象可以用来给客户端发送响应信息)
server.on("request",function(request,response){
    console.log("收到客户端请求了,请求路径是"+request.url)

    //response 有一个方法:write 可以用来给客户端发送响应数据
    // write 可以使用多次,但是最后一定要使用 end 来结束响应,否则客户端会一直等待
    //一般的话我们会使用 end 发送响应数据
    response.write("hello")
    response.write("node.js")
    //告诉客户端,服务器响应结束了
   //   response.end()

    // 这个简单的服务器的能力非常弱,无论什么请求,都只能响应 hello node.js
    // 升级: 我希望当请求的路径不一样的时候,响应的结果也不一样
    // 例如:/  /login(登陆) /product(产品)这几个页面的返回不同的响应数据
    // 根据 url 响应不同的数据
    // 响应内容只能是二进制数据或者二字符串
    var url = request.url
    if(url === "/"){
        response.end("index pages")
    }else if(url === "/login"){
        response.end("login pages")
    }else if(url === "/product"){
        var goods = [
            {
                name: "苹果",
                price: 1111
            },
            {
                name: "梨子",
                price: 2222
            }
        ]
      // 在服务器默认发送的数据,都是 utf8 编码内容,但是游览器不知道是 utf8 的内容
      // 游览器会默认按章当前操作系统的编码去解析(中文操作系统默认是 gbk)
      //有中文字符所以 游览器显示的是乱码,我们可以通过 Content-Type 告诉游览器相应的内容是什么类型
        response.end(JSON.stringify(goods))//乱码

      // text/plain 就是普通文本
      // res.setHeader("Content-Type","text/plain;charset=utf-8")
      // res.end("hello 世界") //正常显示

      // 如果发送的是 html 格式的字符串,也要告诉游览器游览器响应的是 text/html 格式的内容
      // res.setHeader("Content-Type","text/html;charset=utf-8")
      // res.end("<h1>你好 Node</h1>") //正常显示
    }else{
        response.end("404 Not Fount")
    }
})

// 第四步、绑定端口号,启动服务器
server.listen(3333, function(){
    console.log('服务器启动成功了,可以通过 localhost:3333 进行访问')
})

http 本地服务器结合 fs 发送文件中的数据

// 2. Conyent-Type: 不同的资源对应的 Conyent-Type 是不一样的
//    图片不需要指定编码,一般只有四度数据才指定编码

var http = require("http")
var fs = require("fs")

var server = http.createServer()

server.on("request",function(req,res){
    if(req.url == "/"){
        fs.readFile("./resource/index.html",function(err,data){
            if(err){
                res.setHeader("Content-Type","text/plain;charset=utf-8")
                res.end("文件读取失败,请稍后重试")
            }else{
                res.setHeader("Content-Type","text/html;charset=utf-8")
                res.end(data)
            }
        })
    }else if(req.url == "/img"){
        // url: 用以资源定位符
        fs.readFile("./resource/a.jpg",function(err,data){//读取的文件目录
            if(err){
                res.setHeader("Content-Type","text/plain;charset=utf-8")
                res.end("文件读取失败,请稍后重试")
            }else{
                res.setHeader("Content-Type","image/jpeg")
                res.end(data)
            }
        })
    }
})

server.listen(4000,function(){
    console.log("服务器启动成功了,可以进行访问了")
})

相关文章

网友评论

      本文标题:Node的一些基本操作

      本文链接:https://www.haomeiwen.com/subject/oudfektx.html