nodejs学习之JavaScript学习

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

2021-06-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运行环境

(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)服务器相关概念

(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');
})
上一篇下一篇

猜你喜欢

热点阅读