NodeJs基本概念

来源:互联网 发布:战狼2 知乎 豆瓣 编辑:程序博客网 时间:2024/06/10 15:08

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

(二)

三、

1 0
原创粉丝点击