Node.js 概念:
是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
发展史:
以前:后台—MVC+layui
现在:后台—Spring Boot/Spring code+vue
以前:前端—h5+c3+js+jq+bootstrip+PHP
现在:前端—h5+c3+es6+nodejs+element-UI+vue+微信小程序
执行方式一: ctrl+`打开控制台,cd切换到当前文件目录,node 文件名
执行方式二: 查找到文件夹,在文件路径输入cmd,node 文件名–>
执行方式三: 按住shift右键,打开powershell,node 文件名–>
执行方式四: window+r,输入cmd,cd切换到当前文件目录,node 文件名
D: 切换D盘目录
dir 查看当前目录的所有文件
cd 文件名 进入下一级目录
cd … 返回上一级目录
cls 清除控制台记录
tab键可以快速生成执行的路径
使用 esc 键,能够快速清空当前已输入的命令
使用 ↑ 键,可以快速定位到上一次执行的命令
ctrl+左右键,可以快速定位到特殊字符前
fs.readFile(“路径”,“编码格式”,function(err,user){}) 方法,用来读取指定文件中的内容
参数1:必选参数,字符串,表示文件的路径。
参数2:可选参数,表示以什么编码格式来读取文件。
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果
err返回null,读取文件成功,报错读取失败
<script>
fs.readFile("./1.txt","utf8",function(err,user){
if(err){
return console.log("文件读取失败"+err.message);
}
console.log(user);
})
</script>
fs.writeFile(“路径”,“内容”,“编码格式”,function(err){}) 方法,用来向指定的文件中写入内容
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。
参数2:必选参数,表示要写入的内容。
参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。
参数4:必选参数,文件写入完成后的回调函数
err返回null,写入文件成功,报错写入失败
<script>
fs.writeFile("day02.html","想要填写的内容","utf8",function(err){
console.log(err);
})
</script>
path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串
<script>
const path = require("path");
console.log(path);
let num = "ages"
const pathName = path.join("https://www.hao",num,".com");
console.log(pathName);
</script>
path.basename() 方法,用来从路径字符串中,将文件名解析出来
path 必选参数,表示一个路径的字符串
ext 可选参数,表示文件扩展名
返回: 表示路径中的最后一部分
<script>
const pathBase = path.basename("1/index/admin.html",".html")
console.log(pathBase);
</script>
path.extname() 方法,可以获取路径中的扩展名部分
path 必选参数,表示一个路径的字符串
返回: 返回得到的扩展名字符串
let pathExt = path.extname("1/index/admin.html");
console.log(pathExt);
需要记的:
|1xx(临时响应)
// 100: 请求者应当继续提出请求。
// 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进行切换。
// 2xx(成功)
// 200:正确的请求返回正确的结果
// 201:表示资源被正确的创建。比如说,我们 POST 用户名、密码正确创建了一个用户就可以返回 201。
// 202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求。
// 3xx(已重定向)
// 300:请求成功,但结果有多种选择。
// 301:请求成功,但是资源被永久转移。
// 303:使用 GET 来访问新的地址来获取资源。
// 304:请求的资源并没有被修改过
// 4xx(请求错误)
// 400:请求出现错误,比如请求头不对等。
// 401:没有提供认证信息。请求的时候没有带上 Token 等。
// 402:为以后需要所保留的状态码。
// 403:请求的资源不允许访问。就是说没有权限。
// 404:请求的内容不存在。
// 5xx(服务器错误)
// 500:服务器错误。
// 501:请求还没有被实现
http模块
<script>
const http = require("http");
// console.log(http);
// 2.创建一个 web 服务器实例
const server = http.createServer();
// 3.为服务器实例绑定 request 事件
// req.url获取请求访问的地址
// req.method获取请求类型
// res.end("内容")向客户发送内容
// res.setHeader()解决中文乱码
server.on("request",(req,res)=>{
// console.log(req);
// console.log("------------------------------------");
// console.log(res);
// res.end("恭喜你请求成功了!")
// 返回url
res.setHeader("Content-Type","text/html;charset=utf-8")
res.end("123我我我")
// req获取url
})
// 4.listen() 方法,即可启动当前的 web 服务器
server.listen("80",()=>{
console.log("服务启动成功");
})
</script>
module.exports.userName = “张三”;
module.exports.som=function(){
console.log(“我是函数”);
}
module.exports权重比exports高
module.exports能使用赋值为{},也可以使用module.exports.共享成员
exports不能使用赋值为{},可以使用exports.共享成员
注意:为了防止混乱,建议大家不要在同一个模块中同时使用 exports 和 module.exports
每个.js文件都有自己的module,共享的成员会存在module
使用require(“自定义模块路径”);导入
时钟案例 匹配css,js,html
<script>
// 时钟案例
const fs = require("fs");
const path = require("path");
// 获取文件
fs.readFile("./dataTime/index.html","utf-8",function(err,user){
if(err){
return console.log("请求文件失败"+err.message);
}
// console.log(user);
resolveCss(user);
resolveJs(user);
resolveHtml(user);
})
// 匹配css
function resolveCss(user){
// 匹配style标签
let requeCss = /<style>[\s\S]*<\/style>/;
let styleCss = requeCss.exec(user);
// console.log(styleCss[0]);
// 替换style标签
styleCss[0] = styleCss[0].replace("<style>","").replace("</style>","");
fs.writeFile("./dataTime/index.css",styleCss[0],"utf-8",function(err){
if(err){
return console.log("请求文件失败"+err.message);
}
})
}
// 匹配js
function resolveJs(user){
let requeJs = /<script>[\s\S]*<\/script>/;
let styleCss = requeJs.exec(user);
// console.log(styleCss[0]);
styleCss[0] = styleCss[0].replace("<script>","").replace("</script>","");
fs.writeFile("./dataTime/index.js",styleCss[0],"utf-8",function(err){
if(err){
return console.log("请求文件失败"+err.message);
}
})
}
// 匹配修改html
function resolveHtml(user){
let requeCss = /<style>[\s\S]*<\/style>/;
let requeJs = /<script>[\s\S]*<\/script>/;
user = user.replace(requeCss,"<link rel='stylesheet' href='./dataTime/index.css'>").replace(
requeJs,"<script src='./dataTime/index.js'></script>"
)
fs.writeFile("./dataTime/index.html",user,"utf-8",function(err){
if(err){
return console.log("请求文件失败"+err.message);
}
})
}
</script>