Node.js 第一节

一、浏览器中的 javaScript 运行环境

  1. v8 引擎负责解析和执行JavaScript 代码
  2. 内置API 是由运行环境提供得特俗接口,只能在所属得运行环境中被调用。

二、js + node.js 可以做后端开发

Node.js 是一个基于chrome V8引擎得JavaScript 运行环境

(V8引擎、浏览器内置API:dom bom ajax )

三、Node.js中的 JavaScript 运行环境

  1. 浏览器是JavaScript 的前端运行环境
  2. Node.js 是JavaScript 的后端运行环境
  3. Node.js 中无法调用DOM 和BOM 等浏览器内置API
    (v8引擎、node.js内置API:fs 、path、htttp、js内置对象 querystring)

四、Node.js + 框架

  1. 基于 express 框架 ,可以快速构建web 应用
  2. 基于 electron 框架,可以构建跨平台的桌面应用
  3. restify 框架 ,可以快速构建api接口项目

五、终端中的快捷键

  1. 上箭头键 ,可以快速定位到上一次执行的命令
  2. tab键,能够快速补全路径
  3. 使用esc 键,能够快速清空当前已输入的命令
  4. 输入cls 命令 可以清空终端。

六、fs

1. 读取文件:readFile

const fs = require('fs');
fs.readFile('./index.text','utf8',function(error,dataStr){
    console.log('error',error)
    if(error){
        console.log('读取文件失败',error)
    }else{
        console.log('读取文件成功',dataStr)
    }
})

2. 写入文件:writeFile

  • 只能创建文件,不能创建路径。
  • 重复调用该方法,只会覆盖旧数据
const fs = require('fs')
fs.writeFile('./index2.text','会吃鱼的猫',function(error,dataString){
    if(error){
        console.log('写入文件失败',error)

    }else{
        console.log('写入文件成功',dataString)

    }
})

3. 案例

const fs= require('fs')
fs.readFile('./成绩.text','utf8',function(err,dataString){
    let array = dataString.split(' ')
    let newArray = []
    array.forEach(item =>{
        newArray.push(item.replace('=',':'))
    })
    
    fs.writeFile('./成绩-ok.text',newArray.join('\r\n'),function(error,dataString1){
        if(error){
            console.log('写入文件失败',error) 
        }else{
            console.log('写入文件成功',dataString1)
        }
    })
})

七、处理路径问题

console.log(__dirname,__filename)

  • __dirname:当前文件所在目录
  • __filename:当前执行的文件所在目录

八、path 路径问题

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

fs.readFile(path.join(__dirname,'./index.text'),'utf8',function(error,dataStr){
   if(error){
       console.log('读取文件失败',error)
   }else{
       console.log('读取文件成功',dataStr)
   }
})


const npath = '/a/d/f/index.html'
const fullName1 = path.basename(npath)
console.log('fullName1',fullName1);//index.html

const fullName2 = path.basename(npath,'.html');//将文件后缀名去掉
console.log('fullName2',fullName2);//index

const fullName3 = path.extname(npath);//获取文件的扩展名(后缀)
console.log('fullName3',fullName3)

九、读取css样式、javascript脚本 、html

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content{
            color: red;
        }
    </style>
</head>
<body>
    <div class="content">你好</div>
    <script>
    function bb(){
        console.log('你是斤斤计较')
    }
    bb()

    </script>
</body>
</html>
const fs = require('fs');
const path = require('path')

/**
 * 分析文件、读取css样式、javascript脚本 、html
 */
const regStyle = /<style>[\s\S]*<\/style>/;
const regScript = /<script>[\s\S]*<\/script>/;
fs.readFile(path.join(__dirname,'./index.html'),'utf8',function(err,dataString){
    if(err){
        // console.log('读取错误',err)
    }else{
        // console.log('读取成功',dataString)
        resolveCss(dataString)
        resolveScript(dataString)
        resolveHtml(dataString)
    }
})
// 定义处理css 样式的方法
function resolveCss(htmlStr){
   let hl =  regStyle.exec(htmlStr)  
   const newCss = hl[0].replace('<style>','').replace('</style>','')
   fs.writeFile(path.join(__dirname,'./clock/index.css'),newCss,function(err){
       if(err) console.log('写入样式失败',err)
       console.log('写入样式成功')
   })
}

// 定义处理js 脚本的方法
function resolveScript(htmlStr){
    let hl =  regScript.exec(htmlStr)  
    const newJs = hl[0].replace('<script>','').replace('</script>','')
    fs.writeFile(path.join(__dirname,'./clock/index.js'),newJs,function(err){
        if(err) console.log('写入脚本失败',err)
        console.log('写入脚本成功')
    })
}
// 定义处理html 结构的方法
function resolveHtml(htmlStr){
    const newHtml = htmlStr.replace(regStyle,'<link ref="stylesheet" href="./index.css"/>').replace(regScript,'<script src="./index.js"></script>')
    fs.writeFile(path.join(__dirname,'./clock/index.html'),newHtml,function(err){
        if(err) console.log('写入html失败',err)
        console.log('写入html成功')
    })
}

posted @ 2022-04-12 09:58  会吃鱼的猫123  阅读(22)  评论(0编辑  收藏  举报