«

在 swift 中使用 JavaScriptCore 来调用 JavaScript 文件里的函数(编程语言间的 api 调用)

时间:2021-6-8 21:44     作者:独元殇     分类: 前端技术


平时,我做的应用大多是 web 平台的,有时想做些小工具,可惜自己时间和脑容量有限。总想少学点东西或学些性价比大的东西,以便一次编写能在尽可能多的平台运行。

于是,我想,能否这样 ---- 我只学习关键 GUI 部分的内容,核心逻辑就交给另一门语言,于是我就问 chatgpt ,这个方式可行吗?

回复是行。

在 mac 上开发应用,最好的莫过于 swift,但学一门语言成本很大,之后咨询了 chatgpt ,说 C++ JavaScript 等等都能间接被 swift 调用,哇,这是福音!

赶紧尝试一番!没想到一个小小的 demo 成功了。两个关键的文件如下:


// 这是 test.js

function helloWorld() {
    return "hello world!!!";
}

// 这是 ContentView.swift

import JavaScriptCore
import SwiftUI

struct ContentView: View {
    var body: some View {
        let context = JSContext()
        Button(action: {
            let url = Bundle.main.url(forResource: "test", withExtension: "js")
            let script = try! String(contentsOf: url!)
            context?.evaluateScript(script)
            let result = context?.evaluateScript("helloWorld()")?.toString()
            print(result)
        }) {
            Text("Run JavaScript function")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

虽然例子没有体现在 gui 界面上,但理论当然可行的。在控制台输 JavaScript 函数的场景让我无比兴奋,我等后再查看一些 android、Windows 两个平台的相关方法,如果都可行,那...... 哇塞!

2023-06-08 21:46:31 星期四

标签: 原创 swift JavaScript