[nodejs] day1-创建服务器
一、使用匿名函数(新建文件service.js)创建一个服务器:
var http = require("http"); //Node.js自带的 http 模块,并且把它赋值给 http 变量
//使用匿名函数的方法
http.createServer(function(request, response){ //调用http模块提供的函数: createServer
console.log("Request received");
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello world");
response.end();
}).listen(8088); //指定这个HTTP服务器监听的端口号
运行node service.js,在浏览器输入127.0.0.1:8088,就可以看到熟悉的hello world了~
二、使用非匿名函数(新建文件service.js)创建服务器:
var http = require("http"); //Node.js自带的 http 模块,并且把它赋值给 http 变量
//使用传递函数的方法
var myfunction = function(request, response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello");
response.end();
}
var myservice = http.createServer(myfunction);
myservice.listen(8088);
运行node service.js,在浏览器输入127.0.0.1:8088,就可以看到熟悉的hello world了~
三、使用模块分离的方式来创建一个服务器,新建service.js,输入:
var http = require("http"); //Node.js自带的 http 模块,并且把它赋值给 http 变量
function start(){
function onRequest(request,response){
console.log('Request received.')
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello world");
response.end();
}
http.createServer(onRequest).listen(8088);
console.log("Server has started.");
}
exports.start = start;//模块函数导出
创建index.js ,输入:
var service = require("./service");
service.start();
运行node index.js,在浏览器输入127.0.0.1:8088,就可以看到熟悉的hello world了~
四、为服务器增加一个路由模块,并注入到service.js中:
service.js:
var http = require("http"); //Node.js自带的 http 模块,并且把它赋值给 http 变量
var url = require("url");//对路由进行解析的模块
function start(route){ //传递了一个参数给start,在index.js中,回把路由注入进去
function onRequest(request,response){
/*
* 对于一个URL: http://localhost:8088/start?foo=bar&hello=world
* 以下的pathname得到的是"start"
* */
var pathname = url.parse(request.url).pathname;
console.log("Request for "+pathname+"received");
route(pathname);//将参数传递给路由
console.log('Request received.')
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello world");
response.end();
}
http.createServer(onRequest).listen(8088);
console.log("Server has started.");
}
exports.start = start;
route.js:
function route(pathname){
console.log("About to route a request for "+pathname);
}
exports.route = route;
最后,index.js:
var service = require("./service");//使service模块可以被注入到服务器中
var route = require("./route");//使route模块可以被注入到服务器中
service.start(route.route);
运行node index.js,启动服务,在浏览器中输入 http://localhost:8088/start?foo=bar&hello=world,
在交互窗口可以看到输入的对路由的解析哦~
五、为服务器将路由模块和路由的处理函数分离开来,用数组关联在一起(松耦合)
路由对应的处理方法:requestHandles.js
//为不同请求提供出来方法
function start(){
console.log("Request handler 'start' was called.");
}
function upload(){
console.log("Request handler 'upload' was called.");
}
exports.start = start;
exports.upload = upload;
将路由处理方法和路由的路径耦合在一起,index.js:
var service = require("./service");//使service模块可以被注入到服务器中
var route = require("./route");//使route模块可以被注入到服务器中
var requestHandlers = require("./requestHandlers");
var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
service.start(route.route, handle);
路由处理,route.js:
function route(handle,pathname){
console.log("About to route a request for "+pathname);
if(typeof handle[pathname] === 'function'){
handle[pathname]();
}else{
console.log("No request handler found for "+pathname);
}
}
exports.route = route;
service.js:
var http = require("http"); //Node.js自带的模块,并且把它赋值给变量
var url = require("url");
function start(route, handle){ //依赖注入,将路由和处理都注入
function onRequest(request,response){
/*
* 对于一个URL: http://localhost:8088/start?foo=bar&hello=world
* 以下的pathname得到的是"start"
* */
var pathname = url.parse(request.url).pathname;
console.log("Request for "+pathname+"received");
route(handle,pathname);//将参数传递给路由
console.log('Request received.')
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello world");
response.end();
}
http.createServer(onRequest).listen(8088);
console.log("Server has started.");
}
exports.start = start;
入口模块:index.js
var service = require("./service");//使service模块可以被注入到服务器中
var route = require("./route");//使route模块可以被注入到服务器中
var requestHandlers = require("./requestHandlers");
var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
service.start(route.route, handle);
[nodejs] day1-创建服务器的更多相关文章
- nodeJs中创建服务器
var http=require('http'); var httpObj=http.createServer(function(req,res) { console.log('someBody:' ...
- 用nodejs创建服务器显示html页面
nodejs版本:v10.14.2 1.首先准备一个简单的html页面 <!DOCTYPE html> <html lang="en"> <head& ...
- Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架
目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...
- nodejs+express创建一个简单的服务器
//首先安装express //1.引入express const express = require('express'); //2.创建服务器对象 let server = express(); ...
- 【nodejs】创建第一个应用
我已经安装好了nodejs(采用安装包的方式),并在idea中安装好nodejs插件,具体参考我的随笔: http://www.cnblogs.com/yujihang/p/7011356.html ...
- 在nodejs中创建child process
目录 简介 child process 异步创建进程 同步创建进程 在nodejs中创建child process 简介 nodejs的main event loop是单线程的,nodejs本身也维护 ...
- 在nodejs中创建cluster
目录 简介 cluster集群 cluster详解 cluster中的event cluster中的方法 cluster中的属性 cluster中的worker 总结 在nodejs中创建cluste ...
- NodeJS搭建HTTPS服务器
[NodeJS搭建HTTPS服务器] http://cnodejs.org/topic/54745ac22804a0997d38b32d
- nodejs,node原生服务器搭建实例
nodejs,node原生服务器搭建实例
- java20 创建服务器:ServerSocket
创建服务器:ServerSocket import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...
随机推荐
- webapp之路--之query media
query media是css3中的模块,对于移动端的开发是非常重要的,是响应式web设计的中不可或缺的一部分.简单点说就是根据不同移动设备的屏幕参数来制定不同的css方案以实现web的响应式开发.目 ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- Shell条件与测试
分类参考 文件状态测试 -b filename 当filename 存在并且是块文件时返回真(返回0) -c filename 当filename 存在并且是字符文件时返回真 -d pathname ...
- axis2开发实例(二)建立独自的新工程
第一部分 环境搭建 1. 环境搭建 (1) 下载Axis2服务包:axis2-1.6.2-bin.zip,axis2-1.6.2-war.zip,分别解压到D:\webservice_axis ...
- UIResponder学习
http://blog.csdn.net/jimzhai/article/details/23283515 UIResponder 介绍 UIResponder 这个类定义了很多用来处理响应和时间处理 ...
- 部署项目时遇到的问题---IIS7.X配置ASP.NET MVC4
1.安装.NET Frameword4.0框架.如果先装IIS后装4.0框架的话,要在IIS注册4.0框架.具体方法见下图 .NET框架版本请根据操作系统版本自行选择.注册完后,在“ISAPI和CGI ...
- 解决word启动时报找不到mathpage.wll错误
按下面的网址进行操作即可: http://www.mathtype.cn/wenti/word-jianrong.html
- Leetcode 176. Second Highest Salary
Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | S ...
- RabbitMQ消息队列(二):”Hello, World“
本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“. 首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列.它实现 ...
- Repeater绑定事件ItemDataBound中获取数据库中数据
protected void rp1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemTyp ...