node.js 学习入门(04 - http 模块创建基本的web服务器)

简介: node.js 学习入门(04 - http 模块创建基本的web服务器)

什么是 web 服务器?

当应用程序(客户端)需要某一个资源时,可以向一个台服务器,通过Http请求获取到这个资源;提供资源的这个服务器,就是一个Web服务器;

目前有很多开源的Web服务器:Nginx、Apache(静态)、Apache Tomcat(静态、动态)、Node.js

使用 http 创建基本的web服务器

可以在终端中使用 node 地址 来运行

// 1. 导入 http 模块
const http = require('http')
// 2. 创建 web 服务器实例
const server = http.createServer()
// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
    console.log("Someone visit our web serve.")
})
// 4. 启动服务器
server.listen(80, function () {
    // 80 可以省略,其他的不可以
    console.log("server running ar http://127.0.1:80")
})

了解req请求对象

const http = require('http')
const server = http.createServer()
// req 是请求对象,保护了与客户端相关的数据和属性
server.on('request', (req,res) => {
    // req.url 是客户端请求的 URL 地址
    const url = req.url
    // req.method 是客户端请求的 method 类型(get/post)
    const method = req.method
    const str = `Your request url is ${url}, and request method is ${method}`
    // console.log(str)
    // 调用 res.end() 方法,向客户端响应一些内容
    res.end(str)
})
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

解决中文乱码的问题

const http = require('http')
const server = http.createServer()
server.on('request', (req,res) => {
    // req.url 是客户端请求的 URL 地址
    const url = req.url
    // req.method 是客户端请求的 method 类型(get/post)
    const method = req.method
    // 定义一个字符串,包含中文的内容
    const str = `你请求的 url 地址是 ${url},请求的 method 类型是 ${method}`
    // 为了解决中文显示乱码的问题,需要设置响应头 Content-Type 的值为 text/html; charset=utf-8
    res.setHeader('Content-Type','text/html; charset=utf-8')
    // console.log(str)
    // 调用 res.end() 方法,向客户端响应一些内容
    res.end(str)
})
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

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

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

web服务器案例

自己找一个 html 文件放在 clock 文件夹下,在 5.2 步骤处引入

// 1.1 导入 http 模块
const http = require('http')
// 1.2 导入 fs 模块
const fs = require('fs')
// 1.3 导入 path 模块
const path = require('path')
// 2.1 创建 web 服务器
const server = http.createServer()
// 2.2 监听 web 服务器的 request 事件
server.on('request', (req,res) => {
    // 3.1 获取到客户端请求的 url 地址
    const url = req.url
    // 3.2 把请求的 url 地址映射为具体文件的存放路径
    // const fpath = path.join(__dirname,url)
    // 5.1 预定义一个空白的文件存放路径
    let fpath = ''
    if (url === '/') {
        // 5.2 如果请求的路径为 /,则手动指定文件的存放路径
        // 自己找一个 html 文件放在 clock 文件夹下
        fpath = path.join(__dirname,'./clock/index.html')
    } else {
        // 5.3 如果请求的路径不为 /,则动态拼接文件的存放路径
        fpath = path.join(__dirname,'/wsh',url)
    }
    // 4.1 根据”映射“过滤的文件路径读取文件的内容
    fs.readFile(fpath, "utf8", (err,data) => {
        // 4.2 读取失败,向客户端响应固定的“错误信息”
        if (err) return res.end("404 Not found.")
        // 4.3 设置 Content-Type 响应头,防止中文乱码
        // res.setHeader('Content-Type','text/html; charset=utf-8')
        // 4.4 读取成功,将读取成功的内容,响应给客户端
        res.end(data)
    })
})
// 2.3 启动服务器
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

以上就是 node.js 中 使用 http 创建基本 web 服务器的功能,不懂得也可以在评论区里问我,以后会持续发布一些新的功能,敬请关注。

相关文章
|
4月前
|
开发框架 JavaScript 前端开发
使用 Node.js 和 Express 构建 Web 应用
【10月更文挑战第2天】使用 Node.js 和 Express 构建 Web 应用
|
4月前
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
141 62
|
3月前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
3月前
|
机器学习/深度学习 人工智能 JavaScript
JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景
本文探讨了JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景。JavaScript将注重性能优化、跨平台开发、AI融合及WebAssembly整合;TypeScript则强调与框架整合、强类型检查、前端工程化及WebAssembly的深度结合。两者结合发展,特别是在Vue 3.0中完全采用TypeScript编写,预示着未来的Web开发将更加高效、可靠。
84 4
|
3月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
57 2
|
4月前
|
XML JavaScript 前端开发
JavaScript控制台:提升Web开发技能的秘密武器
作为Web开发人员,掌握JavaScript控制台中的各种方法至关重要。本文介绍了22种实用的console方法,从基本的log()到高级的profile()和memory,每种方法都配有示例和说明,帮助开发者更高效地调试和记录信息。通过了解这些工具,您可以优化代码、提高开发速度,减少错误,使编码过程更加顺畅愉快。
57 1
JavaScript控制台:提升Web开发技能的秘密武器
|
3月前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
117 0
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
3月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
56 4
|
4月前
|
设计模式 JavaScript 前端开发
浅谈JavaScript 框架在现代 Web 开发中的作用
浅谈JavaScript 框架在现代 Web 开发中的作用
59 12
|
4月前
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
57 1