从看到sf上的一个问题markdown解析如何做到前后端效果一致 有人说:用nodejs可以实现。现在我的问题是php网站上怎么调用nodejs?谷歌搜索没找到相关资料,全是讲述比较php和nodejs的文章。网站是php开源系统,想用markdown编辑器。不过有些编辑器虽然好,可是没提供后端解析的php库。前端用marked.js解析markdown. 我也想输出的效果保持一致。
还有弱弱的问一下,为什么好多网站markdown解析为什么分前后端?只提交给前端有什么不好?
1
forex118899 2015-02-17 20:34:48 +08:00
apache reverse proxy
|
2
invite 2015-02-17 21:31:06 +08:00
前端后端效果一致? 没看明白什么意思.
|
3
oott123 2015-02-17 22:13:27 +08:00
我认为你的思路不太正确。
前端解析,或者后端解析,都好。 前端后端都要解析是干啥…… |
4
typcn 2015-02-17 22:15:29 +08:00
node.js 是一种编程语言,而不是一个软件,与PHP没有任何关系
|
5
typcn 2015-02-17 22:16:41 +08:00
好吧我只看标题了,前端后端解析一个就行了,为什么都要解析
如果要调用的话,开 Socket 吧,基于 TCP/IP 通讯比较容易 |
6
ETiV 2015-02-17 22:22:24 +08:00
markdown 准确来说是渲染吧~ 从 markdown 文本渲染成 HTML .
后端渲染出来, 给谁看? |
7
fising 2015-02-17 22:23:52 +08:00 via iPad
前端解析就ok了吧
|
8
lk09364 2015-02-17 22:27:10 +08:00
有个问题。你的『输出』是输出到那里?前端已经可以解析了啊。直接把 md 输出到前端解析不好吗。
另:如果一定要分开前端后端一起解析的话,找两个依照标准的库就应该可以了。或者把 js 库重写为 php 也行。 |
9
XueSeason 2015-02-17 22:27:20 +08:00
@typcn Node.js是一个基于Chrome V8 引擎,为简单迅速构建可扩充的网络应用的一个平台。而不是编程语言!真正的编程语言应该是JavaScript。
PHP是采用:浏览器 HTTP 服务器 PHP 解器的架构,而Node.js直接将HTTP服务器抽离,直接面向浏览器用户。 和PHP还是有那么一点微妙的关系就是都是用于服务器。 |
11
heiybb 2015-02-17 22:42:05 +08:00
根本看不到内容,非得ctrl+A,这样的样式真是讨厌= =
|
12
lincanbin 2015-02-17 23:12:17 +08:00
内网通讯,node.js监听一个端口,收发数据。
PHP用Socket类函数来与node.js交互。 话说node.js能做的话,PHP九成九也能做,为什么不重写个PHP版本的? |
13
mkeith 2015-02-17 23:18:53 +08:00
后端肯定还要再解析一遍的吧
|
14
imzyxwvu 2015-02-18 01:32:09 +08:00 via iPhone
php调用node app提供的api
|
15
akfish 2015-02-18 01:55:03 +08:00 1
Markdown在后端完全可以不用解析,当纯文本就行,该怎么存怎么存。
其实就算你在后端撸了,结果是HTML,依然是纯文本。 前端解析只要做了sanitization防止XSS,就没有什么问题,这基本上是前端parser的标配。 前后端都撸那是纯蛋疼。 至于所谓的前后端效果不一致,那是因为Markdown没有一个统一的标准(当然有个社区发起的CommonMark标准,但不是所有parser都完全遵守),于是各种parser实现都有差异。可以参见babelmark项目,对比了各种流行parser输出结果的区别: http://johnmacfarlane.net/babelmark2/ 用node.js能避免这一点,完全是因为前后端都是JavaScript,能跑同样的parser,自然就没有一致性的问题。 |
16
ugmc OP 感谢楼上解答。现在github找到一个开源markdown编辑器。功能不错。而这编辑器的前端解析器就是marked.js。存到数据库是原markdown格式文本。而后端渲染成html格式输出到页面时因没有匹配的php解析库效果肯定会不一样。所以把merked.js运行在node.js中,然后后端nodejs渲染格式返回的结果调用到php网站页面上,就是不知道怎么实现。有经验的可以分享一下。
|
18
bsbgong 2015-02-18 08:52:26 +08:00 1
如果我没理解错,就是进程间通信
1. 把你的node程序准备好(定义好输入输出),命令行能启动它运行输出结果。 2. 在php里使用exec调用node程序,获取输出。http://php.net/manual/zh/function.exec.php 3. php把结果返回到前端(echo, ob等随便你) 中间的输入输出可以使用临时文件 |
19
lizheming 2015-02-18 09:26:51 +08:00
http://segmentfault.com/q/1010000000671600/a-1020000000671629 直接 PHP 和 node.js 通信,走 API...=——=!如果你是评论那个 raymil 的话就当我没说吧....
|
21
hanan321 2015-02-18 16:52:27 +08:00
nodejs提供一个接口,php从接口取数据不就行了吗?
|
22
lizheming 2015-02-18 16:55:01 +08:00
|