Node.js入门

01.什么是 Node.js

目标

什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码

讲解

  1. Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端的应用程序

  2. Node.js 作用除了编写后端应用程序,也可以对前端代码进行压缩,转译,整合等等,提高前端开发和运行效率

  3. Node.js 基于Chrome V8 引擎封装,独立执行 JS 代码,但是语法和浏览器环境的 V8 有所不同,没有 document 和 window 但是都支持 ECMAScript 标准的代码语法

  4. 想要得到 Node.js 需要把这个软件安装到电脑,在素材里有安装程序(window 和 mac 环境的)参考 PPT 默认下一步安装即可

  5. Node.js 没有图形化界面,需要使用 cmd 终端命令行(利用一些命令来操控电脑执行某些程序软件)输入,node -v 检查是否安装成功

  6. Node.js 执行目标 JS 文件,需要使用 node xxx.js 命令来执行(我们可以借助 VSCode 集成终端使用,好处:可以快速切换到目标 JS 文件所在终端目录,利用相对路径找到要执行的目标 JS 文件

  7. Node.js 有什么用?

编写后端程序,提供数据和网页资源,还可以作为前端工程化的工具,翻译压缩整合代码等,提高开发效率

  1. Node.js 为何能执行 JS 代码?

基于 Chrome 的 V8 引擎封装

  1. Node.js 与浏览器环境的 JS 最大区别?

Node.js 环境中没有 BOM 和 DOM,但是也用 JS 语法

  1. Node.js 如何执行代码?

在 VSCode 终端中输入:node xxx.js 回车即可执行(注意路径)

02.fs模块-读写文件

讲解

  1. 模块:类似插件,封装了方法和属性供我们使用

  2. fs 模块:封装了与本机文件系统进行交互的,方法和属性

  3. fs 模块使用语法如下:

    • 加载 fs 模块,得到 fs 对象

      const fs = require('fs')
      
    • 写入文件内容语法:

      fs.writeFile('文件路径', '写入内容', err => {
        // 写入后的回调函数
      })
      
    • 读取文件内容的语法:

      fs.readFile('文件路径', (err, data) => {
        // 读取后的回调函数
        // data 是文件内容的 Buffer 数据流
      })
      
  4. 需求:向 test.txt 文件写入内容并读取打印

    /**
     * 目标:使用 fs 模块,读写文件内容
     * 语法:
     * 1. 引入 fs 模块
     * 2. 调用 writeFile 写入内容
     * 3. 调用 readFile  读取内容
     */// 1. 引入 fs 模块const fs = require('fs')
    // 2. 调用 writeFile 写入内容// 注意:建议写入字符串内容,会覆盖目标文件所有内容
    fs.writeFile('./text.txt', '欢迎使用 fs 模块读写文件内容', err => {
      if (err) console.log(err)
      else console.log('写入成功')
    })
    // 3. 调用 readFile  读取内容
    fs.readFile('./text.txt', (err, data) => {
      if (err) console.log(err)
      else console.log(data.toString()) // 把 Buffer 数据流转成字符串类型
    })
    

小结

  1. 什么是模块?

类似插件,封装了方法和属性

  1. fs 模块的作用?

读写本机文件内容

03.path模块-路径处理

讲解

  1. 为什么在 Node.js 待执行的 JS 代码中要用绝对路径:

    Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相对路径,而不是以我们认为的从代码本身出发,会遇到问题,所以在 Node.js 要执行的代码中,访问其他文件,建议使用绝对路径

  2. 新建 03 文件夹编写待执行的 JS 代码,访问外层相对路径下的文件,<span style="color: red;">然后在最外层终端路径来执行目标文件,造成问题


  • 问题原因:就是从代码文件夹出发,使用 ../text.txt解析路径,找不到目标文件,报错了!
  • 解决方案:使用模块内置变量 __dirname配合 path.join() 来得到绝对路径使用
    const fs = require('fs')
    console.log(__dirname) // D:\备课代码\2_node_3天\Node_代码\Day01_Node.js入门\代码\03
    
    // 1. 加载 path 模块const path = require('path')
    // 2. 使用 path.join() 来拼接路径const pathStr = path.join(__dirname, '..', 'text.txt')
    console.log(pathStr)
    
    fs.readFile(pathStr, (err, data) => {
      if (err) console.log(err)
      else console.log(data.toString())
    })
    
  • 再次执行查看问题就被修复了!以后在 Node.js 要执行的 JS 代码中访问其他文件的路径,都建议使用绝度路径

小结

  1. path.join() 方法有什么用?

按照所在本机系统的分隔符作为定界符来链接你传入的路径

  1. __dirname 模块内置变量的值是多少?

动态获取当前文件所在文件夹的绝对路径

04.认识URL中的端口号

讲解

  1. URL 是统一资源定位符,简称网址,用于访问网络上的资源
  2. 端口号的作用:标记服务器里对应的服务程序,值为(0-65535 之间的任意整数)
  3. 注意:http 协议,默认访问的是 80 端口
  4. Web服务:一个程序,用于提供网上信息浏览功能
  5. 注意:0-1023 和一些特定的端口号被占用,我们自己编写服务程序请避开使用

小结

  1. 端口号的作用?

标记区分服务器里不同的服务程序

  1. 什么是 Web 服务?

提供网上信息浏览的服务的一个程序

06.http模块-创建Web服务

讲解

  1. 需求:引入 http 模块,使用相关语法,创建 Web 服务程序,响应返回给请求方一句提示 ‘hello,world’

  2. 步骤:

    1. 引入 http 模块,创建 Web 服务对象
    2. 监听 request 请求事件,对本次请求,做一些响应处理
    3. 启动 Web 服务监听对应端口号
    4. 运行本服务在终端进程中,用浏览器发起请求
  3. 注意:本机的域名叫做 localhost

  4. 代码如下:

    /**
     * 目标:基于 http 模块创建 Web 服务程序
     *  1.1 加载 http 模块,创建 Web 服务对象
     *  1.2 监听 request 请求事件,设置响应头和响应体
     *  1.3 配置端口号并启动 Web 服务
     *  1.4 浏览器请求(http://localhost:3000)测试
     */// 1.1 加载 http 模块,创建 Web 服务对象const http = require('http')
    const server = http.createServer()
    // 1.2 监听 request 请求事件,设置响应头和响应体
    server.on('request', (req, res) => {
      // 设置响应头-内容类型-普通文本以及中文编码格式
      res.setHeader('Content-Type', 'text/plain;charset=utf-8')
      // 设置响应体内容,结束本次请求与响应
      res.end('欢迎使用 Node.js 和 http 模块创建的 Web 服务')
    })
    // 1.3 配置端口号并启动 Web 服务
    server.listen(3000, () => {
      console.log('Web 服务启动成功了')
    })
    

小结

  1. 如何访问本机里运行的 Web 服务?

http://localhost:Web服务的端口号/资源路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值