nodeJs中的http、url模块及express框架

NodeJS

一、nodeJS的概念

nodeJS是一个基于Chrome V8引擎(编译成原生机器码)的让JavaScript运行在服务器端的运行环境,它让JavaScript的触角伸到了服务器端。

二、nodeJS特性

  1. 单线程:NodeJS不会为每个连接客户客户创造一个新的线程,仅用一个线程
  2. 非阻塞IO:NodeJS在访问高IO操作后不会等待其完成,而是立即去执行其他代码,操作完成后会使用回调函数返回。保证高效的利用当前线程的cpu不造成硬件浪费
  3. 事件驱动:通过事件来驱动整个程序的进行。由于是单线程,所以把高io的操作移动到事件队列中等待完成,完成后通过回调函数的方式返回给线程来进行处理。

三、nodeJS模块

模块node中以模块来划分功能,一个js是一个模块,多个模块相互引用形成一个模块化式项目

模块优点

  1. 减少代码重复,提高利用率
  2. 划分功能,方便管理
  3. 方便使用第三方模块

(一) http模块 node重要的核心模块

  • webServer : 方便地实现webServer服务器的创建
  • 方法 : createServer(function(req,res){})进行服务器,创建listen来监听端口

代码示例

// 1.http模块引用
var http=require("http");
// 2.创建服务    req请求   res相应
http.createServer(function(req,res){
    res.end("ok");
}).listen(3002)// 3.监听端口

(二) url模块 对当前的url进行相关操作

代码示例

var http=require("http");
var url=require("url");
http.createServer(function(req,res){
        // 发送头标签(描述页面内容/字符集)  
        // 内容类型  Content-type
        //指定内容类型 text/plain (文本类型)  text/html( html类型)
        res.writeHead(200,{"Content-type":"text/html;charset=utf-8"})
        // res.end("你好");
        // 返回一段html标签
        // res.end("<h1>我是返回的内容</h1>")

        // url模块  方法
        var urlpath=url.parse(req.url)
        // 阻止二此请求  favicon.ico
        if(urlpath.pathname=="/favicon.ico"){
            return;
        }


        // 完成路由  通过前台url传递过来的不同请求来执行不同的后台功能
        // 1.先要判断命令是什么(url中得到)
            if(urlpath.pathname=="/index"){
                res.end("啊啊啊indexindex");
            }else if(urlpath.pathname=="/home"){
                res.end("呵呵homehome")
            }

        // url.parse()把url内容转换成对象
        console.log(url.parse(req.url))

        res.end()
}).listen(3001)

四、路由

  • 路由:通过URL路径来区分不同的请求,从而找到不同的功能模块来进行执行。
  • 路由练习

登录注册示例

var http=require("http");
var url=require("url");
http.createServer(function(req,res){
    res.writeHead(200,{"Content-type":"text/html;charset=utf-8"});
    // 解决二次请求

    var pathurl=url.parse(req.url);
    if(pathurl.pathname=="/favicon.ico"){
        return;
    }


// 路由
    if(pathurl.pathname=="/login"){
        res.end("您执行了登陆的后台功能");
    }else if(pathurl.pathname=="/zhuce"){
        res.end("您执行了注册的后台功能");
    }else{
        res.end("您的请求有误  请核实后在进行请求");
    }
}).listen(3001)

五、express

express是一个简洁而灵活的node.js Web应用框架,提供了一系列强大特性和丰富的HTTP工具

功能

  • 扩展了Web所需要的基本功能
  • 丰富了HTTP工具
  • 可以快速搭建一个网站

Express–路由

  • 路由是根据url决定了那部分去响应客户端请求
  • 在http请求中,可以通过路由提取出请求的url以及get/post参数

代码

var express=require("express");
// 初始化express
var app=express();



// 定义中间件(每一次接收到请求后都会先经过中间件)
app.use(function(req,res,next){

    console.log("你好")


    next()//下一步 
})



// 创建服务
app.get("/",function(req,res){
    res.send("aaaaaaa");
})


// 路由的使用
app.get("/index",function(req,res){
  
    res.send("我是index")
})

app.get("/home",function(req,res){
   
    res.send("我是home")
})

app.get("/post",function(req,res){
 
    res.send("我是get的post")
})

app.get("/a*",function(req,res){
   
    res.send("我是路径通配符选择的")
})

// 接受一个post请求
app.post("/post",function(req,res){
    res.send("我是一个post请求")
})



app.listen(3000)
  1. app.post()接收post请求;
  2. app.all()方法让路由函数接收所有指定url的HTTP方法。
  3. 路径中使用通配符可以匹配所有例:app.get("/ab",function(req,res){}

中间件

中间件每次接收到请求都会被先调用的函数。
就是给一些特定功能添加的一个场所。所有路由都是用的内容可以放入中间件中

语法

app.use(function(req,res,next){

next() // 向后执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值