Flutter for OpenHarmony:web 拥抱 Web 标准的桥梁(Wasm GC 与 DOM 互操作) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:web 拥抱 Web 标准的桥梁(Wasm GC 与 DOM 互操作) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net

请添加图片描述

前言

随着 Flutter 3.x 全面拥抱 Wasm(WebAssembly),Dart 团队推出了全新的 package:web 来取代老旧的 dart:html
package:web 是基于最新的 JS Interop 机制构建的,它不仅性能更好,而且兼容 Wasm GC 标准。

虽然这个库通过名字看是为 “Web” 平台的,但对于 OpenHarmony 开发者来说,了解它有着特殊的意义:

  1. 混合开发:鸿蒙原生支持 ArkWeb (WebView),在 Flutter 中通过 JS互操作与 Web 页面交互是常见需求。
  2. 架构演进:理解 package:web 的设计有助于理解 Dart 如何与宿主环境(无论是 Browser 还是 Embedder)进行高效通信。

(注:本库主要用于 Flutter Web 目标平台。在鸿蒙 App 原生端,通常使用 flutter_inappwebviewjs 库进行 JS 交互。但如果你的鸿蒙应用采用了“Flutter Web 运行在鸿蒙 WebView 中”的架构,本库就是核心)。

一、核心原理

package:web 不再封装很重的 Dart 对象,而是直接将 Dart 类型映射到 JS 对象(Zero-cost interop)。

@JS() Annotation

Wasm / JS

Dart Code

JS Interop Layer

浏览器 DOM / JS Context

二、OpenHarmony 适配说明

场景一:Flutter App 编译为 HAP (原生)
此时 package:web不可用,因为底层没有 V8/SpiderMonkey 引擎环境。你应该使用 plugin 机制与 ArkTS 通信。

场景二:Flutter Web 运行在鸿蒙浏览器/WebView
此时 package:web完全可用,且是官方推荐方案。你可以用它来调用鸿蒙浏览器暴露给 JS 的特殊能力。

三、基础用例 (Web 环境)

在这里插入图片描述

3.1 操作 DOM (新一代 API)

import'package:web/web.dart'as web;voidmain(){// 💡 无需 dart:html,直接操作宿主 DOMfinal div = web.document.createElement('div')asweb.HTMLDivElement; div.innerText ='Hello from Modern Dart Web!'; div.style.backgroundColor ='blue'; web.document.body?.append(div);}
在这里插入图片描述

3.2 调用 JS 函数

// 假设 JS环境中有一个函数: function showAlert(msg) { alert(msg); }import'dart:js_interop';@JS()externalvoidshowAlert(JSString message);voidcallJs(){showAlert('HarmonyOS Web'.toJS);}
在这里插入图片描述

四、完整实战示例:鸿蒙 ArkWeb 中的 JS 互操作

本示例展示了在 Flutter Web 编译模式下,如何利用 package:web 与鸿蒙宿主环境进行高效通信。

import'dart:js_interop';import'package:web/web.dart'as web;// 💡 模拟鸿蒙系统注入的全局 JS 桥接对象@JS('OhosBridge')extension type OhosBridge._(JSObject _)implementsJSObject{externalstaticJSStringgetDeviceId();externalstaticvoidonActionSuccess(JSString data);}voidcallHarmonyOS(){// 1. 检查对象是否存在if(web.window.has('OhosBridge')){// 2. 直接获取设备 IDfinal id =OhosBridge.getDeviceId().toDart;print('✅ 获取到鸿蒙设备 ID: $id');}}
在这里插入图片描述

五、总结

package:web 是 Dart 迈向 Wasm 时代的关键一步。
虽然它主要面向 Web 平台,但在“大前端”融合的今天,鸿蒙应用中嵌入 Web 页面、小程序的情况比比皆是。掌握新一代的 JS 互操作技术,能让你在混合架构开发中游刃有余。

Read more

ctfshow Web入门命令执行29-124全通关详解(看这一篇就够啦~)

文章目录 * 命令执行 * web29-web31:基础注入 * web29 * web30 * web31 * web32-web36:参数逃逸 * web32 * web33 * web34-36 * web37-web39:文件包含+伪协议命令执行 * web37 * web38 * web39 * web40:无参数RCE * web41:无字母RCE * web42-web53:绕过无回显RCE * web42 * web43 * web44 * web45 * web46 * web47-web49 * web50 * web51 * web52 * web52 * web53 * web54:关键词模糊匹配 * web55-web57:字符集受限 RCE * web55 * web56 * we

By Ne0inhk

nomic-embed-text-v2-moe实战教程:Streamlit替代Gradio构建嵌入服务前端

nomic-embed-text-v2-moe实战教程:Streamlit替代Gradio构建嵌入服务前端 1. 项目简介与背景 nomic-embed-text-v2-moe是一个强大的多语言文本嵌入模型,专门用于多语言检索任务。这个模型在多个关键指标上表现出色,相比同规模参数量的模型具有显著优势。 核心特点: * 高性能表现:与约3亿参数的模型相比,在多语言性能上达到先进水平,甚至能与参数规模两倍的模型竞争 * 多语言支持:支持约100种语言,经过超过16亿对文本的训练 * 灵活嵌入维度:采用Matryoshka嵌入训练技术,存储成本降低3倍的同时性能损失极小 * 完全开源:模型权重、训练代码和训练数据全部开放 技术规格对比: 模型参数量(M)嵌入维度BEIR评分MIRACL评分预训练数据微调数据代码Nomic Embed v230576852.8665.80mE5 Base27876848.8862.30mGTE Base30576851.1063.40Arctic Embed v2 Base30576855.4059.90BGE M3568102448

By Ne0inhk

从Actix-web到Salvo:一个Rust开发者的“效率觉醒“之路

从Actix-web到Salvo:一个Rust开发者的"效率觉醒"之路 作为一个写了三年Rust Web服务的开发者,我太懂那种"选框架比写业务还头疼"的感觉了。去年用Actix-web搭了个项目,代码写到一半差点把键盘砸了——明明想聚焦业务逻辑,却被路由、中间件、连接池这些"框架戏"占了80%时间。直到今年换成Salvo,才明白什么叫"开发本该有的样子"。 今天就用大白话聊聊这两个框架的区别,从我的"血泪史"到"真香现场",全是真实感受,没有术语轰炸,只有"人话"。 一、开发体验:从"搭迷宫"

By Ne0inhk
在线政务服务中心_nrlwabo信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

在线政务服务中心_nrlwabo信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着信息技术的快速发展,政府服务逐渐向数字化、智能化转型。在线政务服务中心作为政府与公众之间的重要桥梁,其高效、便捷的服务模式成为提升政府效能和公众满意度的关键。传统的政务服务模式存在流程繁琐、信息不透明、效率低下等问题,难以满足现代社会的需求。因此,构建一个功能完善、操作简便的在线政务服务中心信息管理系统具有重要意义。该系统能够实现政务服务的线上化、标准化和自动化,为公众提供一站式服务,同时为政府部门的决策提供数据支持。关键词:在线政务服务中心、数字化转型、政务服务、信息管理系统、公众满意度。 本系统采用SpringBoot作为后端框架,结合Vue.js前端框架和MySQL数据库,实现了高效、稳定的政务服务管理平台。SpringBoot提供了快速开发的能力,简化了配置和部署流程;Vue.js实现了响应式的前端界面,提升了用户体验;MySQL作为关系型数据库,确保了数据的安全性和可靠性。系统功能包括用户管理、业务办理、信息查询、数据统计等模块,支持多角色权限控制,满足不同用户的需求。通过该系统,公众可以线上提交申请、查询进度,政府部门可以实时处理业务、分析数据,从而提升整体服

By Ne0inhk