Node.js学习笔记

文章目录

  • Node.js基础
    • 初识Node.js
      • 安装
      • node js运行js代码
    • fs 文件系统模块
      • 获得fs系统模块对象
      • 读取文件
        • 示例代码
        • 运行测试
        • 判断文件读取成功
      • 写入文件
        • 示例代码
        • 判断文件是否写入成功
        • 案例题目练习(1)
      • 演示路径问题
    • path 路径模块
      • 获得path路径模块对象
      • path.join
      • path.basename()
      • path.extname()
    • 综合案例——(拆分HTML文件)
    • http 模块
      • 获取http模块对象

Node.js基础

初识Node.js

javaScript可以做后端开发,但是要借助运行环境,node.js

安装

Node.js (nodejs.org)

Node.js学习笔记_第1张图片

查看安装成功

node -v

node js运行js代码

Node.js学习笔记_第2张图片

Node.js学习笔记_第3张图片

Node.js学习笔记_第4张图片

fs 文件系统模块

用来操作文件的模块

获得fs系统模块对象

const fs = require('fs')

读取文件

fs.readFile()

示例代码

// 1.导入fs 模块,来操作文件
const fs = require('fs');

// 2.调用 fs.readFile() 方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件的时候采用的编码格式,一般默认指定utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./file/1.txt','utf8',function (err,dataStr){
//  2.1打印失败的结果
    console.log(err)
    console.log('--------------')
//  2.2打印成功的结果
    console.log(dataStr)
})

运行测试

Node.js学习笔记_第5张图片

判断文件读取成功

// 1.导入fs 模块,来操作文件
const fs = require('fs');

// 2.调用 fs.readFile() 方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件的时候采用的编码格式,一般默认指定utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./file/1.txt','utf8',function (err,result){
    if(err){
        return console.log('文件读取失败' + err.message)
    }
    console.log('文件读取成功,内容是:' + result)
})

写入文件

fs.writeFile(file,data[,options],callback)

示例代码

//1.导入 fs 文件系统模块
const fs = require('fs')

// 2.调用 fs.writeFile()方法,写入文件的内容
// 参数1:表示文件的存放路径
// 参数2:表示要写入的内容
// 参数3:回调函数

fs.writeFile('./file/2.txt','adbc',function (err){
    // 2.1 如果文件写入成功,则 err的值等于 null
    // 2.2 如果文件写入失败,则 err的值等于一个错误对象
    console.log(err)
})

判断文件是否写入成功

//1.导入 fs 文件系统模块
const fs = require('fs')

// 2.调用 fs.writeFile()方法,写入文件的内容
// 参数1:表示文件的存放路径
// 参数2:表示要写入的内容
// 参数3:回调函数

fs.writeFile('./file/2.txt','adbc',function (err){
    // 2.1 如果文件写入成功,则 err的值等于 null
    // 2.2 如果文件写入失败,则 err的值等于一个错误对象
    // console.log(err)
    if(err){
        return console.log('文件写入失败!' + err.message)
    }
    console.log('文件写入成功!')
})

案例题目练习(1)

const fs = require('fs')

fs.readFile('./file/成绩.txt','utf8',function (err,dataStr){
//     判断读取成功
    if(err){
        return console.log('读取失败!' + err.message)
    }

    // console.log('读取文件成功:' + dataStr)
//     先把成绩的数据,按照空格进行分割
    const arrOld = dataStr.split(' ')
//     循环分割后的数组,对每一项数据,进行字符串的替换操作
    const arrNew = []
    arrOld.forEach(item => {
        arrNew.push(item.replace('=',': '))
    })
//     把新数组中的每一项,进行合并,得到一个新的字符串
    const newStr = arrNew.join('\n')
    console.log(newStr)
})

演示路径问题

const fs = require('fs')

// 出现路径拼接错误的问题,是因为提供了 ./或 ../ 开头的相对路径
// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行
// fs.readFile('./file/1.txt','utf8',function (err,dataStr){
//     if(err){
//         return console.log('读取失败' + err.message)
//     }
//     console.log('读取文件成功' + dataStr)
// })
// ****************************************************************************************
// 移植性非常差,不利于维护
// fs.readFile('E:\\gitCode\\Node_JS_Study\\file\\1.txt','utf8',function (err,dataStr){
//     if(err){
//         return console.log('读取失败' + err.message)
//     }
//     console.log('读取文件成功' + dataStr)
// })
// ****************************************************************************************
//__dirname 表示当前文件所处的目录
console.log(__dirname)  // E:\gitCode\Node_JS_Study
fs.readFile(__dirname + '/file/1.txt','utf8',function (err,dataStr){
    if(err){
        return console.log('读取失败' + err.message)
    }
    console.log('读取文件成功' + dataStr)
})

path 路径模块

获得path路径模块对象

const path = require('path)

path.join

const path = require('path')
const dir = '/usr/local';
const file = 'index.html';

const fullPath = path.join(dir, file);

console.log(fullPath) //\usr\local\index.html
//注意 ../ 会抵消前面的路径
const pathStr = path.join('/a','/b/c','../','./d','e')
console.log(pathStr)    // \a\b\d\e
//path.join会在不同操作系统中自动替换分隔符,比如windows替换为‘\’,linux替换为'/'

path.basename()

//获取扩展名的文件名
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) // index



path.extname()

// 获得扩展名部分
const path = require('path')
const fpath = '/a/b/c/index.html'

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

综合案例——(拆分HTML文件)

可以将html文件拆分为html、js、css文件

// 1.1 导入 fs 模块
const fs = require('fs')
// 1.2 导入 path 模块
const path = require('path')

// 1.3 定义正则表达式,分别匹配  标签
const regStyle = /', '')
  // // 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 通过正则,提取对应的  标签内容
  const r2 = regScript.exec(htmlStr)
  // 4.3 将提取出来的内容,做进一步的处理
  const newJS = r2[0].replace('', '')
  // 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, '').replace(regScript, '')
  // 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 模块

服务器和电脑的区别就在于——电脑中有没有安装web服务器软件

网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器

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

如果要希望使用 http 模块创建 Web 服务器,则需要先导入它:

获取http模块对象

const http = require('http')

你可能感兴趣的:(node.js,学习,javascript)