• 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来做出不同页面的网址 和不同参数传不同数据网址

       示例:

    1. //引入官方的http模块 这个模块可以调用函数来创建函数
    2. var http = require("http")
    3. //创建一个服务器 回调函数不会直接运行 会在用户每次访问当前计算机的IP下的8081端口
    4. var app = http.createServer((req, res) => {
    5. //判断用户输入的网址
    6. if (req.url == "/index") {
    7. //设置数据的头部信息为html文本文档,编码为utf8
    8. res.setHeader(' Content-Type ', 'text/plain; charset=utf8 ')
    9. //持续写入数据包中
    10. res.write("

      hello

      "
      )
    11. res.write("

      world

      "
      )
    12. //最后一次写入数据包,并断开连接
    13. res.end("你好,世界")
    14. }
    15. })
    16. //用创建出来的服务器监听端口
    17. app.listen(8081)
    18. //在用户浏览器地址栏输入:http://服务器电脑的ip:8081/index
    19. //每当用户访问一次,后端的回调函数就会执行一次

       运行结果:

     (一)发送文字到前端

       示例:

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

      运行结果: 

    五、fs模块

    读取文件:

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

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

      示例:

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

    (一)发送图片到前端

       示例:

    1. var http=require("http")
    2. var fs=require("fs")
    3. var app=http.createServer((req,res)=>{
    4. if(req.url=="/index"){
    5. fs.readFile("./img/rose1.jpg",(err,data)=>{
    6. if(!err){
    7. res.end(data)
    8. }else{
    9. res.end("出错啦")
    10. }
    11. })
    12. }else{
    13. res.end("NotFound 404")
    14. }
    15. })
    16. app.listen(8080)

       运行结果:

    (二)发送网页给前端

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

  • 相关阅读:
    C#使用proto
    双绞线连接网卡和集线器时的制作步骤
    JS中的事件循环eventloop
    java+springboot+vue水果蔬菜篮子商城经营平台系统
    零基础学Python之条件语句的使用(手把手带你做牛客网python代码练习题)
    v-model的各种使用状态和使用结果
    可以为一个servlet定义多个servlet-mapping、或url-pattern
    简单讲讲RISC-V跳转指令基于具体场景的实现
    Servlet概述及接口
    Glide4.0 Transformation大全,罗列搜集所有Transformation,实现图片的变换
  • 原文地址:https://blog.csdn.net/qq_56668869/article/details/126022225