美文网首页nodejs学习之JavaScript学习
Node.js初探(一)——fs、path、http

Node.js初探(一)——fs、path、http

作者: 喑宝儿 | 来源:发表于2021-06-09 18:09 被阅读0次
    1、准备工作

    (1)浏览器中的JS:JS核心语法(ECMAScript)+WebAPI

    (2)为什么JS可以在浏览器中执行?

    浏览器中有JS解析引擎:每个浏览器的解析引擎都不一样,Chrome浏览器中的V8解析引擎最好。

    (3)为什么JS可以操作DOM和BOM?

    每个浏览器内置了BOM和DOM函数,浏览器中的JS才可以调用。

    (4)浏览器中的JS运行环境

    运行环境:代码正常运行所需的必要条件。浏览器也是一个运行环境,执行JS:V8引擎+内置API

    内置API:由运行环境提供的特殊的接口,只能在所属的运行环境中被调用;包括DOM+BOM+Canvas+XMLHttpRequest+JS内置对象+……

    (5)JS可以做后端开发,需要借助Node.js

    2、初识Node.js

    (1)Node.js中的JavaScript运行环境

    • 浏览器是JavaScript的前端运行环境
    • Node.js是JavaScript的后端运行环境
    • Node.js中无法调用DOM和BOM等浏览器内置API,因为Node.js是一个单独的运行环境

    (2)学习路径:JS基础语法+Node.js内置模块(fs,path,http)+第三方API模块(express, mysql)

    3、在Node.js环境中执行JS代码

    node JS代码存放路径

    4、终端中的快捷键

    ⬆️ 上次所执行的命令

    tab键 自动补全文件的路径

    ESC键 清空当前已经输入的命令

    cls 清空终端

    cd 文件夹X 切换终端到下一层文件夹X

    cd.. 切换终端到上一层文件夹

    5、fs文件系统模块(操作文件)

    (1)读取文件内容 fs.readFile(path[,options], callback)

    path:文件路径

    options:编码格式

    callback(err, dataStr):回调函数

    • err:读取时的错误信息

    • dataStr:读取到的内容

    // 导入fs模块
    const fs = require('fs')
    fs.readFile('./files/1.txt', 'utf8', (err, str) => {
        console.log(err);
        console.log(str);
    })
    
    /**
     * 如果文件读取成功,err=null,str=文件内容
     * 如果文件读取失败,err=错误对象,str=undefined
     */
    

    (2)写入文件内容 fs.writeFile(file, data[,options], callback)

    file:文件的存放路径

    data:写入的文件内容

    options:编码格式

    callback(err):回调函数

    const fs = require('fs')
    
    fs.writeFile('./files/2.txt', '0987654321', function(err) {
        console.log(err);
    })
    
    /**
     * 1、默认写入格式为utf8
     * 2、如果文件不存在,会创建新的文件并写入
     * 3、如果之前文件已存在,会使用新内容覆盖旧的内容
     * 4、写入成功:err=null
     *    写入失败:err=错误对象
     */
    

    (3)fs路径动态拼接

    在路径拼接时,默认以终端运行的目录开始拼接,为避免路径错误,因此进行动态拼接

    __dirname:当前代码文件所处的目录

    const fs = require('fs')
    // 使用__dirname拼接的路径是绝对路径,文件在哪里运行都可以正确读取到文件
    fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err, res) {
        if (err) {
            return console.log(err.message)
        }
        console.log(res);
    })
    
    6、path路径模块

    (1)path.join([...paths])

    • path.join()可以拼接多个路径,../会抵消一层路径

    • 使用path.join()拼接路径时,如果路径片段有./,会自动忽略,而使用+进行拼接时,不能识别并忽略./

    (2)path.basename(path[,ext])

    从path文件路径中,获取到文件名称,如果有ext扩展名,则获取到去掉扩展名的文件名称,扩展名要加.

    (3)path.extname(path)

    获得路径path中文件的扩展名

    7、http模块:创建web服务器

    (1)服务器相关概念

    • IP地址:互联网上每台计算机的唯一地址,每台电脑都有自己的IP地址

      • 格式:a.b.c.d a, b, c, d都是0~255之间的十进制整数

      • 自己的电脑也是一台服务器,IP地址为:127.0.0.1

    • 域名和域名服务器

      • 域名是字符型的地址方案,IP和域名是一一对应的关系,这种对应关系存在域名服务器中

      • 127.0.0.1的域名是:localhost

    • 端口号:每个Web服务都对应一个唯一的端口号,客户端发送的网络请求,通过端口号,可以准确交给对应的Web服务进行处理

      • 每个端口号不能同时被多个Web服务占用

      • 在实际应用中,URL中的80端口可以被省略

    (2)创建Web服务器

    // 1、导入http模块
    const http = require('http')
    // 2、创建Web服务器:http.createServer()
    const server = http.createServer()
    // 3、为服务器实例绑定request事件,监听客户端发送的请求:实例.on()
    server.on('request', (req, res) => {
        console.log('Someone visit our web server');
    })
    // 4、启动服务器:实例.listen()
    server.listen(80, function() {
        console.log('Server running at http://127.0.0.1');
    })
    

    (3)req请求对象:可以访问到与客户端相关的数据和属性

    (4)res响应对象:可以访问与服务器相关的数据或属性,使用res.end()进行响应

    const http = require('http')
    const server = http.createServer()
    server.on('request', (req, res) => {
        const str = `Your request url is ${req.url}, and request method is ${req.method}`
        res.end(str)
    })
    server.listen(80, () => {
        console.log('server running at http://127.0.0.1');
    })
    

    (5)解决中文乱码问题

    res.setHeader('Content-Type', 'text/html; charset=utf-8')

    (6)根据请求的URL地址,请求不同的内容

    const http = require('http')
    const server = http.createServer()
    
    server.on('request', (req, res) => {
        // 1、获取请求的URL地址
        const url = req.url
        // 2、设置默认的响应内容
        let content = '<h1>404 Not Found</h1>'
        // 3、判断用户请求的是哪一个地址
        if (url == '/' || url == '/index.html') {
            content = '<h1>首页</h1>'
        } else if (url == '/about.html') {
            content = '<h1>关于</h1>'
        }
        // 4、设置响应头,防止中文乱码
        res.setHeader('Content-Type', 'text/html;charset=utf-8')
        // 5、使用res.end()把内容响应给客户端
        res.end(content)
    })
    
    server.listen(80, () => {
        console.log('server running at http://127.0.0.1');
    })
    

    相关文章

      网友评论

        本文标题:Node.js初探(一)——fs、path、http

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