nodejs学习笔记整理

nodeJS命令

卸载全局安装模块 npm uninstall -g
查看所有全局安装的模块 npm ls -g
查看npm默认设置(部分) npm config ls
查看npm默认设置(全部) npm config ls -l

如图,可以看出全局模块默认安装在prefix目录下 C:\Users\ZjuTH\AppData\Roaming \npm

那么如何修改该路径呢?

使用命令 npm config set prefix “D:\Program Files\npm_global_modules\node_modules”

nodejs开发

概念

  • 服务端开发
    1. 实现网站的业务逻辑
    2. 数据的增删改查
  • nodejs
    • nodejs是基于chrome V8 引擎的 javascript 代码运行环境
  • 组成部分
    • nodejs组成部分: ECMAScript + node模块api
      node模块化开发

传统的js开发存在弊端

  • 文件依赖不明确

  • 命名冲突
    nodejs模块化开发

  • nodejs规定一个js文件就是一个模块,模块内部定义的变量金额函数默认情况下外部无法得到

  • 模块内部可以使用exports/module.exports导出对象成员,使用require导入对象成员
    nodejs模块的导出和导入

  • module.exports导出模块

  • require 导入模块
    node系统模块

文件模块(fs)

  • 读取文件 fs.readFile
  • 写入文件 fs.writeFile (有内容会进行替换)
  • 文件中追加内容 fs.appendFile (不会覆盖之前的内容)
  • 检测是文件还是目录 fs.stat
  • 创建目录 fs.mkdir
  • 读取文件流
  • 文件流的方式写入文件
  • 管道流 —- 从一个流中读取数据, 在写入另一个流中,用于复制大文件
    node常用第三方模块

path模块

用于拼接路径

因为不同的操作系统分隔符不统一 使用path模块可以自动识别

path.join("itcast", "a", "b")    **=> 路径 itcast/a/b
path.join(__dirname, "a.txt")    **=>__dirname 意思为当前位置的绝对路径

mime模块

用于识别文件格式

mime.getType("xxxxxxxxxxx")   // 原生node进行静态资源托管的时候识别文件类型

请求参数获取

get请求参数

参数为application/x-www-form-urlencoded格式 参数只能是application/x-www-form-urlencoded格式

//请求地址 http://localhost:3000/?username=123   x-www-form-urlencoded格式
const http = require("http")
const url = require("url")
const app = http.createServer()
app.on("request", (req, res) => {
  const { query } = url.parse(req.url, true)
  console.log(`get参数: ${query.username}`);     // 获取get参数username
  res.end("ok")
})
app.listen(3000)

post请求参数

form表单提交默认为application/x-www-form-urlencoded格式 参数可以为application/x-www-form-urlencoded、application/json、multipart/form-data(主要用于文件上传)三种格式

## post传递x-www-form-urlencoded格式的参数
const http = require("http")
const url = require("url")
const path = require("path")
const fs = require("fs")
const mime = require("mime")
const queryString = require("querystring")
const app = http.createServer()
app.on("request", (req, res) => {
  let { pathname } = url.parse(req.url, true)
  let realPath = path.join(__dirname, "public" + pathname)
  let fileType = mime.getType(realPath)
  let data = ""
  if(pathname **= "/login") {
    // post参数以流的形式传输   每次传输都会触发data事件
    req.on("data", (paramsUrl) => {
      data = data + paramsUrl
    })
    // 参数传输完毕触发end事件
    req.on("end", () => {
      let { username, password } = queryString.parse(data) 
      //使用queryString模块可以将参数转化为对象的形式
      console.log("参数username:", username);
      console.log("参数password:", password);
    })
    res.end("ok")
  } else {
    fs.readFile(realPath, (err, doc) => {
      if(!err) {
        res.writeHead(200, {
          "content-type": fileType
        })
        res.end(doc)
      }
    })
  }
})
app.listen(3000)
// post传递json格式的参数
const http = require("http")
const url = require("url")
const path = require("path")
const fs = require("fs")
const mime = require("mime")
const queryString = require("querystring")
const app = http.createServer()
app.on("request", (req, res) => {
  let { pathname } = url.parse(req.url, true)
  let realPath = path.join(__dirname, "public" + pathname)
  let fileType = mime.getType(realPath)
  let data = ""
  if(pathname **= "/login") {
    req.on("data", (paramsUrl) => {
      data = data + paramsUrl
    })
    req.on("end", () => {
      console.log("json参数", JSON.parse(data)); 
      // 传参会默认将参数转化为字符串格式, 使用JSON.parse()将json字符串转化为json对象
    })
    res.end("ok")
  } else {
    fs.readFile(realPath, (err, doc) => {
      if(!err) {
        res.writeHead(200, {
          "content-type": fileType
        })
        res.end(doc)
      }
    })
  }
})
app.listen(3000)

原生node静态资源托管

  • 原生代码
  • 封装静态网站服务器
 // 在static.js文件中
  const mime = require("mime") 
  const fs = require("fs")
  const url = require("url")
  const path = require("path")
  const static = (req, res, reqUrl) => {
    let handlePath= url.parse(reqUrl).pathname
    handlePath = handlePath **= "/" ? "/index.html": handlePath
    let realPath = path.join(__dirname, "static"+handlePath)
    const fileType = mime.getType(realPath)
    fs.readFile(realPath, (err, doc) => {
      if(!err) {
        res.writeHead(200, {
          "content-type": fileType
        })
        res.end(doc)
      }
    })
  }
  module.exports = {
    static
  }
  // 在app.js中
  const http = require("http")
  const { static } = require("./static")
  const app = http.createServer()
  app.on("request",(req, res) => {
    static(req, res, req.url)
  })
  app.listen(3000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值