谁才是最好的编程语言?Java、PHP、Python、Go、JavaScript….
每个人都有自己的答案,但是,当范围限定在Web开发,没有什么能胜过JavaScript。
但有时我们必须做一些要求更高的任务,例如,分析大量的数据。
在这种情况下,Python可能是一个更好的选择。
但这只是我们网站的一个功能,自然不会因为这一点需求而用Python开发整个工程。
今天,就来给大家介绍一种能够将JavaScript和Python完美结合在一起,高效解决工程问题的方法。
JavaScript+Python
这对于很多开发同学来说,绝对算得上一个很吸引人的消息。
我们可以在Node.JS中使用子进程,在需要时运行一个Python脚本。
const spawn = require('child_process').spawnapp.get("process_data", (req, res) => {spawn('python3', ['script.py'])})
再来写一个Python脚本:
# script.pydoSometing()
除了这种方式,我们也可以将数据传递给我们的Python脚本。
const spawn = require('child_process').spawnapp.get("process_data", (req, res) => {const msg = "Hello"spawn('python3', ['script.py', msg])})
在Python中,为了能够读取数据,你必须导入sys模块。
import sys, jsondef main():msg = sys.argv[1]doSometing(msg)if __name__ == '__main__':main()
现在,我们不需要在生成Python进程时传递数据,而是在任务工作流中发送数据。
const spawn = require('child_process').spawn,const py = spawn('python3', ['script.py'])const data = {msg: "Hello"}py.stdin.write(JSON.stringify(data)) //we have to send data as a string, so we are using JSON.stringifypy.stdin.end()
修改一下Python脚本:
import sys, jsondef main():lines = sys.stdin.readlines()data = json.loads(lines)doSometing(data['msg'])if __name__ == '__main__':main()
最后,我们可以从Python脚本中向nodejs发送响应。
const spawn = require('child_process').spawnconst py = spawn('python3', ['cscript.py'])py.stdout.on('data', function(res){let data = JSON.parse(res.toString())console.log(data)})
Python代码为:
import sys# You will have your own implementation of get data. In this case lets assume it returns a dict/jsonres = getData()print(json.dumps(data))sys.stdout.flush()
这样,我们就可以在Web开发过程中,能够同时兼顾JavaScript、Python的优势,最大化发挥不同编程语言的价值。无需借助数据库,或者开发繁琐的api结构就可以有机的把JavaScript与Python结合到一起,提升开发效率。
以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎转发点赞,
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号