os/execStdoutconsole.log("string")

基本上我需要生成一个字符串,但只能在 nodejs 中这样做,但我的大部分代码都在 golang 中,所以我试图使我的代码中的这个小点尽可能无缝、安全和可靠,我将我的程序的如此重要的部分放在“console.log”上并从 shell 输出中读取,这让我有点不安。

简而言之:我想知道我的节点和 go 代码之间是否存在更好、更标准的通信线路,然后是 console.log + shell 输出,或者这是否足够优化?

哦,我程序的这个特定部分的功能是获取一个 markdown 文本文件并使用markdown-it将其转换为 HTML 。

一些想法:

  • 通过 HTTP 通信(将数据/字符串发送到 golang http 侦听器)

  • 通过文件系统进行通信(将字符串写入临时文件并用golang读取)

  • 通过“类似于 HTTP 但特定于本地应用程序数据共享的东西”进行通信

聚苯乙烯

我不能使用 otto,因为降价 - 它不在那里运行。

实际代码:

parser.go

package main


import (

    "os"

    "os/exec"

    "fmt"

    "bytes"

)


func main() {

    cmd := "node"

    args := []string{"parser.js", "/home/user1/dev/current/wikis/Bob's Pain/markup/index.md"}

    process := exec.Command(cmd, args...)

    stdin, err := process.StdinPipe()

    if err != nil {

        fmt.Println(err)

    }

    defer stdin.Close()

    buf := new(bytes.Buffer) // THIS STORES THE NODEJS OUTPUT

    process.Stdout = buf

    process.Stderr = os.Stderr


    if err = process.Start(); err != nil {

        fmt.Println("An error occured: ", err) 

    }


    process.Wait()

    fmt.Println("Generated string:", buf)

}