nodejs之路由
声明:在写nodejs代码的时候,很多模块可以封装保存起来,以后的项目都会用到。
1、路由模块
var url=require('url'); //封装方法改变res 绑定res.send()
function changeRes(res){
res.send=function(data){
res.writeHead(,{"Content-Type":"text/html;charset='utf-8'"});
res.end(data);
}
} //暴露的模块
var Server=function(){
var G=this; /*全局变量*/
//处理get和post请求
this._get={};
this._post={};
var app=function(req,res){
changeRes(res);
//获取路由
var pathname=url.parse(req.url).pathname;
if(!pathname.endsWith('/')){
pathname=pathname+'/';
}
//获取请求的方式 get post
var method=req.method.toLowerCase();
if(G['_'+method][pathname]){
if(method=='post'){ /*执行post请求*/
var postStr='';
req.on('data',function(chunk){
postStr+=chunk;
})
req.on('end',function(err,chunk) {
req.body=postStr; /*表示拿到post的值*/
G['_'+method][pathname](req,res); /*执行方法*/
})
}else{ /*执行get请求*/
G['_'+method][pathname](req,res); /*执行方法*/
}
}else{
res.end('no router');
}
} app.get=function(string,callback){
if(!string.endsWith('/')){
string=string+'/';
}
if(!string.startsWith('/')){
string='/'+string;
}
// /login/
G._get[string]=callback;
} app.post=function(string,callback){
if(!string.endsWith('/')){
string=string+'/';
}
if(!string.startsWith('/')){
string='/'+string;
}
G._post[string]=callback;
}
return app;
}
module.exports=Server();
2、直接摘抄,然后创建一个文件运行下面的代码。
方式一:
var http = require('http');
var app = require('./express-route');
http.createServer(app).listen(''); app.get('login',function (req,res) {
console.log('login');
res.end('login');
}) app.get('register',function (req,res) {
console.log('register');
res.end('register');
}) 方式二:
var http = require('http');
var url = require('url');
var path = require('path');
var app = require('./module/express-route');
var ejs = require('ejs');
http.createServer(app).listen(''); app.get('/',function (req,res) {
var msg = 'route test';
ejs.renderFile('练习/views/index.ejs',{msg:msg},function (err,data) {
if(err){
console.log(err);
return false;
}
console.log(data);
//服务器端有数据返回到客户端 这个时候必须用res.send()。
//如果没有数据返回到客户端,res.send()和res.end()效果一样。
res.send(data);
})
})
nodejs之路由的更多相关文章
- nodeJS实现路由功能
前面的话 本文将使用NodeJS实现较复杂应用的路由功能 结构 项目结构如下 代码如下 功能 [router.js] // 加载所需模块 var http = require('http'); var ...
- nodejs动态路由
主要功能:根据输入路由的不同,加载访问不同的HTML页面 在这里我不得不说webstorm真的是一个很棒的开发工具,我学习nodejs也是用的它. 文件目录: first_server.js: 首先我 ...
- NodeJS及路由
1.基本介绍- http://nodejs.cn/api/ Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境 Node.js使用了一个事件驱动.非阻塞式I/O的模型,使 ...
- nodejs添加路由route步骤详解
首先,毋庸置疑, 新建一个基础express站点.建好之后, 有三个文件需要code(当然,三个步骤顺序随意). 下面以添加一个'/about'为例说明. 1. 在views文件夹里,新建一个jade ...
- nodejs基础 -- 路由
我们要为路由提供请求的URL和其他需要的GET/POST参数,随后路由需要根据这些数据(URL.GET/POST参数)来执行相应的代码. 因此,需要查看HTTP请求,从中提取出请求的URL及GET/P ...
- nodejs express 路由并显示html以及访问静态资源设置
var express = require('express'); var http = require('http'); var fs = require('fs'); var app = expr ...
- nodejs学习笔记<三>关于路由(url)
在网站开发中,路由的设置非常关键.nodejs对路由处理封装了一个比较全面的模块. 来认识下url模块 1)在命令行(cmd)可以直接 node —> url 可直接查看url模块的所有方法. ...
- 前端跨域问题的总结&&nodejs 中间层的路由转发
前后端交互的时候,跨域是避不开的问题. 总结就是如下: 1.Cors 我在做前后端分离的时候,会采用cors 的方法:便于其他源的调用接口,这个可以设置成任意的源头,也可以允许指定的源头. 下面的是n ...
- nodejs+express中设置登录拦截器
在nodejs+express中,采用nodejs后端路由控制用户登录后,为了加强前端的安全性控制,阻止用户通过在浏览器地址栏中输入地址访问后台接口,在app.js中需要加入拦截器进行拦截: /*** ...
随机推荐
- 两种Tensorflow模型保存的方法
在Tensorflow中,有两种保存模型的方法:一种是Checkpoint,另一种是Protobuf,也就是PB格式: 一. Checkpoint方法: 1.保存时使用方法: tf.train.Sav ...
- RaspberryPi交叉编译环境配置-Ubuntu & wiringPi & Qt
1.配置RaspberryPi交叉编译环境: 在开发RaspberryPi Zero的过程中,由于Zero板卡的CPU的处理性能比较弱,因此其编译的性能比较弱,需要将代码在PC电脑上交叉编译完成之后再 ...
- 微服务架构:构建PHP微服务生态
微服务架构:构建PHP微服务生态 Linux系统技术交流QQ群(1675603)验证问题答案:刘遄 导读 诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近 ...
- 反selenium关键字
webdriver __driver_evaluate __webdriver_evaluate __selenium_evaluate __fxdriver_evaluate __driver_un ...
- Linux 的终端 Terminal
打开终端: 方式一:在全部应用中搜索Terminal 方式二:Ctrl+Alt+T 快捷方式打开终端 终端指令查询 如果忘记终端指令而只记得前几位可以只输入前几个字母后按Tab键查询 终端清屏 键入c ...
- WebSocket是什么原理,为什么可以实现持久连接
本文摘抄自知乎,原文标题:WebSocket 是什么原理?为什么可以实现持久连接? Websocket只是协议而已. 一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化, ...
- 仿响应式html:JS来判断页面是在手机端还是在PC端打开的方法
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a419419/article/detail ...
- Python 操作 MySQL 数据库Ⅳ
执行事务 事务机制可以确保数据一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性. 原子性(atomicity).一个事务是一个不可分割的工作单位,事务中包 ...
- ConfigMap-k8s
创建方式 创建ConfigMap的方式有4种: 1,通过直接在命令行中指定configmap参数创建,即--from-literal 2,通过指定文件创建,即将一个配置文件创建为一个ConfigMap ...
- vs 2019 调试web项目 浏览器