1、Node.js官方模块:
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:请求 - 响应模式,必须要有一个请求,才有一个响应
app.on("request",(req,res)=>{
//req:request(请求)对象,他有一个属性叫做req.url,看了一获取到前端传到后端的路由和请求消息,但是路由和请求消息是融为一体的,不方便我们获取某个部分,所以我们引入了url,进行解析,分开两部分
var objUrl=url.parse(req.url,true);
//保存路由
var router=objUrl.pathname;
if(router=="/" || router=="/index.html"){//判断路由的不同,读取不同的页面给用户看
//res:response(响应)对象,他有一个方法:res.end(响应的内容) - 可以响应给前端想要的东西
fs.readFile("./public/html/index.html",(err,buf)=>{
res.end(buf);//res.end只能用一次
})
}
})
扩展:字符串有一个API:math
var rs=str.match(reg);和indexOf几乎一致,但是支持正则,我们不关心为多少,只关心为不为null
强调:一切的src和href都是一个请求都是一个路由,这个请求就需要后端来解析,根据不同的请求响应不同的内容
2、模块(每个.js文件)的分类
1、官方模块:不需要下载,再安装Node.js环境的时候就已经自带了,但是有的模块需要引入:require("模块名");
2、第三方模块
3、自定义模块:自己书写的xx.js:require("./模块名");
问题:为什么有的模块引入要./有的又不用加./
自定义模块:分为2大类
1、文件模块:创建xx.js去公开需要公开的内容,主模块要引入,必须写为require("./模块名");
2、目录模块:3种用法
1、比如创建m1的文件夹,在其中创建index.js的文件,去公开需要公开的内容,主模块要引入,必须写为require("./m1");
2、比如创建m2的文件夹,在其中创建xx.js的文件,,去公开需要公开的内容,主模块要引入,必须写为require("./m2");
必须再创建一个package.json的配置文件,写入:{"main":"xx.js"}
3、创建一个文件夹必须名为:node_modules,再在其中创建出m3文件夹,在其中创建index.js的文件,去公开需要公开的内容,主模块要引入,必须写为require("m3");
其实真实开发中,我们程序员用的最多的是文件模块,目录模块的第三种方式其实根本不是给人用的(第三方模块下载后会自动创建此文件夹)
3、如何下载第三方模块
npm工具:Node Package Manager:Node.js的模块/包管理器,专门用于管理第三方模块的,作用:下载、更新、删除、维护包之间的依赖关系
打开网址:npm官网https://www.npmjs.com/
搜索你需要用到的模块:尽量用带有完全符合标签的那个包,或者是 第一个包:
1、打开cmd:检查npm是否安装成功:npm -v
2、在你的项目之中,再打开cmd
3、下载:npm i 包名
4、更新:npm up 包名
5、删除:npm un 包名