一. 什么是node.js
html, 骨架 css, 样式 js, 交互的行为 浏览器中的javascript由几部分组成 js核心语法 webapi(DOM操作, BOM操作, AJAX操作)
思考: 为什么javascript可以在浏览器中被执行 .因为有解析引擎 思考: 为什么说, javascript可以操作Dom和Bom 待执行的js代码调用webAPI, 交给解析引擎, (每个浏览器都内置了操作DOM和BOM的函数)
什么是js代码的运行环境 浏览器->v8引擎->内置的函数
node.js就是一个基于谷歌浏览器v8引擎的js代码的运行环境
二. 可以用node.js来做什么
注意, node.js不能直接调用浏览器的内置API,
那么node,js有, 可以做做什么呢
三. node.js中javascript的组成部分
有内置模块, 有第三方模块
node -V: 查看node.js的版本 node js文件的路径: 运行文件也就是执行代码
四. node.js中的三个内置模块
4.1 fs模块读写操作文件
fs.readFile()方法; 用来读取指定文件中的内容 fs.writeFile()方法: 用来向指定的文件中写入内容
要先导入这个模块, const fs = require(‘fs’)
fs从哪里来, 安装node.js时, 安装的内置API, 引入就可以使用
三个参数: path必选, options可选, callback必选 文件的路径字符串 可选参数, 表示什么编码格式 必选, 文件读取完成之后, 通过回调函数拿到读取的结果
const fs = require(‘fs’) fs.readFile(‘./file/12.txt’, ‘utf8’, function(err, dataStr) { console.log(err) console.log(‘--------’) console.log(dataStr) })
如果读取成功, err的值为null, dataStr的值就是文件内容 如果读取失败, err的值为错误对象, dataStr的值为undefined
const fs = require('fs')
fs.readFile('./file/testfile.txt','utf8', function(err, dataStr){
//console.log(err)
//console.log('--------')
//console.log(dataStr)
if(err){
console.log("file readed fail")
}else{
console.log(dataStr)
let StrArr = dataStr.split(" ")
let newStrArr = []
StrArr.forEach(item=>{
newStrArr.push(item.replace("=",":"))
})
let newStr = newStrArr.join("\r\n")
fs.writeFile('./file/12.txt',newStr, function(err){
if(err){
console.log("file writeed fail")
}else{
//console.log("文件写入成功")//是乱码
console.log("file writed success")
}
})
}
})
注意 这里有一个fs模块的动态拼接问题, 由示例可知,不论是写入文件还是读取文件,都是使用的./ 获取当前路径, 如果这个当前路径不是当前的node命令执行的路径, 很显然fs对象是不能正常工作的.
解决方法就是提供一个完整路径. 但是移植性非常差
const fs = require('fs')
fs.readFile('C:\\Users\\lyd\\Documents\\lea\\file\\testfile.txt','utf8', function(err, dataStr){
//console.log(err)
//console.log('--------')
//console.log(dataStr)
if(err){
console.log("file readed fail")
}else{
console.log(dataStr)
let StrArr = dataStr.split(" ")
let newStrArr = []
StrArr.forEach(item=>{
newStrArr.push(item.replace("=",":"))
})
let newStr = newStrArr.join("\r\n")
fs.writeFile('C:\\Users\\lyd\\Documents\\lea\\file\\12.txt',newStr, function(err){
if(err){
console.log("file writeed fail")
}else{
//console.log("文件写入成功")//是乱码
console.log("file writed success")
}
})
}
})
node提供了一个叫做__dirname 时刻监听node命令的执行文件的所在目录
const fs = require('fs')
fs.readFile(__dirname+'/file/testfile.txt','utf8', function(err, dataStr){
//console.log(err)
//console.log('--------')
//console.log(dataStr)
if(err){
console.log("file readed fail")
}else{
console.log(dataStr)
let StrArr = dataStr.split(" ")
let newStrArr = []
StrArr.forEach(item=>{
newStrArr.push(item.replace("=",":"))
})
let newStr = newStrArr.join("\r\n")
fs.writeFile(__dirname+'/file/12.txt',newStr, function(err){
if(err){
console.log("file writeed fail")
}else{
//console.log("文件写入成功")//是乱码
console.log("file writed success")
}
})
}
})
4.2 使用path模块来处理路径
fs -> path node提供的 有属性和方法 专门用来处理用户对路径的需求
path.join(‘多个’,‘路径’,‘片段’,‘拼接’,‘到’,‘一起’) path.basename()
4.3 使用http模块写一个基本的web服务器
|