Node.js

NodeJs

初识Node.js

JavaScript运行环境

  1. V8 引擎负责解析和执行Javascript的代码

  2. 内置API是由运行环境提供的特殊接口,只能在所属的运行环境中被调用

Node.js简介

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

  1. 浏览器是JavaScript的前端运行环境

  2. Node.js是JavaScript的后端运行环境

  3. Node.js中无法调用DOM和BOM等浏览器内置的API

Node.js环境的安装

  1. 查看已安装的node.js的版本号

    1. 代开终端,中终端输入node -v,即可查看node.js的版本号

在Node.js环境中执行JavaScript代码

  1. 代开终端

  2. 输入node要执行的js文件的路径

fs文件系统模块

  1. fs模块是node.js官方提供的,用来操作文件的模块

  2. fs.readFile()方法,来读取指定文件中的内容

  3. fs.writeFile()方法,用来指定的文件中写入内容

  4. 在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式导入

    const fs = require('fs')
  5. fs.readFile()的语法格式

    fs.readFile(path[,options],callback)
    1. 参数1:必选参数,字符串,表示文件的路径

    2. 参数2:可选参数,表示以什么编码格式来读取文件

    3. 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

    4. 判断文件是否读取成功,判断err对象是否为null

  6. fs.writeFile()的语法格式

    fs.writeFile(file,data[,options],callback)
    1. 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径

    2. 参数2:必选参数,表示要写入的内容

    3. 参数3:可选参数,表示以什么格式写入文件内容,默认值是utf8

    4. 参数4:必选参数,文件写入完成后的回调函数

    5. 判断文件是否读取成功,判断err对象是否为null

  7. fs 模块 - 路径动态拼接的问题

    1. 使用__dirname 表示当前文件的目录

path路径模块

  1. path模块是node.js官方提供的,用来处理路径的模块

  2. path.join()方法,用来讲多个路径片段拼接成一个完成的路径字符串

  3. __dirname 表示当前文件所处的目录

  4. path.basename()方法,用来从路径字符串中,将文件名解析出来

path.join([..paths])

参数:

  • ...paths<String> 路径片段的序列

  • 返回值<String>

path.basename(path[,ext])

参数:

  • path<String> 必选参数,表示一个路径的字符串

  • ext<String> 可选参数,表示文件扩展名

创建最基本的web服务器

步骤1 导入http模块

const http = require('http')

步骤2 创建web服务器实例

调用http.createServer() 方法,快速创建一个web服务器

const server = http.createServer()

步骤3 为服务器实例绑定request事件

// 使用服务器实例.on()方法,为服务器绑定一个request事件
server.on('request',(req,res)=>{
    // 只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用事件的处理函数
    console.log('Someone visit our web server');
})

步骤4 启动服务器

// 调用server.listen(端口号,cb回调)方法,即可启动web服务器
server.listen(80,()=>{
    console.log('http server running at http://127.0.0.1')
})

req请求对象

只要服务器接收到了客户端的请求,就会调用通过server.on()为服务器绑定的request事件处理函数,访问与客户端相关的数据或属性,可以用下面的方式

server.on('request',(req)=>{
    // req是请求对象,它包含了与客户端相关的数据和属性,例如
    // req.url 是客户端请求的URL地址
    // req.method 是客户端的method请求类型
    const str = `Your request url is ${req.url},and request method is ${req.method}`
    console.log(str)
})

res 响应对象

在服务器的request事件处理函数中,如果相访问与服务器相关的数据或属性,

server.on('request',(req,res)=>{
    // res是响应对象,它包含了与服务器相关的数据和属性
    // 要发送到客户端的字符串
    const str = `Your request url is ${req.url}, and request method is ${req.method}`
    // res.end() 方法的作用:
    // 向客户端发送指定的内容,并结束这次请求的处理过程
    res.end(str)
})

解决中文乱码的问题

server.on('request',(req,res)=>{
    // res是响应对象,它包含了与服务器相关的数据和属性
    // 要发送到客户端的字符串
    const str = `您请求的url地址是 ${req.url}, 请求的method类型是 ${req.method}`
    // 为了防止中文显示乱码的问题,需要设置响应头Content-Type 的值为text/html;charset=utf-8
    res.setHeader('Content-Type','text/html;charset=utf-8')
    // res.end() 方法的作用:
    // 向客户端发送指定的内容,并结束这次请求的处理过程
    res.end(str)
})

根据不同的url响应不同的html内容

核心实现步骤

  1. 获取请求的url地址

  2. 设置默认的响应内容为404 Not Found

  3. 判断用户请求的是否为/ 或 /index.html首页

  4. 判断用户请求的是否为/about.html关于页面

  5. 设置Content-Type 响应头,防止中文乱码

  6. 使用res.end()把内容响应给客户端

server.on('request',(req,res)=>{
    const url = req.url // 1.获取请求的url地址
    let content = '<h1>404 Not Found</h1>' // 2.设置默认的内容为404 Not found
    if(url === '/' || url === '/index.html'){
        content = '<h1>首页</h1>' // 3.用户请求的是首页
    }else if(url === '/about.html'){
        content = '<h1>关于页面</h1>' // 4.用户请求的是关于页面
    }
    res.setHeader('Content-Type','text/html;charset=utf-8') // 5.设置Content-Type 响应头 防止中文乱码 
    res.end(content) // 6.把内容发送给客户端
})

案例- 实现clock时钟的web服务器

实现步骤

  1. 导入需要的模块

  2. 创建基本的web服务器

  3. 将资源的请求url地址映射为文件的存放路径

  4. 读取文件内容并响应给客户端

  5. 优化资源的请求路径

步骤1 - 导入需要的模块

const http  = require('http');
const fs = require('fs');
const path = require('path')

步骤2 - 创建基本的web服务器

const http = require('http');
const server = http.createServer();
server.on('request',(req,res)=>{
    
})
server.listen(80,()=>{
    console.log('server running at http://127.0.0.1')
})

步骤3 - 将资源的请求url地址映射为文件的存放路径

// 3.1 获取客户端请求的url地址
const url = req.url
// 3.2 把请求的url地址,映射为本地文件的存放路径 
cosnt fpath = path.join(__dirname,url)

步骤4 - 读取文件的内容并响应给客户端

fs.readFile(fpath,'utf8',(err,date)=>{
    if(err){
        return res.end('404 Not Found')
    }
    res.end(date)
})

步骤5 - 优化资源的请求路径

// 5.1 预定义空白的文件存放路径
let fpath = '';
if(url === ''){
    fpath = path.join(__dirname,'./clock/index.html')
}else{
    fpath = path.join(__dirname,'./colck',url);
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值