V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ugmc
V2EX  ›  Node.js

nodejs 怎么用到 php 网站上?

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

    从看到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:16: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版本的?
    mkeith
        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   ·   实用小工具   ·   1484 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:53 · PVG 07:53 · LAX 15:53 · JFK 18:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.