栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、简介
  • 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("hello")
       res.write("world")
        //最后一次写入数据包,并断开连接
        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、图片和字体图标)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030394.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号