js:nodejs的内助模块,与服务器搭建

# 一、复习

1、前端

    - 环境:操作系统,浏览器

    - 前端收:浏览器

     发:表格、浏览器

2、后端

    - 服务器:提供了概念或数据服务

    - 环境:服务器对应语言的解析器:nodeJs的node

    - 端口:计算机对外进行数据交互的接口

        - 将服务器程序挂在某个端口上,才能被客户端访问或拦截访问

3、搭建本地服务器环境

    - 安装node

    - 直接执行

    - 文件执行

4、命令行工具的常见命令

    - 清屏:cls或者clear

5、nodeJs的模块

    - 内置:

        - 引入:const  obj=require("模块名")

        - 使用:

6、node的内置模块

    - http

    - fs:文件系统,提供了文件操作

    - url:地址模块,用来解析url地址

# 二、内置模块 -http

1、创建服务对象

    - 创建一个后端(服务器)

        http模块用来开启服务器

    - 定义服务器程序

        const serverObj = http.createServer((req, res)=>{

        参数1:表示请求对象:前端到后端的信息,request

        参数2:表示响应对象:后端到前端的信息,response

2、挂载端口

    - xxx.listen(3000,function(){

            console.log("服务器开启成功,端口为3000");

        });

    - 本地服务器的默认地址:

        localhost:3000或127.0.0.1:3000

3、获取请求对象

    - 解析url

        const p = "." + url.parse(req.url).pathname;

4、结束

    - 结束本次请求

            res.end();

4、能响应静态资源的简易web服务器


 

function apiHandle(req, res){

    // 区分是什么功能:二级路由

    if(req.url.includes("/login")){

        // 执行登录功能

    }

    if(req.url.includes("/register")){

        // 执行注册功能

    }

    if(req.url.includes("/user")){

        // 执行获取用户信息功能

    }

}



设定二级路由

// http://localhost:3000/api?type=register

function apiHandle(req, res){

    // 1. get 或 post

    // console.log(req.method);

    // 接收并解析前端发送过来的数据

    if(req.method === "GET"){

        // 2. 如果是get数据,数据在url后拼接,解析url即可

        const data = url.parse(req.url, true).query;

        // 6-1. 然后,再根据数据的不同,进行二级路由处理

        routerHandle(req, res, data);

    }else if(req.method === "POST"){

        // 3. 没有在url拼接,不能通过解析url拿到数据,通过事件获取数据

        // 4. 当前端使用post方式发送数据时,会触发req的data事件

        // 但是data事件每次只能拿到一个数据碎片,有可能多次执行才能拿到所有数据碎片

        // 为了拿到完整数据,需要在每次data事件被触发时将获取到的数据碎片拼接起来

        let str = "";

        req.on("data", (chunk)=>{

            str += chunk;

        });

        // 5. 在最后一次data事件执行完毕后,必然会触发一次end事件

        // 在end事件中即可绝对拿到拼接完整的数据

        req.on("end",()=>{

            const data = dataParse(str);

            // 6-2. 然后,再根据数据的不同,进行二级路由处理

            routerHandle(req, res, data);

        })

    }

}




}

# 三、内置模块 - querystring

    const qs = require("querystring");

1、将查询字符解析成对象

    - qs.parse(str)

2、将对象解析成查询字符

    - qs.stringify(obj)

3、

//自定义的查询数据解析工具

function dataParse(str){

    const obj = {};

    // abc=678&qwe=456

    str.split("&").forEach(val=>{

        obj[val.split("=")[0]] = val.split("=")[1];

    })

    return obj;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值