ArkTS 动态解析 JavaScript 的替代方案(一)

利用 Web 来实现 JavaScript 的动态解析,代码如下:

import webview from '@ohos.web.webview';

function logDefault(msg: Object) {
  if (msg) console.log("ArkTS" + (msg ? ": " + msg.toString() : "null"));
}

type ScriptCallback = (error: Error, result: string) => void;
type VoidCallback = () => void;
/**
 * 请配合 JSEngineContainer 一起使用
 */
export class JSEngine {
  private _controller: webview.WebviewController = new webview.WebviewController();
  private _isReady: boolean = false;
  private _scriptList: string[] = [];
  private _scriptCallbackList: ScriptCallback[] = [];
  private execCallback: VoidCallback;
  /**
   * @param execCallback 执行完毕时,回调的方法
   */
  constructor(execCallback?: VoidCallback) {
    this.execCallback = execCallback;
  }

  public setExecCallback(execCallback?: VoidCallback) {
    this.execCallback = execCallback;
  }

  get controller(): webview.WebviewController {
    return this._controller;
  }

  public runJavaScript(script: string, callback?: ScriptCallback) {
    if (this._scriptList.length == 0 && this._isReady) {
      this._controller.runJavaScript(script)
        .then((result) => {
          if (callback) callback(null, result);
        })
        .ca
### 编程语言分类 #### 编译型语言 编译型语言的特点是在运行之前会先通过编译器转换成机器码,通常具有较高的执行效率。 - **C**: 属于典型的编译型语言,源代码被编译为特定硬件架构的目标文件[^1]。 - **C++**: 同样是编译型语言,支持面向对象编程特性并广泛应用于系统软件开发等领域。 - **Java**: 虽然 Java 使用字节码形式加载到 JVM 上执行,但从严格意义上讲仍属于编译型语言,因为它需要提前编译为目标平台无关的中间表示形式——即字节码。 - **Object-C**: 主要用于苹果操作系统上的应用程序开发,也是种静态类型的编译型语言。 - **Swift**: 苹果公司推出的现代编程语言,旨在替代 Objective-C 成为主流 iOS 和 macOS 应用程序的主要开发工具之;它同样采用编译方式生成高效的本地代码. #### 解释型语言 解释型语言则不需要预先编译,在每次执行时由解释器逐行解析并立即执行指令。这类语言往往更易于调试和修改,但也可能牺牲定的性能优势。 - **Python**: 动态类型脚本语言,拥有简洁明了的语法结构,适合快速原型设计及数据处理等工作场景. - **JavaScript**: 原生浏览器端使用的动态弱类型语言,随着 Node.js 的兴起也逐渐扩展到了服务器侧应用开发当中. - **PHP**: Web 开发中最常用的服务器端脚本语言之,能够方便地嵌入 HTML 页面内完成动态网页构建任务. #### 混合型语言 (兼具编译与解释两种模式) 某些语言既可以通过即时编译技术提高运行速度又保留了解释执行带来的灵活性: - **C#**: .NET 平台下的多范式通用编程语言,其 CLR(公共语言运行库)允许 JIT(Just-In-Time) 编译机制的存在使得该语言具备了定程度上介乎两者之间的工作原理. - **MATLAB**: 数学计算环境中集成了多种数值算法实现方法和技术手段,既可以作为命令行式的交互环境也可以编写完整的函数或类定义并通过内置引擎优化求解过程. - **Kotlin**: Google 官方推荐 Android 移动设备首选开发选项,除了可以直接编译成本机二进制外还兼容 JVM 字节码格式,并且借助 Kotlin/Native 可以脱离虚拟机独立运作[^4]. - **ArkTS**: 华为推出的种新型声明式 UI 编程框架所依赖的核心语言,融合了 TypeScript 类型安全性和声明式布局的优势,适用于 HarmonyOS 生态系统的高效能移动互联网服务创建.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值