模块

42 阅读3分钟

1、Node.js官方模块: 6、http模块 - 超级重点:搭建服务器&文件系统 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"){//判断路由的不同,读取不同的页面给用户看,引入fs文件模块 //res: response(响应)对象,他有一个方法叫做res.end("响应的内容"/buf) - 可以想应该给前端想要看的东西 fs.readFile(__dirname+"/public/html/index.html",(err,buf)=>{ res.end(buf) }) }else if(router.match(/html/)!=null){ fs.readFile(__dirname+/public/html${router},(err,buf)=>{ res.end(buf) }) }else if(router.match(/css|js|jpg|png|gif|woff|woff2|ttf2/)!=null){ fs.readFile(__dirname+/public${router},(err,buf)=>{ res.end(buf) }) } })

扩展:字符串有一个API:match var rs=str.match(reg);//几乎和indexOf一致,但是支持正则,我们不关心为什么,只关心为不为null

强调:一切的src和href都是一个请求都是一个路由,这个请求就需要后端来解析,根据不同的请求响应不同的内容!

完成目标1:使用代码搭建服务器和文件系统


2、模块(每个.js文件)分类 1、官方模块:require("官方模块名"); 2、第三方模块 3、自定义模块:require("./模块路径");

为什么有的模块引入要./有的又不用./?
	自定义模块:分为两大类
		1、文件模块:创建xx.js去公开了需要公开的内容,主模块引入,就必须写为require("./模块路径");

		2、目录模块:31、比如创建m1的文件夹,在其中创建index.js的文件,去公开了需要公开的内容,主模块引入,就必须写为require("./m1");
			2、比如创建m2的文件夹,在其中创建suibian.js的文件,去公开了需要公开的内容,主模块引入,就必须写为require("./m2");
				必须在创建一个必须名package.json的配置文件,写入:{"main":"suibian.js"}
			3、创建一个文件夹必须名为node_modules,在在其中创建创建m3的文件夹,在其中创建index.js的文件,去公开了需要公开的内容,主模块引入,就必须写为require("m3");
		
		其实真实开发中,我们程序员用的最多的就是文件模块,目录模块的第三种方式其实根本不是给人用的(第三方模块下载后会自动创建此文件夹)

3、如何下载第三方模块: npm工具:Node Package Manager - Node.js的模块/包/软件管理器,专门用于管理第三方模块的,作用:下载、更新、删除、维护包之间的依赖关系 检查npm是否安装成功:npm -v 如果能看到版本号,说明安装成功 打开网址:npm官网:www.npmjs.com 所搜你需要用到的模块,尽量用带有完全符合标签的那个包,或者是 第一个包 在你的项目之中打开cmd 1、下载:npm i 包名 2、删除:npm un 包名 3、更新:npm up 包名