Node.js:基于Chrome V8引擎的 Javascript运行环境

浏览器中js的运行环境:前端运行环境

Nodejs中js的运行环境:后端运行环境(无法调用DOM和BOM等浏览器内置API)

 

在Node.js环境下运行JS代码:使用终端输入 node  js文件路径

 

require方法:require 是 node 用来加载并执行其它文件导出的模块的方法。

fs文件系统模块:Nodejs提供的易于操作文件的模块,用来满足用户对文件操作的需求。

使用fs模块必须先用require语句导入!

① fs.readFile():读取指定文件内容

 

readFile的回调函数参数有两个为err和dataStr,成功err为报错,dataStr为文件内容。失败err为错误对象,dataStr为undefined。

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

//调用fs.readFile方法读取文件
//参数1:文件存放路径
//参数2:读取文件的编码格式,一般是utf8
//参数3:回调函数,拿到读取失败和成功的结果:err和dataStr
fs.readFile('./files/1.txt', 'utf8', function (err, dataStr) {
    //失败结果
    console.log(err)
    //成功结果
    console.log(dataStr);
});
//读取成功err为null dataStr为文件内容
//读取失败err为错误对象 dataStr为undefined

故可以通过判断err的值是否为null,若为null则失败,反之则成功。

const fs = require('fs');

fs.readFile('./files/1.txt', 'utf8', function (err, dataStr) {
    if (err) {
        console.log('读取失败!' + err.message);
    } else {
        //如果err不报错则是null可以转化为布尔值即false
        console.log('读取成功!' + dataStr);
    }
})

 

② fs.writeFile():向指定文件写入内容(只能创建文件,不能创建路径!写入内容会覆盖旧内容!)

 

writeFile的回调函数参数只有err,若写入失败则为错误对象,成功则为null!

const fs = require('fs');

//参数1:文件存放路径
//参数2:写入内容
//参数3:回调函数
fs.writeFile('./files/2.txt', 'Hello World!', 'utf8', function (err) {
    //写入成功err值为null、写入失败则为错误对象
    console.log(err);
})

同样查看err是否为null可以检测是否成功写入文件:

const fs = require('fs')

fs.writeFile('./files/2.txt', 'Hello!', 'utf8', function (err) {
    if (err) {
        console.log('文件写入失败:' + err.message)
    } else {
        console.log('写入成功!')
    }
})

 

fs模块-路径动态拼接问题:代码运行会在node命令所处的目录动态拼接出当前操作文件的完整路径,若位置错误则会引起拼接错误。

使用绝对路径解决问题·Nodejs自带的__dirname功能:__dirname代表当前文件所处的目录。

 

 

 

path路径模块:Nodejs提供的用来处理文件路径的模块,用来满足用户对路径处理的需求。

 

 

 使用path模块也必须先用require语句导入!

① path.join():用于将多个路径片段拼接成一个完整的路径字符串。

join的参数是一系列路径判断。当出现../时会将前一位的路径抵消一位!

 

console.log(path.join('/a', '/b/c', '../', '/d'))
//输出\a\b\d

 

 

 在路径拼接时,使用path.join方法,避免使用+字符串拼接

 

② path.basename(): 用于从路径字符串中将文件名解析出来。

省略第二个参数会直接将文件名及其后缀输出:

 

const path = require('path')
const fpath = '/a/b/c/index.html'
console.log(path.basename(fpath)) // index.html
console.log(path.basename(fpath, '.html')) // index

 

 

 

③ path.extname方法:用于获取路径中扩展名部分。

 

 

例子:将一个页面的html、css、js文件分离

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

const reg1 = /<style>[\s\S]*<\/style>/
const reg2 = /<script>[\s\S]*<\/script>/


fs.readFile(path.join(__dirname, 'index.html'), 'utf8', function (err, dataStr) {
    if (err) return console.log(err.message)
    resolveCSS(dataStr)
    resolveJS(dataStr)
    resolveHTML(dataStr)
})

function resolveCSS(data) {
    let cssValue = data.match(reg1)[0]
    cssValue = cssValue.replace('<style>', '').replace('</style>', '')
    fs.writeFile(path.join(__dirname, '/index.css'), cssValue, 'utf8', err=>{
        if (err) return console.log(err.message)
        console.log('已写入index.css文件!')
    })
}

function resolveJS(data) {
    let jsValue = data.match(reg2)[0]
    jsValue = jsValue.replace('<script>', '').replace('</script>', '')
    fs.writeFile(path.join(__dirname, '/index.js'), jsValue, 'utf8', err => {
        if (err) return console.log(err.message)
        console.log('已写入index.js文件!')
    })
}

function  resolveHTML(data) {
    let htmlValue = data.replace(data.match(reg1)[0], '<link rel="stylesheet" href="index.css">').replace(data.match(reg2)[0], '<script src="index.js"></script>')
    fs.writeFile(path.join(__dirname, 'index.html'), htmlValue, 'utf8', err=>{
        if (err) return console.log(err.message)
        console.log('已成功改写index.html文件!')
    })
}

 

服务器相关概念:

 

 

http模块:Nodejs提供用于创建web服务器的模块

版权声明:本文为LWHBLOG原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LWHCoding/p/16710478.html