1、Globals模块:全局模块 - 全局变量在所有模块中均可使用。不需要引入,但是提供了一些全局变量给我们,我们可以直接使用
__dirname - 当前文件夹的绝对路径,
__filename - 当前文件的完整的绝对路径
exports - 一个空{},公开和暴露自己的成员
module - 指代当前模块本身,包含了其他4个变量
require() - 一个函数,引入其他模块的
2、Querystring模块:查询字符串
需要引入:let qs = require('querystring');
提供了解析url的查询字符串部分的功能
var obj=qs.parse("查询字符串部分");
想要获取前端传来的某一个部分:obj.键名;
3、Url模块:网址模块
需要引入:let url = require('url');
提供了一些实用函数,用于 完整的URL 解析
var objUrl=url.parse("完整的url网址",true);此方法会将url网址的各个部分全部解析出来,支持传入第二个参数,是一个布尔值,如果传入的是一个true,自动调用querystring的parse方法,顺便也解析了查询字符串(请求消息:前端->后端的东西)部分
1、查询字符串:objUrl.query.键名 - 拿到前端传到后端的东西
2、路由:objUrl.pathname; - 判断路由的不同,响应不同的网页给用户看
4、Buffer模块:缓冲区,可以将数组变成一个16进制的数字
5、fs模块:FileSystem - 文件系统
需要引入:let fs = require('fs');
提供了可以操作文件的API
异步读取文件:
fs.readFile("绝对路径|文件路径",(err,buf)=>{
拿到buf要干嘛?就需要写在这里
})
异步写入文件:- 将原来的东西,替换掉
fs.writeFile("绝对路径|文件路径","写入的新内容",()=>{
console.log("写入完毕了,以后要做什么")
})
异步追加文件:- 保留原来的东西
fs.appendFile("绝对路径|文件路径","写入的新内容",()=>{
console.log("写入完毕了,以后要做什么")
})
6、http模块
固定步骤:
//引入http、url、fs官方模块
var http=require("http");
var url=require("url");
var fs=require("fs");
//创建服务器
var app=http.createServer();
//为服务器设置监听的端口号
app.listen(80);//http默认端口为80,https默认端口为443
//为服务器绑定请求事件 - 请求?前端发到后端的,
app.on("request",(req,res)=>{
//req - request:保存请求对象,请求对象,前端->后端,提供了一个属性req.url,解析此属性拿到自己需要的部分(路由|请求消息)
var objUrl=url.parse(req.url,true);
//得到前端传来路由部分
var router=objUrl.pathname;
//判断前端的路由是什么,给他返回不同的页面
if(router=="/" || router=="/index.html"){
//res - response:保存响应对象,后端->前端,提供了一个方法res.end(你想要响应的东西)
fs.readFile("./public/index.html",(err,buf)=>{
res.end(buf);
})
}else if(router.match(/html/)!=null){
console.log(router);
fs.readFile("./public"+router,(err,buf)=>{
res.end(buf);
})
}else if(router.match(/css|js|jpg|png|gif|woff/)!=null){
fs.readFile("./public"+router,(err,buf)=>{
res.end(buf);
})
}
})
** BOM对象**
window对象介绍:扮演着两个角色
1、代替了ES中的global,充当全局对象 - 保存全局变量和全局函数
2、自己也带有一些属性和方法,指代当前窗口本身
1、网页打开新链接的方式:4种 - 目的:提升用户的体验感
1、替换当前页面,可以后退
HTML:<a href="url">内容</a>
JS:open("url","_self");
2、替换当前页面,禁止后退 - 场景:电商网站,付款后不允许退回去再次付款
history对象:记录着【当前窗口】的历史记录,只有有了历史才能前进后退
location对象:记录着【当前窗口】正在打开的url,而他又一个方法叫做替换,替换是不会产生任何历史记录的,但是url替换后网页必然跳转
JS:location.replace("新url")
3、新窗口打开,可以打开多个
HTML:<a href="url" target="_blank">内容</a>
JS:open("url","_blank");
4、新窗口打开,只能打开一个 - 场景:电商网站,只允许用户打开一个付款页面
HTML:<a href="url" target="自定义name">内容</a>
自定义name的意思:每一个窗口底层都有一个名字,target其实就是在设置名字,name如果相同,新打开的窗口就会把旧窗口给替换掉(刷新)
JS:open("url","自定义的name");
HTML能做的,JS都能做,JS能做的,HTML不一定可以
2、window提供了属性和方法:
属性:获取浏览器的完整大小:outerWidth/outerHeight;
获取浏览器的文档显示区域的大小:innerWidth/innerHeight
获取屏幕的完整大小:screen.width/height;
每个人的电脑分辨率是不一样的
方法:1、打开窗口:var newWindow=open("url","自定义的name","width=,height=,left=,top=");
注意:1、第三个配置参数没有传入时,窗口大小和浏览器一样,并且黏在浏览器上面(融为一体)
2、写入了第三个实参,则会脱离浏览器并且一个独立的小窗口,并且可以保存起来,设置为他绑定事件
3、宽高不能设置的太小了
2、关闭窗口:window/newW.close();
3、修改窗口的大小:newW.resizeTo(new宽,new高);
4、修改窗口的位置:newW.moveTo(x,y);
1、周期性定时器
开启:timer=setInterval(callback,间隔毫秒数);
停止:clearInterval(timer)
2、一次性定时器
开启:timer=setTimeout(callback,间隔毫秒数);
停止:clearTimeout(timer)