nodejs 怎么用到 php 网站上? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ugmc
V2EX    Node.js

nodejs 怎么用到 php 网站上?

  •  
  •   ugmc 2015-02-17 20:24:53 +08:00 11389 次点击
    这是一个创建于 3906 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    话说node.js能做的话,PHP九成九也能做,为什么不重写个PHP版本的?
    mkeit
        13
    mkeith  
       2015-02-17 23:18:53 +08:00
    后端肯定还要再解析一遍的吧
    imzyxwvu
        14
    imzyxwvu  
       2015-02-18 01:32:09 +08:00 via iPhone
    php调用node app提供的api
    akfish
        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,自然就没有一致性的问题。
    ugmc
        16
    ugmc  
    OP
       2015-02-18 02:47:38 +08:00
    感谢楼上解答。现在github找到一个开源markdown编辑器。功能不错。而这编辑器的前端解析器就是marked.js。存到数据库是原markdown格式文本。而后端渲染成html格式输出到页面时因没有匹配的php解析库效果肯定会不一样。所以把merked.js运行在node.js中,然后后端nodejs渲染格式返回的结果调用到php网站页面上,就是不知道怎么实现。有经验的可以分享一下。
    ugmc
        17
    ugmc  
    OP
       2015-02-18 02:51:30 +08:00
    @lk09364 js重写成php可不简单吧?
    bsbgong
        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等随便你)
    中间的输入输出可以使用临时文件
    lizheming
        19
    lizheming  
       2015-02-18 09:26:51 +08:00
    http://segmentfault.com/q/1010000000671600/a-1020000000671629 直接 PHP 和 node.js 通信,走 API...=!如果你是评论那个 raymil 的话就当我没说吧....
    ugmc
        20
    ugmc  
    OP
       2015-02-18 13:47:11 +08:00 via Android
    @lizheming 我已经看到那答案了,如果没有经验可分享,那就不用copy过来。
    hanan321
        21
    hanan321  
       2015-02-18 16:52:27 +08:00
    nodejs提供一个接口,php从接口取数据不就行了吗?
    lizheming
        22
    lizheming  
       2015-02-18 16:55:01 +08:00
    @ugmc .....算了,当我事多多说了吧....
    @hanan321 人家已经说了看到这个答案了,没经验就不要说了...呵呵呵...
    hanan321
        23
    hanan321  
       2015-02-19 12:05:17 +08:00
    @lizheming 好吧我错了,看来需要帮卤煮编码实现了才可以。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     963 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 19:38 PVG 03:38 LAX 12:38 JFK 15:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86