使用nodejs制作网站

我的理解是:

  1. 前端页面(比如一个index.html)
  2. web服务器(比如apache)
  3. 后端程序(比如用java或php写一个)

在我的概念里,这三者是分离的,但是在nodejs中,2和3似乎是在一起的,查询nodejs的相关信息时也总是找不到对这方面的介绍。
希望得到nodejs中web服务器后端程序这两者的一些解释
(比如如何做web服务器的使用和后端程序的开发,找到的相关信息总是十分混乱)
补充:具体地,假设我需要实现

  1. 使用ip访问我的index.html
  2. 后端程序响应index.html中的一个post请求,应该如何使用nodejs

(不需要具体代码实现,仅仅想知道如何实现)

阅读 3.4k
2 个回答

楼上大佬讲了不少理论,我来补充一下直接针对性的回答吧。

  • 一个典型的nodejs服务器确实就是2和3一起处理的。如果你是科班出身,网络课会有用C/++写服务器的作业,也是2和3一起处理的。从这个角度上来讲,nodejs实际上有点返璞归真的感觉。
  • 但是nodejs也可以不处理2,只处理3,典型的场景是nginx+nodejs做负载均衡。但是这个时候nodejs在逻辑上仍然是独立的,它跟nginx之间是通过标准HTTP协议通信,而不是cgi。
  • 传统网站会这么分,是因为刚发明HTTP的时候大部分内容都是静态的,很多网站就一个apache,3根本没有。用nodejs的网站则大部分都是动态的,把路由和逻辑拆开没啥意义,还把配置文件分散了。

回答题主的补充问题:

如果做过C/++服务器的作业肯定会理解得非常透彻
  1. 与客户端完成TCP握手
  2. 客户端发送报文
  3. nodejs收到报文
  4. nodejs反序列化请求行,拿到请求行中的post
  5. nodejs把报文主体交给对应的回调函数

分层这个事吧,其实各家都有不同的分法,主要看你用什么样的架构。比如:

企业应用架构模式

这里就有5种分法,分别对应不同的架构模式。
回到题目里,其实分成“表现层”、“控制层”和“应用层”我觉得是合理的(所以建议你可以去看看有关于MVC的东西),之所以没有一个“网站服务器”,是因为要看网站架构。如果同时有前后端的内容呢,就可以用Web服务器把请求分开,前端的返回静态资源,涉及到后端的就转发给后端的应用服务去处理(但后端应用服务一样可以自己处理,只是用Web服务器可能更轻量和灵活一些);但是如果是纯后端项目呢,那就不需要Web服务器转发了,直接用后端的应用服务监控请求就行了,也就没有“网站服务器”一说了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题