初始node.js Node.js是一个基于Chrome V8引擎的javaScript运行环境
Node.js的官网地址:https://nodejs.org/zh-cn/
终端中的快捷键
使用 tab键,可以能够快速补全路径
使用 esc 键,可以快速清空当前已输入的命令
使用 cls 键 ,可以清空终端
在使用node.js文件时,可以win+R 快速打开终端,运行文件
fs模块文件管理系统
异步读取方法readFile
readFile有三个参数,第一个参数是文件路径或者文件描述符,第二个参数是对象options
,有encoding
(编码,默认值为null)和flag
(标识位,默认值为 r )。也可以直接传入encoding
,通常为求简便,都是直接传入encoding,第三个参数为回调函数,函数有两个参数err
和data
。
文件写入
异步写入方法writeFile
writeFile有三个参数,
第一个参数是文件路径或者文件描述符
第二个参数是写入的数据,类型可以是String或者Buffer
第三个参数是对象options,其中有 encoding(编码,默认值为utf8)、flag(标识位,默认值为w) 和 mode(权限位,默认值为0o666)。也可以直接传入enconding,为了方便,通常只传encoding即可。
代码表示
const { log } = require('console')
const fs = require('fs')
const path=require('path')
const pathstr=path.join(__dirname,'/1.txt')//路径拼接
fs.readFile(pathstr, 'utf8', function (err, dataStr) {
// console.log(err)
if (err) {
return console.log('文件读取失败:' + err.message)
}
console.log('文件读取成功,内容为:' + dataStr)
//先把成绩的数据,按照空格进行分割
const arr = dataStr.split(' ')
console.log(arr);
//循环分割后的数组,对每一项数据,进行字符串的替换操作
const Arr = []
arr.forEach(item => {
Arr.push(item.replace('=', ': '))
})
console.log(Arr);
//把新数组中的每一项进行合并,得到一个新的字符串
const Arrstr = Arr.join('\t\n')
console.log(Arrstr);
fs.writeFile('C:/Users/Lenovo/Desktop/node/file/7.txt',Arrstr,'utf-8',function(err){
if(err){
return console.log(err.message);
}
})
})
解决中文乱码的问题
const http =require('http')
const server=http.createServer()
server.on('request',function(req,res){
const str='你请求的 URL 地址 是 ${req.url},请求的 method 类型为 $(req.method)'
res.setHeader('Content-Type','text/html;charset=utf-8')
res.end(str)
})
server.listen(80,function(){
console.log('server running at http://127.0.0.1')
})
使用这个,可以解决中文乱码的问题
res.setHeader('Content-Type','text/html;charset=utf-8')
匹配标签
使用如下代码可以将CSS html JS文件的内容分割开来
const fs = require('fs')
const path = require('path')
const style = /<style>[\s\S]*<\/style>/
const script=/<script>[\s\S]*<\/script>/
// 读取文件
fs.readFile(path.join(__dirname,'/index.html'), 'utf8' ,function(err,dataStr){
if(err){
console.log(err.message);
}
//读取文件成功后,调用对应的三个方法,分别分解出CSS JS HTML
resolveCSS(dataStr)
})
function resolveCSS(htmlStr){
const r1=style.exec(htmlStr)
const newCSS=r1[0].replace('<style>',' ').replace('</style>',' ')
fs.writeFile(path.join(__dirname,'/7.txt'),newCSS,function(err){
if(err){
console.log(err.message);
}
})
}
path路径模块
用法1:path.basename(’/目录1/目录2/文件.html’);
返回字符串: ‘文件.html’
用法2:path.basename(’/目录1/目录2/文件.html’, ‘.html’);
返回字符串: ‘文件’
const { constants } = require('buffer');
const path=require('path')
//定义文件的存放路径
const fpath='l/1.txt'
//path.basdename的后面可以加要去除的东西
//const wpath=path.basename(fpath,'.txt')
const wpath=path.basename(fpath)
console.log(wpath);
//使用path.extname来获取文件的拓展名
const p=path.extname(fpath)
console.log(p);
// \s,表示空白字符 \S表示费空白字符 *表示匹配任意次
path.dirname(path)
用法:path.dirname(’/目录1/目录2/目录3/a.js’);
返回字符串:/目录1/目录2/目录3
path.join(path)
path.join() 方法会将所有给定的 path 片段连接到一起(使用平台特定的分隔符作为定界符),然后规范化生成的路径
用法1:path.join(’/目录1’, ‘目录2’, ‘目录3/目录4’, ‘目录5’, ‘…’);
返回: ‘/目录1/目录2/目录3/目录4’
用法2:path.join(’/目录1’, ‘目录2’, ‘目录3/目录4’, ‘目录5’);
返回: ‘/目录1/目录2/目录3/目录4/目录5’
用法2:path.join();
返回: . 号表示当前工作目录
http模块
通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。在一台电脑中,可以运行很多歌 web 服务。每个 web 服务都对应一个唯一的端口号。客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的 web 服务进行处理。
http.server是一个基于事件的HTTP服务器,它提供了一套封装级别很低的API,仅仅是流控制和简单的解析,所有的高层功能都需要通过它的接口。所有的请求都被封装到独立的事件当中,我们只需要对他的事件编写相应的行数就可以实现HTTP服务器的所有功能
用法:
直接引入 require('模块名');
http模块:创建服务器
http是内置的模块,用来在node中创建一个服务器。
语法:在引入进来时不需要加路径 ,require('http');
并创建一个服务:http.createServer(); 其参数是一个函数(请求监听函数)。每此请求,该函数就调用一次
//内置http模块
const http = require('http');
//创建一个服务器
http.createServer(function(request,response){
}).listen(8990,function(err){
//该服务运行在哪个端口上,并捕获错误
})