当前位置: 首页 > news >正文

建一个网站大约需要花费多少钱长沙网站搭建优化

建一个网站大约需要花费多少钱,长沙网站搭建优化,手机上怎么做自己卖菜的网站,网站建设论文答辩ppt文章目录 一、前言二、鸿蒙应用加载Web页面2.1 加载网络地址页面2.2 加载本地H5页面 三、实现Web组件 H5 层与鸿蒙应用层进行相互通讯3.1 鸿蒙应用向 H5 页面发送数据3.2 H5页面向鸿蒙应用发送数据 四、拓展阅读 一、前言 随着HarmonyOS NEXT的快速发展,越来越多的…

文章目录

    • 一、前言
    • 二、鸿蒙应用加载Web页面
      • 2.1 加载网络地址页面
      • 2.2 加载本地H5页面
    • 三、实现Web组件 H5 层与鸿蒙应用层进行相互通讯
      • 3.1 鸿蒙应用向 H5 页面发送数据
      • 3.2 H5页面向鸿蒙应用发送数据
    • 四、拓展阅读

一、前言

随着HarmonyOS NEXT的快速发展,越来越多的应用厂商选择加入鸿蒙生态阵营。然而,考虑到存量项目技术架构选型,如何设计一套兼容性更强的应用系统显得尤为重要,尤其针对面对多端应用市场,在前期iOSAndroid两端应用市场支持基础上再次接入鸿蒙生态,应用开发及维护成本均明显提升。为此,可考虑将应用主体功能部分剥离为H5应用,原生端通过容器嵌套方式接入H5主体应用方式,当涉及主体公共功能发生变更时,仅需维护H5项目即可,无需频繁上架应用市场。鸿蒙生态系统提供了一种原生与H5交互的机制,使得开发者可以在鸿蒙原生应用中嵌入H5页面,实现一次开发,多端运行的目标。

二、鸿蒙应用加载Web页面

2.1 加载网络地址页面

  1. module.json5中添加网络权限。

    "requestPermissions": [{"name": "ohos.permission.INTERNET"}
    ]
    
  2. 导入webview

    import web_webview from '@ohos.web.webview'
    
  3. 创建WebviewController

    controller: web_webview.WebviewController = new web_webview.WebviewController();
    
  4. 创建Web组件。

    Web({ src: "http://www.example.com/", controller: this.controller })
    

案例效果:

在这里插入图片描述

2.2 加载本地H5页面

  1. 在项目的 rowfile 中存放 html 代码

在这里插入图片描述

  1. 在 Web组件中使用 $rawfile 加载本地html

    Web({ src: $rawfile('webTo.html'), controller: this.controller })
    

三、实现Web组件 H5 层与鸿蒙应用层进行相互通讯

3.1 鸿蒙应用向 H5 页面发送数据

在创建的WebviewController中使用 runJavaScript() 方法可直接触发 H5 页面中的方法。

鸿蒙侧示例代码

controller: web_webview.WebviewController= new web_webview.WebviewController(); 
@State content: string = ""
@state input: string = ""
build(){ Column(){Column(){Text("H5层")Web({ src: $rawfile('webTo.html'),controller: this.controller }).onConfirm((e:any) => { console.log("shq1874009 > " + JSON.stringify(e))this.content = e['message']return true;})}.height("50%").margin({top: 10}).padding(10).border({width:1}).width("100%") Column(){Text("应用层")TextInput({placeholder:"请输入数据"}).onChange((e) =>{ this.input = e})Button("向H5层发送数据").onClick(()=>{this.controller.runJavaScript('sendText("AAA")}).margin(10)Row().width("100%").height(1).backgroundColor("#ddd").margin(10)Text("接收H5传递的内容:"+ this.content)}.height("50%").margin({top: 10}).padding(10).border({width:1}).width("100%") .......

同样也可以使用模板字符串拼接参数进行传参。

controller: web_webview.WebviewController= new web_webview.WebviewController(); 
@State content: string = ""
@state input: string = ""
build(){ Column(){Column(){Text("H5层")Web({ src: $rawfile('webTo.html'),controller: this.controller }).onConfirm((e:any) => { console.log("shq1874009 > " + JSON.stringify(e))this.content = e['message']return true;})}.height("50%").margin({top: 10}).padding(10).border({width:1}).width("100%") Column(){Text("应用层")TextInput({placeholder:"请输入数据"}).onChange((e) =>{ this.input = e})Button("向H5层发送数据").onClick(()=>{this.controller.runJavaScript('sendText("${this.input}")}).margin(10)Row().width("100%").height(1).backgroundColor("#ddd").margin(10)Text("接收H5传递的内容:"+ this.content)}.height("50%").margin({top: 10}).padding(10).border({width:1}).width("100%") .......

H5侧示例代码

<script>function toOnos() {let obj = {name: "张三", age: "20"}confirm(JSON.stringify(obj))}function sendText(){document.getElementById("divCon").innerText = "你好"}
</script>
<div><button onclick="to0nos()">给原生应用传递数据</button><div id="divCon" style="width: 100px;height: 100px;background: #ddd;margin-top: 20px;"></div>
</div>

案例效果

在这里插入图片描述

3.2 H5页面向鸿蒙应用发送数据

在鸿蒙原生代码侧使用 javaScriptProxy 方法向 h5 的 window 对象中注册方法,此处注册的对象名叫 JSBridge ,在该对象中写入了一个 nativeMethod 方法,h5 中直接调用 nativeMethod() 方法即可向原生发送消息。

H5侧
h5侧直接调用 window 对象下的 JSBridge.nativeMethod 方法,第一个参数对应原生侧对应的 channelName 方法名,第二个参数为 h5 自定义参数,可带入回调方法,供原生侧完成调用的回调结果。

示例代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./icsshosdk.js"></script><style>body {padding-top: 80px;}.title {background: #eee;line-height: 60px;text-align: center;margin-bottom: 50px;}.button {cursor: pointer;line-height: 45px;color: #fff;border-radius: 10px;left: 20%;width: calc(100% - 30px);text-align: center;background: #616bff;margin: 15px;}.button:active {background: #525dff;}</style><script>document.addEventListener('webActiveReceive', (e) => {console.log("luvi > " + JSON.stringify(e.detail));let { key, data } = JSON.parse(e.detail)switch (key) {case "changeBgColor":document.getElementById("idt").style = "background: #ffecea;color: #ff7361"break;case "changeBtColor":document.querySelectorAll(".button").forEach(el => {el.style = `background: ${data}`})break;default:break;}})</script><script>function openNativePage() {let params = {name: "LoginPage",success: function (res) {console.log("luviWeb > openNativePage success. " + res)},fail: function () {console.log("luviWeb > openNativePage fail.")}}window.JSBridge.nativeMethod("openNativePage", params)}function getCity() {let params = {success: function (res) {document.getElementById("cityName").innerText = `当前城市:${res}`},fail: function () {console.log("luviWeb > getCity fail.")}}window.JSBridge.nativeMethod("getCity", params)}</script>
</head><body><div style="width: 100%;"><p class="title" id="idt">JSBridge演示</p><div><p class="button" onclick="openNativePage()">跳转原生页面</p></div><div style="margin-top: 30px;"><p style="margin-left: 15px;" id="cityName">当前城市:</p><p class="button" onclick="getCity()">获取当前定位</p></div></div>
</body></html>

鸿蒙侧示例代码如下

import { webview } from '@kit.ArkWeb';export interface IParamsCallback {name: stringkey: stringsuccess: (data?: string) => voidfail: (data?: string) => void
}@Entry
@Component
export struct MyWeb {webController: WebviewController = new webview.WebviewController()webUrl: string | Resource = "";build() {Column() {Web({ src: this.webUrl, controller: this.webController }).javaScriptProxy({object: {nativeMethod: (channelName: string, paramsCallback: IParamsCallback) => {if (!channelName || !paramsCallback) {return}switch (channelName) {case "openNativePage":paramsCallback.success()console.log("luvi > h5调用 openNativePage 方法,携带参数" + paramsCallback.name)break;case "getCity":paramsCallback.success()console.log("luvi > h5调用 getCity 方法,携带参数" + paramsCallback.name)break;default:break;}},},name: 'JSBridge',methodList: ['nativeMethod'],controller: this.webController,}).fileAccess(true).domStorageAccess(true).zoomAccess(false).width("100%").height("100%")}}
}

示例结果如下:

在这里插入图片描述

四、拓展阅读

  • HarmonyOS webview
  • 前端页面调用应用侧函数
  • 应用侧调用前端页面函数
  • 建立应用侧与前端页面数据通道
http://www.hkea.cn/news/403144/

相关文章:

  • wordpress+模版+推荐专业网站seo推广
  • 浦项建设公司员工网站2023免费推广入口
  • 如何查询某个网站的设计公司最新推广注册app拿佣金
  • 八宝山做网站公司打广告
  • wordpress vip查看插件南宁seo费用服务
  • 建站之星模板怎么设置手机如何做网站
  • 上海公司网站制作价格西安百度关键词排名服务
  • 长沙网页制作开发公司aso优化方案
  • 深圳罗湖网站制作成人电脑基础培训班
  • 无锡网站制作咨询深圳网站设计十年乐云seo
  • 大连城市建设网站seo优化顾问服务阿亮
  • 福州 网站建设沈阳seo关键词排名优化软件
  • 做网站还要买服务器吗镇江seo
  • 专门做特价的网站优化排名案例
  • 网站建设的一些问题友链交易交易平台
  • 创业初期要建立公司的网站吗seo排名优化代理
  • 做网站全屏尺寸是多少钱站长工具查询系统
  • 做企业平台的网站有哪些手机网站制作教程
  • 免费行情的软件大全下载北京公司排名seo
  • 网站联系方式要素qq群推广链接
  • div css 网站模板免费的云服务器有哪些
  • 35互联做网站好吗网店运营工作内容
  • 网站建设模拟软件营销培训课程内容
  • 深圳建网站兴田德润专业2023年最新新闻简短摘抄
  • 学校网站怎么查询录取百度相册登录入口
  • 自助建设彩票网站网址查询工具
  • 怎么创建网页的快捷方式seo入门版
  • 互联网企业网站网络优化
  • 山东手工活外发加工网四川二级站seo整站优化排名
  • 行业门户网站开发百度竞价怎么做效果好