iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >nodejs中实现路由功能
  • 689
分享到

nodejs中实现路由功能

路由功能nodejs 2022-06-04 17:06:59 689人浏览 独家记忆
摘要

初学node,发现了与自己之前的观点完全不同的场面——你眼中的javascript,是干什么用的呢?特效?or 只是与客户端的交互?可以说,JavaScript最早是运行在浏览器中的,然而你要这样想,浏览器

初学node,发现了与自己之前的观点完全不同的场面——你眼中的javascript,是干什么用的呢?特效?or 只是与客户端的交互?可以说,JavaScript最早是运行在浏览器中的,然而你要这样想,浏览器只是你提供了一个上下文(context),它定义了 使用JavaScript可以做什么,这里可以想成类似的一个企业,企业定义了你可以在这里做什么,但是并没有说太多关于JavaScript语言本身可 以做什么。事实上,作为一门完整的语言,JavaScript可以使用在不同的上下文中,体现出不同的能力。这里所讲到的nodejs其实说白了就是提供 的一个上下文,一个运行环境,它允许在后端(脱离浏览器环境)来运行JavaScript代码。

路由选择的核心是路由,顾名思义,路由指的就是我们要针对不同的URL有不同的处理方式,例如处理/start的业务逻辑和处理/upload模块 的业务;逻辑就是不一致的。在现实的实现下,路由过程会在路由模块中“结束”,并且路由模块并不是真正者针对请求“采取行动”的模块,否则当我们的应用程 序变得更为复杂的时候就将无法得到很好的扩展。

这里我们首先创建一个叫做requestHandlers的模块,对于每一个请求处理程序都添加一个占位函数:


function start(){   

    console.log("Request handler 'start' was called.");   

       

    function sleep(milliSeconds){   

        var startTime=new Date().getTime();   

        while(new Date().getTime()<startTime+milliSeconds);   

    }   

    sleep(10000);   

    return "Hello Start";   

}   

function upload(){   

    console.log("Request handler 'upload' was called.");   

    return "Hello Upload";   

}   

  

exports.start=start;   

exports.upload=upload;

这样我们就可以将请求处理程序和路由模块连接起来,让路由“有路可循”。之后我们确定将一系列请求处理程序通过一个对象来传递,并且需要使用松耦合的方式将这个对象注入到router()函数中,主文件index.js


var server=require("./server");   

var router=require("./router");   

var requestHandlers=require("./requestHandlers");   

  

var handle={};   

handle["/"]=requestHandlers.start;   

handle["/start"]=requestHandlers.start;   

handle["/upload"]=requestHandlers.upload;   

  

server.start(router.route,handle);

如上所示,将不同的URL映射到相同的请求处理程序上是容易的:只要在对象中添加一个键为“/”的属性,对应 requestHandlers.start即可。这样我们就可以简洁地配置/start和/的请求都交给start这一处理程序来处理。在完成看对象的 定义后,我们将它作为额外的参数传递给服务器,见server.js:

var Http=require("http");   

var url=require("url");   

  

function start(route,handle){   

    function onRequest(request,response){   

        var pathname=url.parse(request.url).pathname;   

        console.log("Request for "+pathname+" received.");   

           

        route(handle,pathname);   

           

        response.writeHead(200,{"Content-Type":"text/plain"});   

        var content=route(handle,pathname);   

        response.write(content);   

        response.end();   

    }   

    http.createServer(onRequest).listen(8888);   

    console.log("Server has started.");   

}    

exports.start=start;

这样就在start()函数中添加了handle参数,并且把handle对象作为第一个参数传递给了route()回调函数,下面定义route.js:

function route(handle,pathname){   

    console.log("About to route a request for "+ pathname);   

    if(typeof handle[pathname]==='function‘){   

        return handle[pathname]();   

    }else{   

        console.log("No request handler found for "+pathname);   

        return "404 Not Found";   

    }   

}   

exports.route=route;

通过以上代码,我们首先检查给定的路径对应的请求处理程序是否存在,如果存在则直接调用相应的函数。我们可以用从关联数组中获取元素一样的方式从 传递的对象中获取请求处理函数,即handle[pathname]();这样的表达式,给人一种感觉就像是在说“嗨,请你来帮我处理这个路径。”程序运 行效果如下图:

查看图片

--结束END--

本文标题: nodejs中实现路由功能

本文链接: https://www.lsjlt.com/news/12195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nodejs中实现路由功能
    初学Node,发现了与自己之前的观点完全不同的场面——你眼中的JavaScript,是干什么用的呢?特效?or 只是与客户端的交互?可以说,JavaScript最早是运行在浏览器中的,然而你要这样想,浏览器...
    99+
    2022-06-04
    路由功能 nodejs
  • nodeJS实现路由功能实例代码
    前面的话 本文将使用NodeJS实现较复杂应用的路由功能 结构 项目结构如下 代码如下 功能 【router.js】 // 加载所需模块 var http = require('http');...
    99+
    2022-06-04
    实例 代码 路由功能
  • 如何使用nodejs实现路由功能
    这篇文章将为大家详细讲解有关如何使用nodejs实现路由功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。结构  项目结构如下  代码如下功能【router.js】// 加载所需模块var&nb...
    99+
    2023-06-14
  • 怎样使用nodejs实现路由功能
    这篇文章主要介绍怎样使用nodejs实现路由功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!结构项目结构如下代码如下功能【router.js】// 加载所需模块var http =&n...
    99+
    2023-06-06
  • nodejs路由怎么实现
    本篇内容介绍了“nodejs路由怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • nodejs中怎么实现express路由
    这篇文章将为大家详细讲解有关nodejs中怎么实现express路由,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。路由通常HTTP URL的格式是这样的:h...
    99+
    2022-10-19
  • ASP.NET MVC实现路由功能
    1、定义路由、路由规则 public static void RegisterRoutes(RouteCollection routes) { ...
    99+
    2022-11-13
    ASP.NET MVC 路由功能
  • ASP.NETCore中的Razor页面实现路由功能
    在服务器端 Web 应用程序框架中,其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配,以便正确的处理请求。最简单的方法是将 URL 映射到磁盘上的物理文件,在 Raz...
    99+
    2022-11-13
  • 怎么用Vue-Router实现路由功能
    这篇“怎么用Vue-Router实现路由功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Vue-Router实现路由...
    99+
    2023-07-04
  • 详解NodeJS框架express的路径映射(路由)功能及控制
    我 们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route control章节,route实现了客户端请求的URL的路径映射功能...
    99+
    2022-06-04
    路由 详解 路径
  • nodejs中实现sleep功能实例
    nodejs最让人不爽的就是其单线程特性,很多事情没法做,对CPU密集型的场景,性能也不够强劲。很长一段时间,我想在javascript语言框架下寻求一些解决方案,解决无法操作线程、性能差的问题。曾经最让我...
    99+
    2022-06-04
    实例 功能 nodejs
  • nodejs实现3d功能
    一、什么是3D功能?在计算机科学中,3D表示三维,即三维图形。3D图形是指用三维几何图形来表示目标对象,让我们的视觉得以看到更具真实感的物体而不是平铺直叙的2D图形。它通过增加深度感来增强用户体验,使用户可以更好地感受和理解物体的形状、大小...
    99+
    2023-05-18
  • Node.js自定义实现文件路由功能
    一、创建路由处理定义 //获取http模块 var http = require('http'); //文件 模块 var fs = require('fs'); //404文件 var e...
    99+
    2022-06-04
    自定义 文件 路由功能
  • 如何使用Vue-Router2实现路由功能
    这篇文章主要为大家展示了“如何使用Vue-Router2实现路由功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Vue-...
    99+
    2022-10-19
  • Angular4中路由Router类如何实现跳转navigate功能
    这篇文章主要为大家展示了“Angular4中路由Router类如何实现跳转navigate功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular4中路...
    99+
    2022-10-19
  • vue路由如何实现网站导航功能
    这篇文章给大家分享的是有关vue路由如何实现网站导航功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、首先需要按照Vue router支持npm install vue-ro...
    99+
    2022-10-19
  • NodeJS中怎么模拟WebApi路由
    本篇文章给大家分享的是有关NodeJS中怎么模拟WebApi路由,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步,先设置controlle...
    99+
    2022-10-19
  • Ubuntu中怎么利用路由实现网络共享功能
    Ubuntu中怎么利用路由实现网络共享功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  Ubuntu路由实现 Mac OS X 10.6 共享上网 route...
    99+
    2023-06-16
  • ReactRouterV5:使用HOC组件实现路由拦截功能
    目录前言一、创建一个HOC组件二、使用withRouter组件三、实现路由拦截前言 在Web应用程序中,需要对一些页面进行访问限制,只允许已经登录的用户访问受保护的页面。React ...
    99+
    2023-03-14
    React Router 路由拦截 React 路由拦截
  • nodejs开发——express路由与中间件
    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议。 host表示主机。 port为端口,可选字段,不提供时默认为80。 path指定请求资源的U...
    99+
    2022-06-04
    路由 中间件 nodejs
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作