Nodejs模块及服务器

目录

1.模块简介

2.模块的导入与导出

(1)导入模块

(2)导出模块

3.HTTP服务

(1)http模块

(2)fetch()  方法


1.模块简介

Node使用Module模块去划分不同的功能,以简化应用的开发。Modules模块有点像C++语言中的类库。每一个Node的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。要在程序中使用模块是十分方便的,只需要如下:

在这里,引入了http类库,并且对http类库的引用存放在http变量中了。这个时候,Node会在我们应用中搜索是否存在node_modules的目录,并且搜索这个目录中是否存在http的模块。如果Node.js找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,指定模块的位置,比如:var myModule = require('./myModule.js');

模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用exports对象去实现。

注:一个js文件就是一个具有独立功能的模块。

2.模块的导入与导出

  • module.exports导出模块成员
  • require()导入模块成员

(1)导入模块

  • 作用:加载并执行模块中的代码!
  • 使用:require() 方法的 ( ) 中可以写:
     // 1. node自带的模块,如fs、http
     require('fs');
     // 2. 通过路径引入的自己的js文件
     require('./fses.js');

注:① require() 加载模块是同步加载!② 引入自己的js文件时,路径中的./或者../不能省略。③ 如果省略,require() 会把它当成是一个node自带的模块。④ 模块后缀.js 可以省略不写

(2)导出模块

每个模块中都有一个 module 对象,module对象中有一个exports对象,在CommonJS 中规定:一个模块返回数据可以通过module.exports和rexports两个关键字来返回,模块最终返回的仅仅只是 modules.exports。exports 仅仅只是 modules.exports的一个引用。我们可以把需要导出的成员都挂载到module.exports 对象上。

3.HTTP服务

(1)http模块

    // node把处理web服务器相关的功能 封装到了 http模块中
    // 1、导入http模块
    var http = require('http');
    // 2、使用http这个模块中的createServer()创建一个服务器实例对象
    var server = http.createServer();
    // 3、给服务器对象注册一个request事件,当浏览器有请求发送过来时,服务器会接收,并且执行后面的回调函数
    // 请求处理函数function(形参1,形参2){}
    // 形参1:request请求对象 获取到当前请求的路径,方法等信息
    // 形参2:response响应对象 发送响应数据
    server.on('request', function(request, response) {
        console.log('浏览器连接了哟!');
        // 向客户端页面返回字符串
        response.write("hello node");
        // 结束响应
        response.end();
    });
    // 4、绑定端口号,启动web服务器
    server.listen(12345, function() {
        console.log(' 请访问http://localhost:12345');
    });

注:注册request处理函数有两个形参 request和response 不要搞混;在写完服务器代码后 保存代码 —>在cmd中 node 文件名 然后回车执行;每次修改代码后要重新在cmd中 node 文件名 执行这个文件(supervisor插件可监听服务端代码);端口号尽量写的大一些 大于3000 否则容易和已经运行的软件所占用的接口相冲突!

(2)fetch()  方法

fetch是一个可以从程序向服务器发起http请求的技术。fetch() 方法返回值为promise对象。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    
</head>
<body>
    <button onclick="getMsg()">GET</button>
    <button onclick="postMsg()">POST</button>
    <script>
        //fetch() 方法参数1为url(服务器地址)
            //允许跨域:服务器中用setHeader()方法,或写在writeHead()方法中。
        //fetch() 方法参数2为parms(对象)
            //{method:'GET'/'POST',body: {'请求体'},header:{'Content-Type':"application/x-www-form-urlencoded"}}
        let url="http://127.0.0.1:3000";
        let uName="tom";
        let pwd='123';
        function getMsg(){
            let myUrl=`${url}/person?username=${uName}&pwd=${pwd}`;
            fetch(myUrl).then(data=>data.text()).then(res=>{
                console.log(res);
            });
        }

        function postMsg(){
            let myUrl=`${url}/person/login`;
            fetch(myUrl,{
                method:"POST",
                // body:"username=lucy&pwd=888",
                body:JSON.stringify({
                    username:"Merry",
                    age:20
                }),
                headers:{
                    'Content-Type':"application/x-www-form-urlencoded"
                }
            }).then(data=>data.text()).then(res=>{
                console.log(res);
            });
        }
    
    </script>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值