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中需要加入拦截器进行拦截: /*** ...
随机推荐
- linux命令详解——sort
[原文链接]:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html 1 sort的工作原理 sort将文件的每一行作为一个单位, ...
- Linux工具之netstat
1.简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicas ...
- linux系统设置登录失败n次锁定账户:vim /etc/pam.d/system-auth
auth required pam_env.so 登陆后的环境变量 auth sufficient pam_fprintd.so 指纹认证 auth sufficient pam_unix.so nu ...
- GCD实战之多个网络请求的并发
// 创建信号量 dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); // 创建全局并行 dispatch_queue_t q ...
- 优秀.NET界面控件DevExpress v19.1.6全新来袭!新改进抢“鲜”看
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- 百度AI训练营笔记
参加了两天百度AI训练营,简单记录一下学到的东西 一.知识图谱 知识图谱是让机器具有积累知识.运用知识的本领. 由于目前知识量很大,所以人工标注的方法无法满足,可以采用数据驱动.自底向上的方式自动构建 ...
- C/C++数据类型判断与转换
最近总想着写一些通用的代码,然集中收纳到自己的私人库中去,这些代码期望能与公司基础数据结构无关.然而这比较难,因为无论如何,必需要用到一些结构 化的东西,这些与基础引擎等有关,必需极度抽象才可以做到层 ...
- HTML中的表格和图像总结
㈠表格 ⑴表格的基本结构 ①表格的基本标签有:table标签(表格),tr标签(行),td标签(单元格).<tr>标签和<td>标签都要在表格的开始标签<table> ...
- JSONArray排序和倒转
JSONArray排序 // JSONArray转list List<JSONObject> list = JSONArray.parseArray(ordersDataArray.toJ ...
- Ubuntu下搜狗输入法乱码(二)
本文适用于Ubuntu 16.04,造冰箱的大熊猫@cnblogs 2018/10/25 搜狗输入法时不时出现候选字乱码的问题.参照网上所说的修改Fcitx配置中的简体中文和繁体中文转换配置的方法,无 ...