从 Phoenix / Elixir GET 函数中调用 Typescript 函数
Call Typescript function from within an Phoenix / Elixir GET function
我目前在 Elixir / Phoenix 项目中工作。我有一些打字稿代码,我想从 GET 函数中 运行 。这方面的最佳做法是什么?
为了提供更多上下文,我需要动态创建 Apple pkpass 文件。麻烦的是,创建 pkpass 文件很复杂,而且没有 Elixir 库来处理这个创建,但是有一个 node.js 包来处理这个叫做 https://github.com/walletpass/pass-js.
我已经构建了一个 typescript class 来处理 pkpass 文件的创建,但是我无法使用我用 Elixir 编写的 Phoenix 项目中的这个 typescript class。如何做到这一点?
两个受欢迎的选项:
将您的 TypeScript class 封装在 CLI 包装器中并将其用作程序
使用 Execjs or elixir-nodejs
考虑到 pass-js
的复杂性和配置方式,我肯定会建议您从第一种方法开始。
开发命令行界面
首先,为您的 TS 代码开发 CLI。建议:您应该接受参数,生成文件,并将生成的文件路径打印到 stdout
.
这是一份基本指南:https://walrus.ai/blog/2019/11/typescript-cli/
调用你的程序!
然后,使用 System.cmd/3 在 Elixir 中调用您的程序。
{output, code} = System.cmd("/path/to/your/program", ["program", "arguments"])
file_path = String.trim(output)
# file_path is the path of the generated pkpass
# (if you print the generated file path to stdout)
#
# code is the exit code of the program.
# 0 means success, anything else means error (you should develop that in your CLI interface)
程序界面由您决定。我建议你从简单的开始。
例如,您也可以 return 一个 JSON 并用 Jason 解析它。或者您可以将二进制文件打印到 stdout 并直接读取它,但这种方法有额外的复杂性。
我目前在 Elixir / Phoenix 项目中工作。我有一些打字稿代码,我想从 GET 函数中 运行 。这方面的最佳做法是什么?
为了提供更多上下文,我需要动态创建 Apple pkpass 文件。麻烦的是,创建 pkpass 文件很复杂,而且没有 Elixir 库来处理这个创建,但是有一个 node.js 包来处理这个叫做 https://github.com/walletpass/pass-js.
我已经构建了一个 typescript class 来处理 pkpass 文件的创建,但是我无法使用我用 Elixir 编写的 Phoenix 项目中的这个 typescript class。如何做到这一点?
两个受欢迎的选项:
将您的 TypeScript class 封装在 CLI 包装器中并将其用作程序
使用 Execjs or elixir-nodejs
考虑到 pass-js
的复杂性和配置方式,我肯定会建议您从第一种方法开始。
开发命令行界面
首先,为您的 TS 代码开发 CLI。建议:您应该接受参数,生成文件,并将生成的文件路径打印到 stdout
.
这是一份基本指南:https://walrus.ai/blog/2019/11/typescript-cli/
调用你的程序!
然后,使用 System.cmd/3 在 Elixir 中调用您的程序。
{output, code} = System.cmd("/path/to/your/program", ["program", "arguments"])
file_path = String.trim(output)
# file_path is the path of the generated pkpass
# (if you print the generated file path to stdout)
#
# code is the exit code of the program.
# 0 means success, anything else means error (you should develop that in your CLI interface)
程序界面由您决定。我建议你从简单的开始。
例如,您也可以 return 一个 JSON 并用 Jason 解析它。或者您可以将二进制文件打印到 stdout 并直接读取它,但这种方法有额外的复杂性。