V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ugmc
V2EX  ›  Node.js

nodejs 怎么用到 php 网站上?

  •  
  •   ugmc · Feb 17, 2015 · 11664 views
    This topic created in 4093 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    至于所谓的前后端效果不一致,那是因为Markdown没有一个统一的标准(当然有个社区发起的CommonMark标准,但不是所有parser都完全遵守),于是各种parser实现都有差异。可以参见babelmark项目,对比了各种流行parser输出结果的区别:
    http://johnmacfarlane.net/babelmark2/
    用node.js能避免这一点,完全是因为前后端都是JavaScript,能跑同样的parser,自然就没有一致性的问题。
    ugmc
        16
    ugmc  
    OP
       Feb 18, 2015
    感谢楼上解答。现在github找到一个开源markdown编辑器。功能不错。而这编辑器的前端解析器就是marked.js。存到数据库是原markdown格式文本。而后端渲染成html格式输出到页面时因没有匹配的php解析库效果肯定会不一样。所以把merked.js运行在node.js中,然后后端nodejs渲染格式返回的结果调用到php网站页面上,就是不知道怎么实现。有经验的可以分享一下。
    ugmc
        17
    ugmc  
    OP
       Feb 18, 2015
    @lk09364 js重写成php可不简单吧?
    bsbgong
        18
    bsbgong  
       Feb 18, 2015   ❤️ 1
    如果我没理解错,就是进程间通信
    1. 把你的node程序准备好(定义好输入输出),命令行能启动它运行输出结果。
    2. 在php里使用exec调用node程序,获取输出。http://php.net/manual/zh/function.exec.php
    3. php把结果返回到前端(echo, ob等随便你)
    中间的输入输出可以使用临时文件
    lizheming
        19
    lizheming  
       Feb 18, 2015
    http://segmentfault.com/q/1010000000671600/a-1020000000671629 直接 PHP 和 node.js 通信,走 API...=——=!如果你是评论那个 raymil 的话就当我没说吧....
    ugmc
        20
    ugmc  
    OP
       Feb 18, 2015 via Android
    @lizheming 我已经看到那答案了,如果没有经验可分享,那就不用copy过来。
    hanan321
        21
    hanan321  
       Feb 18, 2015
    nodejs提供一个接口,php从接口取数据不就行了吗?
    lizheming
        22
    lizheming  
       Feb 18, 2015
    @ugmc .....算了,当我事多多说了吧....
    @hanan321 人家已经说了看到这个答案了,没经验就不要说了...呵呵呵...
    hanan321
        23
    hanan321  
       Feb 19, 2015
    @lizheming 好吧我错了,看来需要帮卤煮编码实现了才可以。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2396 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 04:32 · PVG 12:32 · LAX 21:32 · JFK 00:32
    ♥ Do have faith in what you're doing.