NodeJs_01

69 阅读3分钟

1、js 和 node 的区别

相同点:都可以使用一切ecmascript的操作,包括一切API都可以使用,放心大胆的使用es6的语法(服务器端不存在浏览器,不会有老IE)

不同点:1、javascript:BOM DOM;

2、Node.js:虽然不能使用BOM DOM,但是他却又10万个以上的模块

2、node.js模块

模块:每一个.js文件,都可以称之为叫做一个模块

1、模块化开发:如果以一个网页来说,我们可以按照功能分为很多个模块:商家模块、产品模块、促销模块、用户模块...

分工合作:将每个模块就给对应的人完成,最后再由主模块进行引入

每一个模块都有一个操作,可以用于公开/暴露自己的成员

1exports.属性名=值
2module.exports={
        属性名:值,
        ...
    }

每一个模块都有一个操作,可以用于引入其他模块:

var obj=require("./文件名");//必须加上./

3、模块的分类

(1)官方模块 (2)第三方模块 (3)自定义模块

官方模块

(1)Global模块

不需要引入,直接可以使用:

提供:

1、三种定时器(Interval、Timeout、Immediate)

Immediate 底层:Timeout延时为0,立刻执行,但是毕竟异步操作,不会卡主后续代码

2、console对象

(2)querystring模块:查询字符串

需要引入: var qs = require('querystring');

提供了解析url查询字符串部分的功能

var obj=qs.parse("查询字符串");

想要获取前端传来的每一部分:obj.键名;

如果前端传来的是一个完整的网址,他就解析不了了

(3)url模块

需要引入:var url = require('url');

提供了解析完整的url的功能

var objurl=url.parse("完整的网址",true);
//加上true,自动调用querystring模块的parse方法,进行查询字符串部分变为一个对象

真正重要的有两个点:

1、查询字符串:objurl.query.键名 - 拿到前端传来的数据

2、路由/请求地址:objurl.pathname - 下午会搭配上fs模块(文件系统)和http模块(服务器)实现代码搭建服务器和文件系统

(4)Buffer模块:缓冲区,可以将数据(字符串、数字、图片、HTML...)变为一个16进制的数字 - node中的一个新的数据类型

不需要引入,直接可以使用

(5)fs模块 :文件系统:对文件增删改查

需要引入:var fs = require('fs');
		
*异步读取文件:fs.readFile("文件路径",(err,buf)=>{
                        buf->读取到的内容
                })

异步写入文件:fs.writeFile("文件路径","新内容",(err)=>{ - 会替换原有的内容
                        console.log("写入完毕后续操作")
                })
				
异步追加文件:fs.appendFile("文件路径","新内容",(err)=>{ - 会替换原有的内容
                        console.log("写入完毕后续操作")
                })

异步能够最大的发挥node.js的特点(快)

注意:写文件相对路径有可能会失败:绝对路径node.js提供了一个全局变量:

__dirname+"/你的文件的相对路径"

(6)http模块:搭建服务器

固定步骤:

需要引入:var http = require('http');
         var app=http.createServer();//创建服务器应用
         app.listen(80);//设置了此服务器应用的端口号为80
         app.on("request",(req,res)=>{
                req.url 此属性记得使用url模块的parse方法分别解析出路由和查询字符串
                res.end();//响应方式,此方法一个请求只能有一个响应
            })

***注意:node.js搭建服务器和文件系统,所有的连接(href和src)其实都是一个请求路由