gpt4 book ai didi

node.js - NodeJS代码理解

转载 作者:搜寻专家 更新时间:2023-10-31 23:43:15 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

7年前关闭。




Improve this question




我对 nodejs 相当陌生,并且一直在查看一些代码并试图理解它。有人可以忍受我并帮助我理解以下代码片段。我的问题可能非常基本,但请理解我正在学习 nodejs 和 express,并且一直在努力理解一些现有的代码。我已经用数字标记了代码行,并且问题由相同的数字提出。

var ChatApp = global.ChatApp = {}
, conf = ChatApp.conf = require('./conf').config (1)
, http = require('http') (2)
, path = require('path') (3)
, express = require('express')
, app = express()
;

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.logger('dev')); (6)
app.use(express.bodyParser()); (7)

app.use(express.methodOverride()); (8)
app.use(express.cookieParser('your secret here')); (9)
app.use(express.session({secret: 'PTKACSxSq24PlZ9IAPRMy3_2'})); (10)

app.all('*', function(req, res, next) {
var oneof = false;
if(req.headers.origin) {
res.header('Access-Control-Allow-Origin', req.headers.origin);
oneof = true;
}
if(req.headers['access-control-request-method']) {
res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']);
oneof = true;
}
if(req.headers['access-control-request-headers']) {
res.header('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
oneof = true;
}
if(oneof) {
res.header('Access-Control-Max-Age', 60 * 60 * 24 * 365);
} (11)

// intercept OPTIONS method
if (oneof && req.method == 'OPTIONS') {
res.send(200);
}
else {
next();
}
}); (12)

app.use(app.router); (13)
app.use(express.static(path.join(__dirname, 'public')));

if ('development' == app.get('env')) {
app.use(express.errorHandler());
} (15)

server = http.createServer(app); (16)

require('./lib/chat').init(server); (17)

(1) 我理解 require 的作用,但 conf = ChatApp.conf = require('./conf').config ?我们是否制作了一个变量 conf 并使其等于 ChatApp。 session ?也是要求指向 parent directory/conf/config ?我问这个是因为在我存在此文件的父目录中,没有 conf 文件夹。只有一个conf。 js 文件,但它被包含在此变量中(使用 console.log 检查)。它是如何发生的?

(2),(3) require(http)并要求(路径)。为什么需要包含http和path?这2个解决什么目的?

(6)app.use(express.logger('dev')) 来自express网站,用于记录每个请求。我的问题是函数中的参数 dev 是做什么用的?是路径吗?

(7) app.use(express.bodyParser()) :来自 express 网站:支持 JSON、urlencoded 和 multipart 请求的请求体解析中间件。这个中间件只是对 json()、urlencoded() 和 multipart() 中间件的封装。但它的真正含义是什么? express.bodyparser 是做什么的?

(8) app.use(express.methodOverride()); express 网站上没有说明。不确定它的含义以及为什么使用它。

(9) express.cookieparser解析 cookie header 字段。但是什么是 cookie 中的 header 字段。据我所知,浏览器 cookie 具有以下字段。名称、内容、域、路径、发送、过期。

(10) app.use(express.session({secret: 'PTKACSxSq24PlZ9IAPRMy3_2'}));我找不到任何名为 express.session() 的方法。它有什么作用?

(12) 对于代码片段 12,我无法理解我们试图用它来实现什么?

(13) app.use(app.router) 当我做了app.router的console.log时,它给了我这个
function router(req, res, next){
self._dispatch(req, res, next);
}

知道我们为什么要这样做吗?它似乎是一个通用的路由器功能,但为什么需要包含它?

(15) app.get.env给了我发展,它来自 express/lib/application.js 中的一个文件.我们为什么要做这个测试?
(16) 这完全令人困惑。我见过这个 var server = http.createServer() and var app = express()这意味着 express 有一个内置的 http 服务器,但为什么要这样做 http.createserver(express())http.createserver(app) ?

(17) 我的应用程序根目录中有一个 lib/chat 文件夹,但它有许多文件,其中包含一个 index.js 文件。这是否意味着将 index.js 文件包含在该文件夹中或文件夹中的所有 js 文件中?为什么是初始化服务器?

任何人的任何帮助都将不胜感激。

最佳答案

免责声明

以下答案不会告诉您以下内容是什么:HTTP 请求、REST、 session 。另请注意,您不太可能再次得到如此多的问题的答案。

答案

(1) I understand what require does but conf = ChatApp.conf = require('./conf').config? Are we making a variable conf and making it equal to ChatApp.conf?



是的

Also is the require is pointing to parent directory/conf/config?



不。它需要 ./conf.js./conf.node , .js是首选。模块导出 config字段,它被访问。

(2),(3) require(http) and require(path). Why is the need to include http and path? What purpose do these 2 solve?



http 是 HTTP 服务器所必需的, path 对于基于路径的函数。

(6)app.use(express.logger('dev')) From express website, it is used to log every request. My question is what is the parameter dev in the function for? Is it a path ?



这是 logger middleware from Connect :

  • dev concise output colored by response status for development use

(7) app.use(express.bodyParser()) : From express website: Request body parsing middleware supporting JSON, urlencoded, and multipart requests. This middleware is simply a wrapper the json(), urlencoded(), and multipart() middleware. But what does it really mean? What does express.bodyparser do?



它使您能够解析 HTTP 请求的正文。如果您不知道什么是 HTTP 请求,您可能会停下来阅读答案的其余部分,了解一点关于 HTTP 的知识,然后再回来学习其余部分。

(8) app.use(express.methodOverride()); No explanation on express website. Not sure what it means and why is it used.



大多数 Web 浏览器仅支持 HTTP 动词 GET 和 POST。但是,为了提供 RESTful 服务(另一个花哨的词),还需要 PUT/PATCH 和 DELETE。 methodOveride使您能够创建将通过 POST 发送的表单,但根据它们的 _method 进行解释属性。

(9) express.cookieparser parses the cookie header field. but what is a header field in a cookie. From what I know, a browser cookie has the following fields. Name, Content, Domain, Path, Send For, Expires.



好吧,还记得 HTTP 请求吗?一个 cookie 被发送到您浏览器的 HTTP 请求的 header 中。那是 Cookie:标题。

(10) app.use(express.session({secret: 'PTKACSxSq24PlZ9IAPRMy3_2'})); I couldn't find any method called express.session(). What does it do?



它使您能够使用 session 。

(12) For code fragmant 12, I couldn't understand what are we trying to achieve with it?



此片段解决了 cross-site requests 的访问控制问题.

(13) app.use(app.router) When I did a console.log of app.router, it gave me this

function router(req, res, next){
self._dispatch(req, res, next);
}

Any idea why are we doing this? It appears to be a generic router function but why is the need to include it?


app.router将路由请求。例如 app.get('/hello-world')´ will take all requests with GET/hello-world . You need to use app.router` 以启用此行为。

(15) app.get.env gave me development and it is coming from a file within express/lib/application.js. Why are we doing this test?



因为我们想用一个很好的错误消息来处理错误。

(16) This is totally confusing. I have seen this var server = http.createServer() and var app = express() which means express has a built in http server within it but why would be do http.createserver(express()) or http.createserver(app)?



因为这是 3.x 的快速方式,所以它不再带有成熟的 http 服务器。这样,您就可以使用您的 app作为许多其他事情的回调。

(17) There is a lib/chat folder in my app root but it has a host of files with an index.js file in it. Does it mean to include the index.js file in that or all the js files in the folder? And why the init server?



它包括 index.js . init(server)可能会对服务器做一些事情。您需要检查相应的文件。

关于node.js - NodeJS代码理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com