Node.js学习笔记

前言

兄弟兄弟,想要独自开发做全栈吗,全栈啊!!!
如果是,那么学习nodejs ,就该是你进击全栈的必经之路!

什么是node

简介

Node.js 是一个 javascript运行环境,它让 javascript 可以开发后端程序,实现几乎其他后端语言实现的所有功能这意味着我们只需要掌握 javascript 一门语言就能够进行全栈开发!

Node.js 基于V8引擎,而V8其实是Google发布的开源JavaScript引擎,本身是用于Chrome浏览器的js解释部分,但是总有大佬不按套路
出牌,Node之父Ryan Dahl就把这个V8搬到了服务器上,用于做服务器的软件
Node.js 发布于2009年5月,经过十几年的发展,它已经成为前端中顶梁柱的存在,就算你不需要它进行服务端开发,它也存在于你开发过程中的方方面面,如前面提到的 VueReactWebpack

特性

  • Node.js 贯穿于客户端 (如 Vue 这类框架的底层依赖) 和服务端 (如后端开发)
  • Node.js 的语法完全就是 javascriptES6 的语法
  • Node.js 具有超强的高并发能力,能够实现高性能服务器
  • 开发周期短、开发成本低、学习成本低

单论后端开发,Node.js 作为 Javascript 的运行环境的性能虽不能与 Java 这类编译语言相比,但它独有的特性完全可以弥补这性能的差距,其至能够进行超越这也就是为什么它能够发展如此之快,能够受到越来越多人青睐的原因!看到这里你可能已经明白,为什么我会说 Node 是前端到全栈的必经之路!

Node环境搭建

官网下载:Node.js官网
进入官方网站,根据自己的需要去下载(建议下载稳定版本)
Node.js学习笔记_第1张图片
下载到本地,双击运行,一路 next 即可
在中端中输入如下命令:

node -v
npm -v

出现对应的版本号,即搭建完成,可以畅快体验 node
Node.js学习笔记_第2张图片

fs 文件操作模块

1. 读取文件

调用 fs.readFile 方法读取文件

  1. 参数一:读取文件的存放路径
  2. 参数二:读取文件时候采用的编码,一般默认为UTF-8
  3. 参数三:回调函数,拿到读取失败和成功的结果error,dataStr
//导入fs模块,来操作文件
const fs = require('fs')
fs.readFile('./test1.js','utf-8',(error,dataStr) => {
    console.log(error)
    console.log('-------')
    console.log(dataStr)
})

在终端进入该目录下,调用node ./test.js命令
Node.js学习笔记_第3张图片

2. 写入文件

调用 fs.writeFile 方法读取文件

  1. 参数一:写入文件的路径
  2. 参数二:要写入的数据
  3. 参数三:写入文件时候采用的编码,一般默认为UTF-8
  4. 参数四:回调函数,拿到写入失败的结果error,写入成功结果为null
fs.writeFile('./test2.js','hello node.js', 'utf-8', (error) => {
    if (error) return console.log('文件写入失败:'+error.message)
    console.log('文件写入成功')
})

同上,执行 node ./test.js 命令
若写入的目标文件不存在,则会自动创建,但不支持创建目录;若存在则会对目标文件的内容进行覆盖
在这里插入图片描述

3. fs模块小练习

考试成绩整理

目标:

整理前:
小红=99 小白=100 小黄=70 小黑=66 小绿=88

整理后:
小红:99
小白:100
小黄:70
小黑:66
小绿:88

业务逻辑代码 |

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

fs.readFile('./score.txt','utf-8',(error,dataStr) => {
    if (error) return console.log('读取成绩文件失败')
    console.log('读取文件成功')
    //对读取到的数据进行拆分,空格拆分
    let scoreList = dataStr.split(' ')
    //创建新的数组,用来保存处理后的数据
    let scoreListNew = []
    scoreList.forEach(item => {
        //用 : 替换 =
        scoreListNew.push(item.replace('=',':'))
    })
    //把列表用 换行符(\n) 拆分为一个字符串,写入文件
    fs.writeFile('./scoreNew.txt',scoreListNew.join('\n'),'utf-8',(err) => {
        if (err) return console.log('写入文件失败')
        console.log('写入文件成功')
    })
})

运行结果:
Node.js学习笔记_第4张图片
零碎芝士
__dirname 当前文件所处的路径

console.log(__dirname)
//C:\...\src\demo2

path 路径模块

  1. path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串
  2. path.basename() 方法,用来从路径字符串中,将文件名解析出来
  3. path.extname() 方法,用来获取文件的拓展名

path.join() 方法:

const fs = require('fs')
const path = require('path')
//  ../会抵消一层路径
const pathStr = path.join('/a','/b/c','../','./','/d')
console.log(pathStr)//  \a\b\d

const pathStr2 = path.join(__dirname, '../demo2/score.txt')
console.log(pathStr2)
//C:\...src\demo2\score.txt
fs.readFile(pathStr2, 'utf-8', (error, dataStr) => {
    if (error) return console.log('读取文件失败:' + error.message)
    console.log('文件读取成功:' + dataStr)
})

path.basename() 方法:

//将路径的文件名称解析出来
const pathStr3 = path.basename(pathStr2)
console.log(pathStr3)//score.txt
//将路径的文件名称解析出来,写入第二个拓展名参数,会只得到文件名
const pathStr4 = path.basename(pathStr2,'.txt')
console.log(pathStr4)//score

path.extname 方法:

//获取文件的拓展名
const pathStr5 = path.extname(pathStr2)
console.log(pathStr5)//.txt
//获取路径的文件名
const pathStr6 = path.basename(pathStr2,path.extname(pathStr2))
console.log(pathStr6)//score

path模块小练习

目标:将一个html+css+javascript的代码结构,拆分为三个模块,并引入css和javascript

匹配 标签的正则及文件内容读取和处理

const fs = require('fs')
const path = require('path')

//其中 \s表示空白符,\S表示非空白符;*表示匹配任意次
const regStyle = /','')
    //将提取出来的css样式写入到css文件里
    fs.writeFile(path.join(__dirname,'./index.css'),newCss,'utf-8',(err) => {
        if (err) return console.log('写入数据失败')
        console.log('写入数据index.css成功')
    })
}

script 处理方法

function resolveJs(htmlStr) {
    const r2 = regScript.exec(htmlStr)
    const newJs = r2[0].replace('','')
    //将提取出来的js写入到js文件里
    fs.writeFile(path.join(__dirname,'./index.js'),newJs,'utf-8',(err) => {
        if (err) return console.log('写入数据失败')
        console.log('写入数据index.js成功')
    })
}

定义处理 html 结构的方法

function resolveHtml(htmlStr) {
    // console.log(regStyle)
    // console.log(regScript)
    const newHtml = htmlStr.replace(regStyle,'').replace(regScript,'
                    
                    

你可能感兴趣的:(前端,node.js,javascript)