【问题标题】:Node + now.js + Model-View-Control-PatternNode + now.js + 模型-视图-控制-模式
【发布时间】:2012-06-13 22:37:50
【问题描述】:

我正在使用基于 MVC 模式(模板和 PHP 类)的论坛软件。 页面如下所示:domain.com/index.php?page=Test

我想使用 node 和 now.js 在一个页面 (domain.com/index.php?page=Chat) 上设置一个聊天服务器。 现在我遇到一个问题:如何告诉服务器端代码聊天服务器必须在 index.php?page=Chat 显然我不能这样做:

fs.readFile('index.php?page=Chat')

任何想法如何在这样的 URL 上设置节点服务器? 谢谢!

【问题讨论】:

  • 为什么不把聊天放到<iframe>
  • 那行不通,因为我的聊天需要模板逻辑。
  • 你在“模板逻辑”下是什么意思,将聊天放入 iframe 是如何破坏它的?
  • 因为我不能在 iframe 中使用模板脚本?模板是非常聪明的模板..
  • 你打算如何在 Node 驱动的聊天中使用 Smarty,它是 PHP 模板引擎?我可能不明白你到底在做什么,但我认为你走错了路。

标签: php javascript model-view-controller node.js nowjs-sockets


【解决方案1】:

我会更深入地研究 node.js。由于节点 本身就是一个网络服务器,因此您必须了解一些有关路由和服务器配置如何工作的知识。基本上,您的(可能的)Apache 服务会监听端口 80 上的任何内容。 Apache 查看 URI,并决定在您的应用程序中运行哪个脚本来启动一个 php 进程,该进程运行您的代码并生成要发送给用户的网页。

所以当你看到:

domain.com/chat

domain.com/index.php?page=Chat

这是 Apache 的说法,“嘿,你配置我将 '/chat' 读取为 /index.php?page=Chat,所以我将关闭该脚本”。

Node.js 就像 Apache 和 PHP 合二为一。它处理请求并构建页面。因此,当请求进入时,您将让 node.js 和 Apache 互相踩踏。要让 两个 应用程序在端口 80 上侦听,您必须使用以下用户:

https://github.com/nodejitsu/node-http-proxy

此节点模块将未处理的服务器请求转发到 Apache,这将允许您拥有混合的 nodejs/apache+php 应用程序。

就模板而言,php 和 javascript 模板不能混合使用,因为它们是基于完全不同的语言构建的。所以,你几乎不走运。 Node 有一个非常丰富的模板引擎列表。其中一些可能与您使用的语法几乎相同,因此移植起来很简单。

https://github.com/joyent/node/wiki/modules#wiki-templating

我希望这能回答您的问题。正如评论的那样,我仍然会使用 iFrame,将节点放在不同的端口上,并保持两种架构的清洁和分离。或者,使用聊天服务,而不必费心设置一个完整的单独应用程序。除非你想学习,在这种情况下,发疯。 :)

【讨论】:

    【解决方案2】:

    您可以在端口 8080 上运行节点服务器,并且可以将客户端 js 作为普通 javascript 包含在任何可以工作的视图文件中

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多