前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs基本使用

nodejs基本使用

作者头像
隔壁老陈
发布2023-03-10 14:41:46
1.1K0
发布2023-03-10 14:41:46
举报
文章被收录于专栏:老陈笔记老陈笔记

Node.js黑马教程学习总结

# Node.js简介

  Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。

  Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。

  Node.js 的官网地址: https://nodejs.org/zh-cn (opens new window)

# Node.js可以做什么

Node.js 作为一个 JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于 Node.js 提供的这些基础能,很多强大 的工具和框架如雨后春笋,层出不穷,所以学会了 Node.js ,可以让前端程序员胜任更多的工作和岗位:

# fs 文件系统模块

导入使用:

代码语言:javascript
复制
const fs = require('fs')

# readFile()

读取指定文件中的内容

语法:

代码语言:javascript
复制
const fs = require('fs')
fs.readFile(path,option,callback)
  • path:必选参数,字符串,表示文件的读取路径
  • option:可选参数,表示以什么编码格式来读取文件
  • callback:必选参数,文件读取完成后,通过回调函数拿到读取的结果

例子:

代码语言:javascript
复制
fs.readFile('./test.txt', 'utf8', function(err, dataStr) {
  // 如果读取成功,则 err 的值为 null
  // 如果读取失败,则 err 的值为 错误对象,dataStr 的值为 undefined
  console.log(err)
  console.log('-------')
  //  打印成功的结果
  console.log(dataStr)
})

判断文件是否读取成功

代码语言:javascript
复制
const fs = require('fs')
fs.readFile('./1.txt','utf8',function(err,res){
// if(err==null){
//     return console.log('文件读取成功'+res)
// }else{
//     return console.log('文件读取失败'+err)
// }
if(err){
    return console.log('文件读取失败'+err)
}
    return console.log('文件读取成功,内容是'+res)
//    
})

# writeFile()

向指定的文件中写入内容

语法:

代码语言:javascript
复制
const fs = require('fs')
fs.writeFile(path,data,option,callback)
  • path:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
  • data:必选参数,表示要写入的内容
  • option:可选参数,表示以什么格式写入文件内容,默认值是 utf8
  • callback:必选参数,文件写入完成后的回调函数

例子:

代码语言:javascript
复制
// 1. 导入 fs 文件系统模块
const fs = require('fs')
// 2. 调用 fs.writeFile() 方法,写入文件的内容
//    参数1:表示文件的存放路径
//    参数2:表示要写入的内容
//    参数3:回调函数
fs.writeFile('./2.txt', 'ok123', function(err) {
    // 2.1 如果文件写入成功,则 err 的值等于 null
    // 2.2 如果文件写入失败,则 err 的值等于一个 错误对象
    // console.log(err)

    if (err) {
        return console.log('文件写入失败!' + err.message)
    }
    console.log('文件写入成功!')
})

  • fs.writeFile() 方法只能用来创建文件,不能用来创建路径
  • 重复调用 fs.writeFile() 写入同一个文件,新写入的内容会覆盖之前的旧内容

# path 路径模块

  path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理 需求。

导入使用:

代码语言:javascript
复制
const path = require('path')

# path.join()

用来将多个路径片段拼接成一个完整的路径字符串

语法:

代码语言:javascript
复制
path.join([...paths]) 

例子:

代码语言:javascript
复制
const path = require('path')
const fs = require('fs')

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

// fs.readFile(__dirname + '/files/1.txt')

fs.readFile(path.join(__dirname, './files/1.txt'), 'utf8', function(err, dataStr) {
  if (err) {
    return console.log(err.message)
  }
  console.log(dataStr)
})

# path.basename()

用来从路径字符串中,将文件名解析出来

语法:

代码语言:javascript
复制
path.basename(path,ext) 
  • path: 必选参数,表示一个路径的字符串
  • ext: 可选参数,表示文件扩展名
  • 返回: 表示路径中的最后一部

例子:

代码语言:javascript
复制
const path = require('path')

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

// const fullName = path.basename(fpath)
// console.log(fullName)

const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt)

# path.extname()

获取路径中的扩展名部分

例子:

代码语言:javascript
复制
const path = require('path')

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

const fext = path.extname(fpath)
console.log(fext)

时钟案例

代码语言:javascript
复制
// 1.1 导入 fs 模块
const fs = require('fs')
// 1.2 导入 path 模块
const path = require('path')

// 1.3 定义正则表达式,分别匹配 <style></style> 和 <script></script> 标签
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/

// 2.1 调用 fs.readFile() 方法读取文件
fs.readFile(path.join(__dirname, '../素材/index.html'), 'utf8', function(err, dataStr) {
  // 2.2 读取 HTML 文件失败
  if (err) return console.log('读取HTML文件失败!' + err.message)
  // 2.3 读取文件成功后,调用对应的三个方法,分别拆解出 css, js, html 文件
  resolveCSS(dataStr)
  resolveJS(dataStr)
  resolveHTML(dataStr)
})

// 3.1 定义处理 css 样式的方法
function resolveCSS(htmlStr) {
  // 3.2 使用正则提取需要的内容
  const r1 = regStyle.exec(htmlStr)
  // 3.3 将提取出来的样式字符串,进行字符串的 replace 替换操作
  const newCSS = r1[0].replace('<style>', '').replace('</style>', '')
  // 3.4 调用 fs.writeFile() 方法,将提取的样式,写入到 clock 目录中 index.css 的文件里面
  fs.writeFile(path.join(__dirname, './clock/index.css'), newCSS, function(err) {
    if (err) return console.log('写入 CSS 样式失败!' + err.message)
    console.log('写入样式文件成功!')
  })
}

// 4.1 定义处理 js 脚本的方法
function resolveJS(htmlStr) {
  // 4.2 通过正则,提取对应的 <script></script> 标签内容
  const r2 = regScript.exec(htmlStr)
  // 4.3 将提取出来的内容,做进一步的处理
  const newJS = r2[0].replace('<script>', '').replace('</script>', '')
  // 4.4 将处理的结果,写入到 clock 目录中的 index.js 文件里面
  fs.writeFile(path.join(__dirname, './clock/index.js'), newJS, function(err) {
    if (err) return console.log('写入 JavaScript 脚本失败!' + err.message)
    console.log('写入 JS 脚本成功!')
  })
}

// 5.1 定义处理 HTML 结构的方法
function resolveHTML(htmlStr) {
  // 5.2 将字符串调用 replace 方法,把内嵌的 style 和 script 标签,替换为外联的 link 和 script 标签
  const newHTML = htmlStr.replace(regStyle, '<link rel="stylesheet" href="./index.css" />').replace(regScript, '<script src="./index.js"></script>')
  // 5.3 写入 index.html 这个文件
  fs.writeFile(path.join(__dirname, './clock/index.html'), newHTML, function(err) {
    if (err) return console.log('写入 HTML 文件失败!' + err.message)
    console.log('写入 HTML 页面成功!')
  })
}

# http模块(核心)

  http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就 能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。

导入使用:

代码语言:javascript
复制
const http = require('http')

# http.createServer()

调用 http.createServer() 方法,即可快速创建一个 web 服务器实例

用法步骤:

代码语言:javascript
复制
// 1. 导入 http 模块
const http = require('http')
// 2. 创建 web 服务器实例
const server = http.createServer()
// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
  console.log('Someone visit our web server.')
})
// 4. 启动服务器
server.listen(8080, function () {  
  console.log('server running at http://127.0.0.1:8080')
})

用法实例:

① 获取请求的 url 地址 ② 设置默认的响应内容为 404 Not found ③ 判断用户请求的是否为 / 或 /index.html 首页 ④ 判断用户请求的是否为 /about.html 关于页面 ⑤ 设置 Content-Type 响应头,防止中文乱码 ⑥ 使用 res.end() 把内容响应给客户端

代码语言:javascript
复制
const http = require('http')
const server = http.createServer()

server.on('request', (req, res) => {
  // 1. 获取请求的 url 地址
  const url = req.url
  // 2. 设置默认的响应内容为 404 Not found
  let content = '<h1>404 Not found!</h1>'
  // 3. 判断用户请求的是否为 / 或 /index.html 首页
  // 4. 判断用户请求的是否为 /about.html 关于页面
  if (url === '/' || url === '/index.html') {
    content = '<h1>首页</h1>'
  } else if (url === '/about.html') {
    content = '<h1>关于页面</h1>'
  }
  // 5. 设置 Content-Type 响应头,防止中文乱码
  res.setHeader('Content-Type', 'text/html; charset=utf-8')
  // 6. 使用 res.end() 把内容响应给客户端
  res.end(content)
})

server.listen(80, () => {
  console.log('server running at http://127.0.0.1')
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-060,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # Node.js简介
  • # Node.js可以做什么
  • # fs 文件系统模块
    • # readFile()
      • # writeFile()
      • # path 路径模块
        • # path.join()
          • # path.basename()
            • # path.extname()
            • # http模块(核心)
              • # http.createServer()
              相关产品与服务
              命令行工具
              腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档