1

我正在寻找一种解决方案来设置一个快速 SDK(例如框架),该 SDK 可以从 javascript 包访问共享业务逻辑(与例如 android 应用程序或 SDK 共享)。我不想使用 webviews 等...

javascript 包中的共享业务逻辑

我有一个包含项目共享逻辑的 Javascript 包,可作为 api 使用,例如 myBundle.js,它导出多个模块/函数/对象。

我想构建一个原生 Swift 应用程序,它使用上面提到的 Swift SDK,因此可以从 myBundle.js 访问业务逻辑:

// module "myModule.js"
function cube(x) {
  return x * x * x;
}
const foo = Math.PI + 1.0;
export { cube, foo };

第 1 步:在我的 Swift 项目中,我想

import Foundation

public class MySwiftClass {
    func doSomeStuffBasedOnJavascriptCode() {
        // access MyBundle.js, and run 'cube' method on 'foo' from MyModule
        let x = cube(foo);
        NSLog("result: %l", x);
    }
}

第 2 步:此外,从 JS 访问 Swift 代码也非常有用!

我试过:...在 iOS 中使用 Nativescript,并且能够设置一个运行 V8 运行时的 Swift 应用程序。此设置允许我从 javascript 包(带有 swift 的 Nativescript )访问本机 Swift 代码。因此,第 2 步涵盖了这一点。然而,Nativescript 在内部设置运行时并“运行包的主上下文”(期望它包含应用程序“运行”?)。它用一个非常简单的 Nativescript 接口包装了底层 V8 运行时的逻辑:

Config* config = [[Config alloc] init];
config.IsDebug = isDebug;
config.LogToSystemConsole = isDebug;
config.MetadataPtr = metadataPtr;
config.BaseDir = baseDir;
config.ArgumentsCount = argc;
config.Arguments = argv;
[NativeScript start:config]; 

是否有一种简单的方法可以在整个 Swift 代码中显式地访问底层运行时的上下文并从包中调用模块上的函数?就像您可以在捆绑包中的整个 JS 代码中添加 Swift 代码一样......所以,我真的在寻找一种双向解决方案,其中 javascript 使用 Swift 代码而 Swift 代码使用 JS

也欢迎其他解决方案!

4

0 回答 0