nodejs与其模块

node

node概念

  • 官方解释: 基于 Chrome V8 的 JS 运行时环境
  • 私人解释: 就是一个 “软件”, 只不过这个软件是用来执行 js 文件
    环境: 配置在你电脑里面的一个程序, 不存在桌面图标, 依靠命令行运行

nodejs模块化

nodejs模块化共有3类
1、自定义模块
2、内置模块
3、第三方模块
经常使用内置模块和第三方模块

内置模块

fs模块

fs 模块 - file system 文件系统模块

  • 这个模块里面封装的方法都是和操作 文件 和 文件夹 相关的内容

  • node 天生自带的一个模块

  • 我们直接导入使用

readFile()=>读取文件   
	 => 语法: fs.readFile(路径, 读取格式, 回调函数)
	     -> 路径: 你要读取的文件的路径, 如果路径不存在, 会出现错误
	     -> 读取格式: 选填, 默认是 buffer(二进制数据), 我们可以选填 'utf8'
	     -> 回调函数: 读取成功以后会执行的函数
fs.readFile('./test.txt', 'utf8', function (err, data) {
      // err 就是读取失败的时候的错误信息
      // data 就是读取成功的时候的读取内容
      if (err) return console.log(err)
      console.log('读取成功')
      console.log(data)
    })
writeFile()
    => 写入文件
    => 语法: fs.writeFile(路径, 要写入的内容, 回调函数)
      -> 路径: 你要写入文件的路径, 如果路径文件不存在, 会创建一个这个文件再写入
      -> 写入的内容: 你自己定义
      -> 回调函数: 写入成功以后执行的函数, 必填
    => 注意: 完全覆盖式的写入
    
    

    fs.writeFile('./test.txt', '你好 世界', function () {
      console.log('写入完成')
    })
 appendFile()
    => 异步追加内容
    => 语法: fs.appendFile(路径, 追加的内容, 回调函数)
      -> 路径: 写入文件的路径, 没有该路径, 自己创建
      -> 追加的内容
      -> 回调函数: 必填
readdir()
    => 读取文件夹
    => 语法: fs.readdir(路径, 回调函数)
unlink()
    => 异步删除文件
    => 语法: fs.unlink(路径, 回调函数)
path模块
  • node 自带的一个内置模块
  • 里面封装的都是一些操作路径的或者和路径相关的方法
  • 使用的时候直接导入就可以了
  • const path = require(‘path’) 导入path模块
1.join()
    + 拼接相对路径
    + 语法: path.join(路径1, 路径2, 路径3, ...)
    + 返回值: 拼接好的路径结果
    + 注意:
      => 拼接规则是后一个参数是前一个参数的子级
      => 除非写 ../
  2. resolve()
    + 拼接绝对路径
    + 语法: path.resolve(路径1, 路径2, 路径3, ...)
    + 返回值: 拼接好的绝对路径
    + 注意:
      => 拼接规则是每一个参数都是相对独立的一个参数
      => 如果你写 /xx, 直接回到根目录(只有在绝对路径中或产生这种情况)
        -> xx 当前目录下
        -> ./xx 当前目录下
        -> ../xx 上一级目录
        -> /xx 根目录
  3. extname()
    + 获取文件后缀名
    + 语法: path.extname(文件名)
    + 返回值: 该文件的后缀名
  4. isAbsolute()
    + 判断路径是不是绝对路径
    + 语法: path.isAbsolute(路径)
    + 返回值: 一个布尔值
    + 路径区分:
      => 绝对路径: 从根目录开始的路径
      => 相对路径: 不是从根目录开始的路径
 - parse()
    + 解析路径信息
    + 语法: path.parse(路径)
    + 返回值: 一个对象, 里面包含该路径的所有信息
    例子:
    const res = path.parse(__filename)
    console.log(res)
    { 
        root: 'D:\\',
        dir: 'D:\\千锋好程序员三阶段\\0831\\01_代码\\03_内置模块',
        base: '02_path模块.js',
        ext: '.js',
        name: '02_path模块' 
    }
url模块
  • node 自带的一个内置模块
  • 里面封装的都是和 url 地址栏相关的方法
  • 使用的时候直接导入使用
  • const url = require(‘url’) 导入url模块
   parse()
    + 解析 url 地址的方法
    + 语法: url.parse(url 地址, 是否解析查询字符串)
      -> 地址: 要解析的地址
      -> 是否解析查询字符串: 默认是 false, 选填 true
        => 会把地址里面的查询字符串解析成一个对象的形式
    + 返回值: 是一个对象, 里面包含整个 url 地址的所有信息


const res = url.parse('http://www.guoxiang.com:8080/a/b/c/hello.html?a=100&b=200#abc', true)
console.log(res)

Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.guoxiang.com:8080',
  port: '8080',
  hostname: 'www.guoxiang.com',
  hash: '#abc',
  search: '?a=100&b=200',
  `false不解析查询字符串时:(query:'a=100&b=200')`
  query: { a: '100', b: '200' },
  pathname: '/a/b/c/hello.html',
  path: '/a/b/c/hello.html?a=100&b=200',
  href:
   'http://www.guoxiang.com:8080/a/b/c/hello.html?a=100&b=200#abc' }
http模块
  • node 内置的一个 模块
  • 主要是用来创建一个 http 服务的模块
  • 需要使用的时候直接导入使用
  • const http = require(‘http’) 导入http模块
1. createServer()
    => 创建服务的方法
    => 语法: http.createServer(function () {})
      -> 每一个请求进来的时候, 都会触发函数
    => 返回值: 一个服务
2. listen()
    => 注意: 需要使用 服务(createServer 的返回值) 来调用
    => 语法: 服务.listen(端口号, 回调函数)
      -> 端口号: 0 ~ 65535, 尽量不使用 1024 以下
    `vscode:5500 webstorm:63342 mysql:3306`
      -> 域名: 默认是本机 localhost || 127.0.0.1
    => 当 listen 执行以后
      -> 你的 命令行, 就会被变成了一个服务器
      -> 一个什么都没有的服务器
      -> 当你访问 localhost:8080 的时候, createServer 后面的函数就会执行

第三方模块

这里以一个实例来介绍第三方模块的使用

mysql 模块

  • 专门用来连接 mysql 数据库

  • 下载:npm i mysql

  • npm i -g nodemon 数据库中的服务器内容一经改变并保存后,命令提示行中会自动重启服务器。

    使用

导入数据库mysql
const mysql = require('mysql')
连接数据库

连接数据库
返回值就是连接好的模块

const db = mysql.createConnection({
  host: 'localhost', //127.0.0.1
  port: '3306',
  user: 'root',
  password: 'root',
  database: 'gp19' //操作哪一个库
})
使用db模块执行sql语句
const username = 'guoxiang'
const password = '123456'

1. db的第一种写法
db.query('SELECT * FROM `users` WHERE `username`="' + username + '"', (err, data) => {
  if (err) return console.log(err)

  console.log(data)
})

2.db的第二种写法
db.query(
  'SELECT * FROM `users` WHERE `username`=? AND `password`=?',  // ?代表暂定,用后面的数组填充这条语句中的问号(?)
  [username, password],
  (err, data) => {
    if (err) return console.log(err)

    console.log(data)
  })
关闭数据库连接
db.end()
综合在一起
const db = mysql.createPool({
  host: '127.0.0.1',
  port: 3306,
  user: 'root',
  password: 'root',
  database: 'gp19'
})

//(null,?,?)的原因是数据库中第一项为id,这里不需要插入,所以插入空(null);所以,后面的db模块中只有2个对应数据
const sql = 'INSERT INTO `users` VALUES(null, ?, ?)'
db.query(sql, ['张思锐', '123456'], (err, data) => {
  if (err) return console.log(err)
  console.log(data)
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值