nodejs 怎么用到 php 网站上?

2015-02-17 20:24:53 +08:00
 ugmc

从看到sf上的一个问题markdown解析如何做到前后端效果一致 有人说:用nodejs可以实现。现在我的问题是php网站上怎么调用nodejs?谷歌搜索没找到相关资料,全是讲述比较php和nodejs的文章。网站是php开源系统,想用markdown编辑器。不过有些编辑器虽然好,可是没提供后端解析的php库。前端用marked.js解析markdown. 我也想输出的效果保持一致。
还有弱弱的问一下,为什么好多网站markdown解析为什么分前后端?只提交给前端有什么不好?

10782 次点击
所在节点    Node.js
23 条回复
forex118899
2015-02-17 20:34:48 +08:00
apache reverse proxy
invite
2015-02-17 21:31:06 +08:00
前端后端效果一致? 没看明白什么意思.
oott123
2015-02-17 22:13:27 +08:00
我认为你的思路不太正确。
前端解析,或者后端解析,都好。
前端后端都要解析是干啥……
typcn
2015-02-17 22:15:29 +08:00
node.js 是一种编程语言,而不是一个软件,与PHP没有任何关系
typcn
2015-02-17 22:16:41 +08:00
好吧我只看标题了,前端后端解析一个就行了,为什么都要解析

如果要调用的话,开 Socket 吧,基于 TCP/IP 通讯比较容易
ETiV
2015-02-17 22:22:24 +08:00
markdown 准确来说是渲染吧~ 从 markdown 文本渲染成 HTML .

后端渲染出来, 给谁看?
fising
2015-02-17 22:23:52 +08:00
前端解析就ok了吧
lk09364
2015-02-17 22:27:10 +08:00
有个问题。你的『输出』是输出到那里?前端已经可以解析了啊。直接把 md 输出到前端解析不好吗。

另:如果一定要分开前端后端一起解析的话,找两个依照标准的库就应该可以了。或者把 js 库重写为 php 也行。
XueSeason
2015-02-17 22:27:20 +08:00
@typcn Node.js是一个基于Chrome V8 引擎,为简单迅速构建可扩充的网络应用的一个平台。而不是编程语言!真正的编程语言应该是JavaScript。
PHP是采用:浏览器 􏲢 HTTP 服务器 􏲢 PHP 解􏰙器的架构,而Node.js直接将HTTP服务器抽离,直接面向浏览器用户。
和PHP还是有那么一点微妙的关系就是都是用于服务器。
typcn
2015-02-17 22:34:16 +08:00
@XueSeason 手误
heiybb
2015-02-17 22:42:05 +08:00
根本看不到内容,非得ctrl+A,这样的样式真是讨厌= =
lincanbin
2015-02-17 23:12:17 +08:00
内网通讯,node.js监听一个端口,收发数据。
PHP用Socket类函数来与node.js交互。

话说node.js能做的话,PHP九成九也能做,为什么不重写个PHP版本的?
mkeith
2015-02-17 23:18:53 +08:00
后端肯定还要再解析一遍的吧
imzyxwvu
2015-02-18 01:32:09 +08:00
php调用node app提供的api
akfish
2015-02-18 01:55:03 +08:00
Markdown在后端完全可以不用解析,当纯文本就行,该怎么存怎么存。
其实就算你在后端撸了,结果是HTML,依然是纯文本。
前端解析只要做了sanitization防止XSS,就没有什么问题,这基本上是前端parser的标配。
前后端都撸那是纯蛋疼。

至于所谓的前后端效果不一致,那是因为Markdown没有一个统一的标准(当然有个社区发起的CommonMark标准,但不是所有parser都完全遵守),于是各种parser实现都有差异。可以参见babelmark项目,对比了各种流行parser输出结果的区别:
http://johnmacfarlane.net/babelmark2/
用node.js能避免这一点,完全是因为前后端都是JavaScript,能跑同样的parser,自然就没有一致性的问题。
ugmc
2015-02-18 02:47:38 +08:00
感谢楼上解答。现在github找到一个开源markdown编辑器。功能不错。而这编辑器的前端解析器就是marked.js。存到数据库是原markdown格式文本。而后端渲染成html格式输出到页面时因没有匹配的php解析库效果肯定会不一样。所以把merked.js运行在node.js中,然后后端nodejs渲染格式返回的结果调用到php网站页面上,就是不知道怎么实现。有经验的可以分享一下。
ugmc
2015-02-18 02:51:30 +08:00
@lk09364 js重写成php可不简单吧?
bsbgong
2015-02-18 08:52:26 +08:00
如果我没理解错,就是进程间通信
1. 把你的node程序准备好(定义好输入输出),命令行能启动它运行输出结果。
2. 在php里使用exec调用node程序,获取输出。http://php.net/manual/zh/function.exec.php
3. php把结果返回到前端(echo, ob等随便你)
中间的输入输出可以使用临时文件
lizheming
2015-02-18 09:26:51 +08:00
http://segmentfault.com/q/1010000000671600/a-1020000000671629 直接 PHP 和 node.js 通信,走 API...=——=!如果你是评论那个 raymil 的话就当我没说吧....
ugmc
2015-02-18 13:47:11 +08:00
@lizheming 我已经看到那答案了,如果没有经验可分享,那就不用copy过来。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/171545

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX