我正在寻找在本机 iOS 应用程序中包含共享跨平台库的方法。我的重点是 Javascript 和 Typescript 源。
我制作了一个 Playground 项目,它将 js 文件加载到 JSContext (JavaScriptCore 框架)中,然后我可以从本机 Swift 代码调用 JavaSript 函数:
let jsContext = JSContext()
let jsURL = Bundle.main.url(forResource: "shared-lib", withExtension: "js")!
let jsScript = try String(contentsOf: jsURL, encoding: .utf8)
jsContext.evaluateScript(jsScript)
jsContext.setObject(
param1,
forKeyedSubscript: NSString(string: "param1")
)
jsContext.setObject(
param2,
forKeyedSubscript: NSString(string: "param2")
)
let resultJSValue = jsContext.evaluateScript("""
calculate(param1, param2);
""")
我还可以在WKWebView(WebKit框架)中执行js代码,并从中获取结果。
但是当我尝试从 TypeScript 文件执行一个简单的函数时,JSContext 和 WKWebView 中的结果都是
undefined
。
是否可以在 JSContext 或 WKWebView 中运行 TypeScript 代码?
TypeScript 需要编译成 JavaScript。浏览器不直接支持 TypeScript。所以不,你不能直接在
JSContext
或 WKWebView
中运行 TypeScript。