• 初识Node和内置模块


    初识Node与内置模块

    概述:了解Node.js,熟悉内置模块:fs模块、path模块、http模块

    初识Node.js#

    浏览器中的JavaScript运行环境#

    运行环境是指代码正常运行所需的必要环境

    • 对于Chrome浏览器运行环境=V8引擎+内置API(DOM、BOM等)
    • V8引擎负责解析和执行Js代码
    • 内置API是由运行环境提供的特殊接口,只能运行在所属的运行环境中

    JavaScript能否做后端开发?#

    也许你听到的后端开发语言大多是:Java、Python、PHP等,但其实Js也能做后端开发,虽然性能不如他们,但对于前端开发人员十分友好。

    如果我们把Js代码运行浏览器中,就可以进行前端开发;如果运行到Node.js中,就可以实现后端开发

    什么是Node.js?#

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境

    Node.js官网:http://nodejs.org/zh-cn/

    Node.js中的JavaScript运行环境#

    对于Node.js运行环境=V8引擎+内置API

    • 浏览器是Js的前端运行环境
    • Node.js是Js的后端运行环境
    • Node.js中无法调用DOM和BOM等浏览器内置API

    Node.js可以做什么?#

    很多框架和工具,都基于Node的基础功能,学会Node.js,可以“帮助前端程序员胜任更多工作”:

    • 基于Express框架,快速构建Web应用
    • 基于Electron框架,构建跨平台桌面应用
    • 基于restify框架,构建API接口项目
    • 读写和操作数据库、创建使用的命令行工具辅助开发等

    如何走Node.js这条路?#

    JavaScript基础语法——Node.js内置API模块(fs、path、http等)——第三方API模块(express、koa、egg、mysql等)

    Node.js环境安装#

    官网下载安装

    区分LST版本和Current版本:

    • LST:长期稳定版,适于追求稳定性的企业级项目
    • Current:新特性尝鲜版,适于热衷于尝试新特性的用户

    查看已安装的版本号

    //打开终端(Terminal)
    ndoe -v
    

    在Node.js中执行JavaScript代码#

    打开终端

    输入node要执行的Js文件路径

    F:\xxx\xxx\Node.js>node index.js
    

    终端中的快捷键:

    • 方向键↑:快速定位上一次命令
    • Tab:自动补全文件名
    • esc:快速清空已输入的命令
    • cls:清空终端内容

    fs文件系统模块#

    什么是fs模块?#

    fs模块是Node.js官方提供的用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

    fs.readFile()方法,读取文件内容

    fs.writeFile()方法,写入内容

    const fs=require('fs')
    

    读取指定文件中的内容#

    • 参数1:文件的存放路径
    • 参数2:读取时采用的编码格式(可选)
    • 参数3:回调函数,得到失败和成功的结果
    fs.readFile(path[,options],callback)
    
    const fs = require('fs');
    
    fs.readFile('./files/1.txt', 'utf8', function (err, dataStr) {
        console.log(err)
        console.log("------------------")
        console.log(dataStr)
    })
    

    向指定的文件中写入内容#

    • 参数1:文件的存放路径
    • 参数2:写入的内容
    • 参数3:读取时采用的编码格式(可选)
    • 参数4:回调函数,得到失败和成功的结果
    fs.writeFile(file,data[,options],callback)
    
    const fs = require('fs');
    
    fs.writeFile('./files/1.txt', 'Hello World!', function (err) {
        console.log(err)
    })
    

    路径动态拼接错误问题#

    在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径,很容易出现路径动态拼接错误问题。

    原因:代码运行时,会以node命令时所处的目录,动态拼接被操作文件的完整路径。

    解决:直接提供完整的绝对路径(移植性差,不利于维护)。

    fs.writeFile(__dirname+'/files/2.txt', newStr, function (err) {
        if (err) {
            return console.log("文件写入失败!+", err.message)
        }
        console.log("文件写入成功!")
    })
    

    path路径模块#

    什么是path模块?#

    path模块是Node.js官方提供的用来处理路径的模块,它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

    path.join()方法,将多个路径片段拼接成一个完整的路径字符串

    path.basename()方法,将路径中的文件名解析出来

    const path=require('path')
    

    路径拼接#

    path.join([...paths])
    
    const path = require('path')
    
    const pathStr = path.join('/a', '/b/c', '../', '/d', 'e') //../抵消一层
    console.log(pathStr)//\a\b\d\e
    

    获取路径中的文件名#

    • 参数1:文件的存放路径
    • 参数2:文件扩展名
    path.basename(path[,ext])
    
    const path = require('path')
    
    const fpath = './files/1.txt'
    const fullname = path.basename(fpath)
    console.log(fullname)//1.txt
    
    const nameWithoutExt = path.basename(fpath, '.txt')
    console.log(nameWithoutExt)//1
    

    获取路径中的文件扩展名#

    path.extname(path)
    

    http模块#

    什么是http模块?#

    在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。

    http模块是Node.js官方提供的用来创建Web服务器的模块的模块,通过提供的http.createServer()方法,就能把一台普通的电脑,变成一台Web服务器,从而对外提供Wbe资源。

    const http=require('http')
    

    服务器和普通电脑的区别在于:服务器上安装了Web服务器软件,例如IIS、Apache等

    再Node.js中,我们不需要使用IIS、Apache等第三方web服务器软件。因为我们可以基于Node.js的http模块,通过几行代码,手写一个服务器软件,从而对外提供web服务。

    创建最基本的web服务器#

    1. 导入http模块
    2. 创建web服务器实例
    3. 为服务器实例绑定reques时间,监听客户端请求
    4. 启动服务器
    const http = require('http')
    const server = http.createServer()
    
    server.on('request', function (req, res) {
        console.log("Someone visit our web server")
    })
    
    server.listen(8082, function () {
        console.log("Server running at http://127.0.0.1:8082")
    })
    

    req请求对象#

    访问与客户端相关的数据或属性

    const http = require('http')
    const server = http.createServer()
    
    server.on('request', req=>{
        const url=req.url//客户端请求的url地址
        const method=req.method//客户端请求的method类型
    })
    
    server.listen(8082, function () {
        console.log("Server running at http://127.0.0.1:8082")
    })
    

    res响应对象#

    访问与服务器相关的数据或属性

    const http = require('http')
    const server = http.createServer()
    
    server.on('request', (req, res) => {
        const url = req.url//客户端请求的url地址
        const method = req.method//客户端请求的method类型
        //调用res.end向客户端响应内容
        res.end("Hello World!")
    })
    
    server.listen(8082, function () {
        console.log("Server running at http://127.0.0.1:8082")
    })
    

    解决中文乱码问题#

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

    #

  • 相关阅读:
    JOSEF电流继电器 DL-33 整定范围0.5-2A 柜内安装板前接线
    CSAPP Bomb Lab
    ArcGIS 10.8软件安装包下载及安装教程
    Plex踩坑——plex web无法找到媒体服务器
    博客园商业化之路-开篇:开源的脚步,商业化的出路
    Mybatis学习笔记5 面向接口CRUD练习
    Android Qcom Sensor架构学习
    Parse [5/10/2020 7:05:04 PM] with format [yyyy-MM-dd] error!
    Python中Pandas常用函数及案例详解
    JVM 类加过程及类加载器简介
  • 原文地址:https://www.cnblogs.com/gfhcg/p/17218217.html