node.js--简介、特点、控制台常用指令、http模块、fs模块

这篇博客详细介绍了Node.js的基础知识,包括其作为JavaScript运行时环境的角色,利用V8引擎实现高性能,以及模块化、事件驱动和非阻塞I/O的特点。通过示例代码,讲解了如何创建HTTP服务器,使用fs模块读取文件,并发送数据到前端。此外,还提到了控制台常用指令以及npm在管理模块中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

  • Node.js是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时环境,使用事件驱动的非阻塞I/O模型,它拥有全世界最大的开源库生态系统npm
  • node.js是一个软件,它是js的代码运行环境,可以运行js代码然后实现服务器的功能
  • node 是开源的免费的环境,性能好速度快资源占用小但不安全
  • node不能操作页面 没有DOM和BOM

二、特点

(1)模块化

  •  node.js的开发是模块化开发的思想
  •  把具有一些相同功能的代码集成为一个模块:方便扩展 维护管理 更有利于开发大型项目
  •  模块主要是由:node系统自带的模块、第三方模块和自定义模块组成
  •  第三方模块几乎都是由npm来管理
  •  npm是一个集成了当前世界上最多开源库的生态系统
  •  npm社区是node.js的模块化社区 是全世界最大的模块市场 在2018或者2019被微软收购

(2)事件驱动(基于回调函数)

  •  回调函数是事件驱动的具体实现
  •  把事件添加到事件池(event loop 事件池)让异步任务去子线程中执行,然后注册一个事件 任务执行完毕以后就回到主线程执行回调函数

(3)非阻塞I/O操作模型

  •  底层c/c++是多线程  为上层js提供异步编程接口,实现CPU多核处理的优势

(4)单线程

  •  node的上层js业务代码是单线程语言
  •  node.js的主线程是程序员写的线程代码(js代码)由v8运行 但它提供的异步函数是底层c/c++在开启线程执行任务

三、控制台常用指令

1、在某个文件夹下路径上输入cmd,就会在当前的路径下运行cmd.exe

2、node xxx.js文件 用node环境去运行js文件

3、cls 清除控制台屏幕上的打印信息

4、ctrl+c 停止程序运行

5、上下键 输入过的指令历史

 四、http模块

  • var app=http.createServer((req,res)=>{}) 创建一个服务器
  • app.listen(81)  端口的意义:ip是访问计算机的标志 端口可以进入计算机的具体哪一个程序
  • res.setHeader( ' Content-Type ' , 'text/plain; charset=utf8 ')  设置编码和数据包格式
  • res.write("data") 可以多次调用 代表给前端传输数据
  • res.end()  可传输数据也可不传输,是当前这一次网络请求结束的标志,一旦执行了就断开连接
  • req.url 前端给后端发送网络请求的网址"http://ip:port"后面的部分字符串 解析url来做出不同页面的网址 和不同参数传不同数据网址

   示例:

//引入官方的http模块 这个模块可以调用函数来创建函数
var http = require("http")
//创建一个服务器 回调函数不会直接运行 会在用户每次访问当前计算机的IP下的8081端口
var app = http.createServer((req, res) => {
    //判断用户输入的网址
    if (req.url == "/index") {
        //设置数据的头部信息为html文本文档,编码为utf8
       res.setHeader(' Content-Type ', 'text/plain; charset=utf8 ')
        //持续写入数据包中
       res.write("<h1>hello</h1>")
       res.write("<h1>world</h1>")
        //最后一次写入数据包,并断开连接
        res.end("你好,世界")
    }
})
//用创建出来的服务器监听端口
app.listen(8081)

//在用户浏览器地址栏输入:http://服务器电脑的ip:8081/index 
//每当用户访问一次,后端的回调函数就会执行一次

   运行结果:

 (一)发送文字到前端

   示例:

var http = require("http")
var app = http.createServer((req, res) => {
    if (req.url == '/home') {
        res.setHeader( 'Content-Type', 'text/html; charset=utf8 ')  //防止乱码
        res.end("欢迎来到首页!")
    } else {
        res.end("not found")
    }
})
app.listen(8888)

  运行结果: 

五、fs模块

读取文件:

  • fs.readFile(path,(err,data)=>{})
  • path  填路径 可以绝对可以相对  
  • err     代表读取失败
  • data  代表读取成功  是一个buffer类型的数据(二进制数据流) 可通过toString()转化为字符串

注意: res.end()方法接受 字符串或者buffer

  示例:

//引用fs系统自带的模块 操作文件系统
var fs=require("fs")
//读取文件 无论是否访问到都会返回数据err or data
fs.readFile(("./img/rose1.jpg"),(err,data)=>{
    console.log(err,data)
})

(一)发送图片到前端

   示例:

var http=require("http")
var fs=require("fs")
var app=http.createServer((req,res)=>{
    if(req.url=="/index"){
        fs.readFile("./img/rose1.jpg",(err,data)=>{
            if(!err){
                 res.end(data)
            }else{
                res.end("出错啦")
            }
        })
    }else{
        res.end("NotFound 404")
    }
})
app.listen(8080)

   运行结果:

(二)发送网页给前端

   示例:去哪儿网实例(引入了css、图片和字体图标)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈ha~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值