「从零开始」前端node够用指北(三)⚡---网络操作

简介: 「从零开始」前端node够用指北(三)⚡---网络操作

🎉 前言


  • 记得我第一次接触学习node的时候还是跟着菜鸟教程一个个学起来,时间过得也挺久了,平时如果没有怎么使用的话也会慢慢淡忘些许😅。
  • 当时学的时候就感觉有点迷茫,不知道学来干嘛🤯,有些公司很少需要你会node甚至不用,我相信有挺多入门选手也是这样的想法的🤧,带着这个想法我想重新学习一下node,并站在学习者的角度感同身受的分享一下这个够用指北系列,希望对大家有所帮助😆。
  • 相信大家想学习node也是为了能够自己写点数据展示一下,实现一下增删查改,本系列为了照顾新手同学会讲的比较基础,目的就是为了满足前端node够用目标。
  • 本文主要分享的是node文件操作,全文大概1800+字,阅读可能需要十分钟。具体的指北向导放在文章最下方,会持续更新喔,欢迎点赞收藏❤️❤️~


👻 NodeJS创建Web服务器


  • 用百度百科的话说:Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是ApacheNginxIIS
  • NodeJS提供了http模块可以帮组我们搭建HTTP服务端和客户端。


🚴 简单的例子

/* learnNode.js */
var http = require('http');//引入http模块
// 创建服务器
http.createServer(function (request, response) {
    response.writeHead(200, { 'Content-Type': 'text-plain' });
    response.end('Hello 小卢\n');
}).listen(8080);
复制代码
  • 我们可以通过httpcreateServer()创建一个服务器,可以接受一个requestListener请求处理函数,自动添加到request事件,函数可以传递两个参数分别是requestresponse
  • request  请求对象。
  • response   响应对象,收到请求后要做出的响应。
  • response对象的writeHead方法设置响应头,end结束响应。
  • writeHead函数在一个请求内最多只能调用一次,如果不调用,则会自动生成一个响应头
  • 在终端执行node learnNode.js就成功建立一个服务器啦,我们在网页上输入http://localhost:8080/可以看到

  • 咦怎么乱码了??那是因为我们没有给增加编码响应头,只需要在服务器加上一句response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});即可

  • 可以看到虽然我们服务器搭建起来了,但是我们对于不同的文件要设置不同的响应头,比如htmlcss等都是需要不同的响应头的。


🚴 加入html

  • 那我们来试试如何加载一个网页吧。
/* learnNode.js */
var http = require('http');//引入http模块
let fs = require("fs");// 引入 fs 模块
// 创建服务器
http.createServer(function (request, response) {
    // 获取learnHtml.html
    fs.readFile('./learnHtml.html', (error, data) => {
        if(error) {
        console.log(error);
        } else {
        response.writeHead(200, {
            "Content-Type": "text/html; charset='utf-8'"
        });
        // 读取html的信息写入文件
        response.write(data);
        // 结束响应
        response.end();
        }
    })
}).listen(8080);
复制代码
  • 这里我们也引入了上篇学到的fs模块,用来读取我们的html文件。
  • 设置请求头是htmlutf-8的,再将我们读取的数据data写入服务器响应对象中。
  • 此时文件结构是这样的。

  • 可以看到我们html也引入了一个样式文件,我们执行node learnNode.js并在浏览器输入http://localhost:8080/试试。

  • 可以看到我们的html成功加载了!!但是也没完全加载,可以看到我们的CSS样式完全没有用,这是为什么呢?原来是我们没有给对象增加css的响应头。


🚴 引入css

  • 我们引入一个html的时候可能会有css也可能会有js那我们要怎么判断什么时候用哪个响应头呢?
  • 那我们肯定不能写死了,我们要设定一个方法可以自动识别请求的文件后缀来添加对应的响应头。
/* learnNode.js */
var http = require('http');//引入http模块
let fs = require("fs");// 引入 fs 模块
let url = require("url");// 引入 url 模块
let path = require("path");// 引入 path 模块
// 创建服务器
http.createServer(function (request, response) {
    // 获取learnHtml.html
    // 获取 路径
    let pathName = url.parse(request.url).pathname;
    // console.log(pathName)
    if(pathName == '/'){
        pathName="learnHtml.html"
    }
    // 获取文件的后缀名
    let extName = path.extname(pathName);
    // console.log(extName)
    if(pathName !== '/favicon.ico'){
        fs.readFile('./learnHtml.html', (error, data) => {
            if(error) {
            console.log(error);
            } else {
            // 获取文件类型
            let type = getType(extName);
            // 设置响应头
            response.writeHead(200, {
                "Content-Type": type + "; charset='utf-8'"
            });
            // 读取html的信息写入文件
            response.write(data);
            // 结束响应
            response.end();
            }
        })
    }
}).listen(8080);
getType = (extName) => {
  switch(extName) {
    case '.html': return 'text/html';
    case '.css': return 'text/css';
    case '.js': return 'text/js';
    default: return 'text/html';
  }
}
复制代码
  • 这里我们需要用到另外两个模块urlpath模块来获取后缀名,根据后缀名来判断是什么类型再填加相应的响应头。
  • 我们可以看到先使用url.parse(request.url).pathname获取路径。
  • url.parse()方法接受一个URL字符串,解析它,然后返回一个URL对象

网络异常,图片无法展示
|

  • 打印后发现可以查询到我们请求了什么文件,但是多出来了一个/favicon.ico/,我们需要对这两个进行特殊处理,当路径为/时改成我们请求的文件,当遇到/favicon.ico时我们跳过它不进行处理。
  • 接下来使用path.extname()获取后缀名,可以获取到.css的后缀名,我们将获取到的后缀跟我们提前写好的函数进行匹配返回一个对应的响应头并在服务里面添加,这样一来我们的样式就添加上去啦。


👋 写在最后


  • 总的来说NodeJS提供了http网络模块,我们可以利用这个来创建简单的服务器。
  • 本文够用指北就到这里结束了,为了照顾新人讲的特别基础,请大佬们见谅哈~~
  • 如果您觉得这篇文章有帮助到您的的话不妨🍉关注+点赞+收藏+评论+转发🍉支持一下哟~~😛


🌅 指北向导


「从零开始」前端node够用指北(一)⚡---安装与模块

「从零开始」前端node够用指北(二)⚡---文件操作

「从零开始」前端node够用指北(三)⚡---网络操作

「从零开始」前端node够用指北(四)⚡---Express框架

「从零开始」前端node够用指北(五)⚡---连接数据库

「从零开始」前端node够用指北(六)⚡---实战之数据大屏


相关文章
|
21天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
34 0
|
3月前
|
存储 安全 JavaScript
云计算浪潮中的网络安全之舵探索Node.js中的异步编程模式
【8月更文挑战第27天】在数字化时代的风帆下,云计算如同一片广阔的海洋,承载着企业与个人的数据梦想。然而,这片海洋并非总是风平浪静。随着网络攻击的波涛汹涌,如何确保航行的安全成为了每一个船员必须面对的挑战。本文将探索云计算环境下的网络安全策略,从云服务的本质出发,深入信息安全的核心,揭示如何在云海中找到安全的灯塔。
|
2天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
21天前
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念
|
21天前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
21天前
|
Web App开发 JavaScript 前端开发
对于 前端 解释下 node.js的必要性
对于 前端 解释下 node.js的必要性
21 0
|
2月前
|
JSON 前端开发 JavaScript
socket.io即时通信前端配合Node案例
本文介绍了如何使用socket.io库在Node.js环境下实现一个简单的即时通信前端配合案例,包括了服务端和客户端的代码实现,以及如何通过socket.io进行事件的发送和监听来实现实时通信。
35 2
|
2月前
|
存储 JSON 前端开发
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
43 0
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
|
2月前
|
前端开发 JavaScript
node接收前端上传的图片,单文件、多文件同name、多文件不同name
本文介绍了在Node.js中使用multer模块接收前端上传的图片,包括单文件上传、多文件上传(同name和不同name)以及任意类型文件上传的方法。
49 0
|
3月前
|
前端开发 算法 网络协议
如何学习计算机基础知识,打好前端和网络安全的基础
如何学习计算机基础知识,打好前端和网络安全的基础
51 4