node.js的官方模块

1,262 阅读4分钟

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>
			     JSopen("url","_self");

		2、替换当前页面,禁止后退 - 场景:电商网站,付款后不允许退回去再次付款
			history对象:记录着【当前窗口】的历史记录,只有有了历史才能前进后退
			location对象:记录着【当前窗口】正在打开的url,而他又一个方法叫做替换,替换是不会产生任何历史记录的,但是url替换后网页必然跳转
			     JSlocation.replace("新url")

		3、新窗口打开,可以打开多个
			HTML:<a href="url" target="_blank">内容</a>
			     JSopen("url","_blank");

		4、新窗口打开,只能打开一个 - 场景:电商网站,只允许用户打开一个付款页面
			HTML:<a href="url" target="自定义name">内容</a>
			自定义name的意思:每一个窗口底层都有一个名字,target其实就是在设置名字,name如果相同,新打开的窗口就会把旧窗口给替换掉(刷新)
			     JSopen("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)