初识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')

#

posted @   辜负寒彻骨  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
  1. 1 逝年 夏小虎
逝年 - 夏小虎
00:00 / 00:00
An audio error has occurred.

作词 : 刁云逸

作曲 : 夏小虎

风里飘雪的花

在记忆之中发芽

那些红色绿色

我们的青春年华

志向无限远大

转眼已各奔天涯

独自走在街上

只看见曾经的晚霞

时间似流水

催促我们长大

年轻的心有了白发

当初的人呐

你们如今在哪

是否也在寻找梦的家

风里飘雪的花

在记忆之中发芽

那些红色绿色

我们的青春年华

志向无限远大

转眼已各奔天涯

独自走在街上

只看见曾经的晚霞

时间似流水

催促我们长大

年轻的心有了白发

当初的人呐

你们如今在哪

是否也在寻找梦的家

时间似流水

催促我们长大

年轻的心有了白发

当初的人呐

你们如今在哪

是否也在寻找梦的家

点击右上角即可分享
微信分享提示
主题色彩