【无标题】

本文介绍了Node.js的基础知识,包括其作为Chrome V8引擎的JavaScript运行环境,常用终端命令,如查看版本和执行文件,重点讲解了fs模块操作文件、path模块路径处理、http模块创建web服务器及模块化实践。
摘要由CSDN通过智能技术生成

Node.js 相关知识

  1. Node.js 是一个基于chrome V8 引擎的 JavaScript 运行环境
  2. Node.js 终端命令
  • node -v 查看版本
  • node 要执行的js文件 (打开js文件)
  • node
  1. fs 文件系统模块
  • 在JavaScript 代码中使用 fs 模块

    • const fs = require(‘fs’);
  • 文件路径问题

    • __ dirname 表示当前文件夹所处的路径 (双下划线)
    • __dirname + /a/b/c
  • fs.readFile(path, [ options] , callback)

  // 1.导入 fs 模块,来操作文件
  const fs = require('fs');
  
  // 2. 调用fs.readFile()方法读取文件
  //    参数1:读取文件的存放路径
  //    参数2:读取文件时采用的编码格式,默认为 (utf8)
  //    参数3:回调函数,拿到读取失败和成功的结恶果 err dataStr
  
  fs.readFile('./1.js','utf8',function(err,dataStr) {
      //判断文件是否读取成功
      if(err){
          console.log("文件读取失败",err.message)
      }else {
          console.log("文件读取成功",dataStr)    
      }
  })
  • fs.writeFile(path, data, [options], callback)
const fs = require("fs")

fs.writeFile('./text/01.txt','abc',function(err) {
    if(err) {
        return console.log("文件写入失败" + err.message);
    }else {
        console.log("文件写入成功");
    }
})

//出现路径拼接错误时可以是使用 绝对路径 
// D:\\a\\b\\c      \\js 中"\" 需要转义符

//__dirname  表示当前文件夹所处的路径 (双下划线)
//__dirname + /a/b/c

  1. path 路径模块
  • path.join()
  • path.basename(path, [ext]) ext 表示文件的扩展名
  • path.extname(path) 获取文件的扩展名
//引入path
const path = require('path') 

//注意 ../ 会抵消当前的路径
const pathStr = path.join('/a', '/b/c', '/d', 'e')
console.log(pathStr)  //  \a\b\d\e


//path.basename(path,  [ext])

//定义文件存放的路径
const fpath = '/a/b/c/index.html'

const fullName = path.basename(fpath)    // index.html
const nameWithoutExt = path.basename(fpath,'.html')  //index
  1. http 模块
//1.导入http 模块
const http = require('http')

//2.创建web 服务器实例
const server = http.createServer()

//3.为服务器实例绑定 request(事件名称) 事件,监听客户端的请求
server.on('request', (req,res) => {

    //req.url 是客户端请求的 url 地址
    const url = req.url

    //req.method 是客户端请求的 method 类型
    const method = req.method
    const str = `Your request url is ${url}, and request method is ${method}`
    const str1 = `您的请求地址是:${url}, and request method is ${method}`
    
    //调用res.setHeader()方法,设置Content-Type 响应头,解决中文乱码的问题
    res.setHeader('Content-Type','text/html; charset=utf-8')

    //调用res.end() 方法,向客户端响应一些内容,并且结束请求的处理过程
    res.end(str + str1)
})

//4.启动服务器
server.listen(8080,() => {
    console.log("server running");
})
  • 根据不同的url 响应不同的html
// 1.导入 http 模块
const http = require('http')

//2.创建一个服务器实例
const server = http.createServer()

//3.为服务器实例绑定 request 事件,监听客户端的请求
server.on('request',(req,res) => {

    //3.1 获取url地址
    const url = req.url

    //3.2 设置默认的响应内内容
    let content = '<h1>404 not found</h1>'

    //3.3 判断用户的请求
    if(url === '/' || url === '/index.html'){
        content = '<h3> 欢迎来到首页 </h3>'
    }else if (url === '/name.html') {
        content = '<h3>My name is lz</h3>'
    }

    //3.4 调用res.setHeader()方法,设置Content-Type 响应头,解决中文乱码的问题
    res.setHeader('Content-Type','text/html; charset=utf-8')

    //3.5使用 res.end 把内容响应给客户端
    res.end(content)
    
})

//4.启动服务器
server.listen(8081,() => {
    console.log("server running");
})
  1. node.js 中的模块化
  • 加载模块 require()

    • 引入require(),得到的永远是 module.exports 指向的对象
  • module.exports 对象

    • 将模块内的成员共享出去
  • exports === module.exports

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uLWXS9Gz-1659508641368)(C:\Users\liuzhao\AppData\Roaming\Typora\typora-user-images\image-20220802110221617.png)]

  1. 包 (第三方模块)
  • 安装命令 npm install 包的完整名称 //简写 npm i 包的完整名称
    • npm i 包名@版本号
  • node_modules
    • 存放所有已安装到项目的包
  • package-lock.json
    • 记录每个包的信息 ,名字、版本号、下载地址等
  • package.json
    • npm init -y 文件储存的路径必须是英文的
    • 记录包的名字和版本号
  • npm install 先读取 package.json 中的 dependencies 节点,读取到所有依赖包名称后会进行下载
  • npm uninstall 包名子
  • 淘宝npm镜像服务器 加速下载
    • npm i nrm -g
    • nrm ls
    • nrm use taobao
  • 包分类
    • npm i 包名 核心依赖包 记录到dependcies ,开发和项目上线之后都会用到
    • npm i 包名 -D 开发依赖包 记录到devDependcies ,只在开发期间用到
  • i5ting_toc
    • 将md文件装换为 html
    • npm install -g i5ting_toc
    • i5ting_toc -f 要转换的md文件路径 -o
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值