node函数 node路由

node函数

js中一个函数可以作为另一个函数的参数,即先定义一个函数,然后传递

匿名函数

这个学过,过

node路由

要为路由提供请求的url,和其他需要的get的post请求。

随后,路由会根据需要进行执行响应的代码。

因此,需要根据http请求,从中提取中需要的url和get和post参数

两个模块,url和qureystring模块

http://localhost:8888/start?foo=bar&hello=word

这个url中
url.parse(string).pathname   start
url.parse(string).query	参数部分即问号后面的内容

querystring.parse(queryString)['foo']	bar内容
querystring.parse(queryString)['hello']  word内容

这是说明

提取url

var http = require('http');
var url = require('url');

(function start() {	// 创建一个命名空间
	function onRequest(request, response) {
		var pathname = url.parse(request.url).pathname;	// 提取出来url的内容
		console.log(pathname);
		response.writeHead(200, {'Content-Type': 'text/plain'});
		response.write('hello word');
		response.end();
	};

	http.createServer(onRequest).listen(1937);
}());

访问连接 http://127.0.0.1:1937/hello%20word.html

http://127.0.0.1:1937/hello%20word

返回消息

PS C:\Users\mingm\Desktop\test> node main.js
/hello%20word
/favicon.ico
/hello%20word.html
/favicon.ico

两个请求,一个是hello word的请求,由于url不支持空格,所以用%20进行替代,node返回客户端请求的是hello word

favicon.ico是浏览器默认的一个请求,若没有图标文件的缓存都会对服务器请求一个图标文件

编写一个路由

PS C:\Users\mingm\Desktop\test> node index.js
Server has started.
hello word!
hello word!

文件结构

- test
    router.js
    server.js
    index.js

文件内容

// router.js
function route(pathname) {
	console.log("hello word!");
};

exports.route = route; // 导出方法


// server.js
var http = require('http');
var url = require('url');

function start(route) {
	function onRequest(request, response) {
		var pathname = url.parse(request.url).pathname;

		route(pathname);	// 使用route的js模块(已经在router.js文件导出)传入的参数的值为pathname
		
		response.writeHead(200, {'Content-Type': 'text/html'});
		response.write('<head><meta charset="utf-8"></head>');
		response.write('Hello word! hello word!');
		response.end();
	};

	http.createServer(onRequest).listen(1937);
  	console.log("Server has started.");
};

exports.start = start;



// index.js
var server = require('./server');
var router = require('./router');

server.start(router.route);

访问结果

http://127.0.0.1:1937/
Hello word! hello word!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一“技”之长

OS X 开发:打开文件面板NSOpenPanel应用

      在Mac桌面软件开发中,如果涉及到对文件的操作,无论是新建文件还是选择或读取文件,都离不开文件路径的定位,NSOpenPanel类提供了简洁的文件选...

13630
来自专栏互联网杂技

JavaScript定时器:setTimeout与setInterval 定时器与异步循环数组

深入了解一下 关于JavaScript定时器的知识; setTimeout与setInterval简述 setTimeout与setInterval使用方法基...

41860
来自专栏九彩拼盘的叨叨叨

CSS拓展语言:Sass介绍

CSS拓展语言出现的原因是,CSS自身支持的功能能有限(如不支持变量,条件控制,循环等编程元素),并不满足我们想要的一些功能。而CSS拓展语言支持CSS不支持的...

11420
来自专栏DeveWork

彻底解决WordPress 中 半角全角字符转义 的问题

WordPress中会默认会自动转义一些字符,如将‘--’转义为‘-’破折号,网络上也称“转换全半角标点符号”或者“代码转义”。因为Wordpress 会智能地...

36350
来自专栏IMWeb前端团队

谈一谈CDN的JS,CSS文件加载出错主域名重试的问题

背景知识 【卡爷文章】CSS文件动态加载(续)—— 残酷的真相 浏览器 CSS/JS 加载能力测试表 css、js的相互阻塞 了解这些基础知识之后,我们再来谈谈...

26350
来自专栏hbbliyong

JavaScript 调试小技巧

‘debugger;’ 除了console.log,debugger就是另一个我很喜欢的快速调试的工具,将debugger加入代码之后,Chrome会自动在插入...

30270
来自专栏吴裕超

js设计模式之惰性单例模式

<html> <body> <button id="loginBtn">登录</button> </body> <script> var cr...

38160
来自专栏Golang语言社区

Golang控制goroutine的启动与关闭

最近在用golang做项目的时候,使用到了goroutine。在golang中启动协程非常方便,只需要加一个go关键字:  go myfunc(){     ...

39270
来自专栏林冠宏的技术文章

关于在用curl函数post网页数据时,遇上表单提交 type为submit 类型而且没有name和id时可能遇到的问题及其解决方法

curl函数库实现爬网页内容的链接在 http://www.cnblogs.com/linguanh/p/4292316.html 下面这个是没有name和id...

21370
来自专栏Core Net

C# 处理Word自动生成报告 三、设计模板

50450

扫码关注云+社区

领取腾讯云代金券