NodeJs基本概念

一、 node.js的web应用的基本结构
1、 HTTP服务器(server.js):
2、 路由(router.js):
对于不同的请求,根据请求的URL,服务器需要给予不同的响应,词路由即是此功能,用于把请求对应到请求处理程序(requestHandle.js)。
路由还应该能处理POST数据,并且把数据封装成更友好的格式传递给请求处理程序,因此需要处理请求数据的功能
3、 请求处理程序(requestHandle.js):
4、 视图逻辑(requestHandlers.show) ():
把内容显示出来,这意味着我们需要一些视图逻辑(requestHandlers.show)供请求处理程序使用,以便将图片返回给用户的浏览器
5、 上传处理功能(requestHandlers.upload):
用户需要上传图片,所以我们需要上传处理功能(requestHandlers.upload)来处理这方面的细节。
二、 各结构说明:
(一) 一个基础的HTTP服务器
原则:把不同功能的代码放入不同的模块中(不同的js源文件)
这种方法允许你拥有一个干净的主文件(main file),你可以用Node.js执行它( app.js或者index.js );同时你可以拥有干净的模块,它们可以被主文件和其他的模块调用。也易于扩展和维护。
那么,现在我们来创建一个用于启动应用的主文件(把主文件叫做index.js或多或少是个标准格式)和一个HTTP服务器代码模块( server.js)。
例子:
server.js
1、 请求一个http模块:
请求(require)Node.js自带的 http 模块,把它赋值给 http 变量。

var http = require("http"); //请求Node.js自带的 http 模块,把它赋值给http变量

2、 调用一个创建服务器的方法(createServer):

http.createServer(function(request, response){}).listen(8888);

调用http模块提供的函数:createServer 。这个函数会返回一个对象(server对象),这个对象有一个叫做 listen 的方法,这个方法有一个数值参数,指定这个HTTP服务器监听的端口号。
我们可以用这样的代码来启动服务器并侦听8888端口:

var http = require("http");
var server = http.createServer();//定义一个服务器变量/对象
server.listen(8888);

这段代码只会启动一个侦听8888端口的服务器,它不做任何别的事情。

例子:
server.js
//请求Node.js自带的?http?模块,把它赋值给?http?变量。

var http = require("http");

http.createServer(function(request,response){
    response.writeHead(200,{"Content-Type":"text/plain"});//注意小括号里面的语法
    response.write("Hello World");
    console.log(“Ingrid”);
    response.end();//结束语句是必须的
}).listen(8888);

说明:
运行结果:
浏览器:
这里写图片描述
Console:
这里写图片描述
命令框出现两次Ingrid,是因为访问了两次服务器,两次访问的URL分别为:
http://localhost:8888/
http://localhost:8888/server.js

3、 定义一个函数响应

function(request, response){}

这个函数定义是createServer()的唯一一个参数

说明:在JavaScript中,函数和其他变量一样是可以被传递的
例子:

function say(word) {
  console.log(word);
}

function execute(someFunction, value) {
  someFunction(value);
}

execute(say, "Hello");
//把 say 函数作为execute函数的第一个变量进行了传递。
//这里传递的不是 say 的返回值,而是 say 本身!
//这样一来, say 就变成了 execute 中的本地变量 someFunction
在这个例子中,函数名say作为变量被传递,而且先定义了函数say。
我们不一定要“先定义,再传递”,我们可以直接在另一个函数的括号中定定义和传递这个函数,也就是,定义和传递同时进行。如下例:

例子:

Test2.js
function execute(someFunction, value) {
  someFunction(value);
}

execute(function(word){console.log(word);},"Hello");
//跟前一个例子相比,没有定义say函数。
//在 execute 接受第一个参数的地方直接定义了我们准备传递给 execute 的函数。
//用这种方式,我们甚至不用给这个函数起名字,这也是为什么它被叫做 匿名函数 。

(二)

三、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值