在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS開發案例:【Web組件實現抽獎】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-09 18:31 ? 次閱讀

介紹

本篇Codelab是基于ArkTS的聲明式開發范式的樣例,主要介紹了Web組件如何加載本地和云端H5小程序。所加載的頁面是一個由HTML+CSS+JavaScript實現的完整小應用。樣例主要包含以下功能:

  1. web組件加載H5頁面。
  2. ArkTS和H5頁面交互。

image

相關概念

  • [Web]:提供具有網頁顯示能力的Web組件。
  • [runJavaScript]:異步執行JavaScript腳本,并通過回調方式返回腳本執行的結果。

相關權限

本篇Codelab使用了在線網頁,需要在配置文件module.json5文件里添加網絡權限:ohos.permission.INTERNET。

{
  "module": {
    "name": "entry",
    ...
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

約束與限制

本篇Codelab需要搭建服務端環境,服務端搭建流程如下:

  1. 搭建nodejs環境:本篇Codelab的服務端是基于nodejs實現的,需要安裝nodejs,如果您本地已有nodejs環境可以跳過此步驟。
    1. 檢查本地是否安裝nodejs:打開命令行工具(如Windows系統的cmd和Mac電腦Terminal,這里以Windows為例),輸入node -v,如果可以看到版本信息,說明已經安裝nodejs。
    2. 如果本地沒有nodejs環境,您可以去nodejs官網上下載所需版本進行安裝配置。
    3. 配置完環境變量后,重新打開命令行工具,輸入node -v,如果可以看到版本信息,說明已安裝成功。
  2. 運行服務端代碼:在本項目的HttpServerOfWeb目錄下打開命令行工具,輸入npm install 安裝服務端依賴包,安裝成功后輸入npm start點擊回車。看到“服務器啟動成功!"則表示服務端已經在正常運行。
  3. 構建局域網環境:測試本Codelab時要確保運行服務端代碼的電腦和測試機連接的是同一局域網下的網絡,您可以用您的手機開一個個人熱點,然后將測試機和運行服務端代碼的電腦都連接您的手機熱點進行測試。
  4. 連接服務器地址:打開命令行工具,輸入ipconfig命令查看本地ip,將本地ip地址復制到entry/src/main/ets/common/constants/Constants.ets文件下的23行,注意只替換ip地址部分,不要修改端口號,保存好ip之后即可運行Codelab進行測試。

環境搭建

軟件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 開發板類型:[潤和RK3568開發板]。
  • OpenHarmony系統:3.2 Release。

環境搭建

完成本篇Codelab我們首先要完成開發環境的搭建,本示例以RK3568開發板為例,參照以下步驟進行:

  1. [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)。以3.2 Release版本為例:
  2. 搭建燒錄環境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開發板的燒錄]
  3. 搭建開發環境。
    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發環境配置。
    2. 開發環境配置完成后,請參考[使用工程向導]創建工程(模板選擇“Empty Ability”)。
    3. 工程創建完成后,選擇使用[真機進行調測]。
    4. 鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

代碼結構解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。

├──entry/src/main/ets        // 代碼區
│  ├──common
│  │  └──Constant.ets        // 常量類
│  ├──entryability            
│  │  └──EntryAbility.ts     // 程序入口類
│  └──pages
│     ├──MainPage.ets        // 主頁入口文件
│     └──WebPage.ets         // 抽獎頁入口文件
├──entry/src/main/resources  
│  ├──base
│  │  ├──element             // 尺寸、顏色、文字等資源文件存放位置
│  │  ├──media               // 媒體資源存放位置
│  │  └──profile             // 頁面配置文件存放位置
│  ├──en_US                  // 國際化英文
│  ├──rawfile                // 本地html代碼存放位置 
│  └──zh_CN                  // 國際化中文
└──HttpServerOfWeb           // 服務端代碼

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789v直接拿`

搜狗高速瀏覽器截圖20240326151547.png

H5小程序

抽獎小程序由HTML+CSS+JS實現,HTML代碼使用無序列表實現抽獎盤頁面布局:

< !-- index.html -- >
< div class="luckyDraw" >
    < !-- 使用無序列表實現抽獎盤 -- >
    < ul id="prize" class="prizes" >
        ...
        < li class="prizes-li" >< img class="pic" onclick="startDraw()" src="#" >< /li >
    < /ul >
< /div >

CSS代碼設置抽獎盤的樣式:

/* css/index.css */
/* 抽獎列表 */
.prizes {
    width: 96.5%;
    height: 96.7%;
    position: absolute;
}
...
/* 點擊抽獎 */
.prizes li:nth-of-type(9) {
    width: 34.9%;
    height: 34.6%;
    ...
}
...

JS代碼實現抽獎的業務邏輯,并返回抽獎結果:

// js/index.js
function roll() {
  ...
  // 滿足轉圈數和指定位置就停止
  if (count >= totalCount && (prizesPosition + 1) === index) {
    clearTimeout(timer);
    isClick = true;
    speed = initSpeed;
    // 等待1s打開彈窗
    timer = setTimeout(openDialog, 1000); 
  }
  ...
}

function startDraw() {
  ...
  if (isClick) {
    ...
    roll();
    isClick = false;
  }
}

function openDialog() {
  // confirm返回抽獎結果
  confirm(prizesArr[prizesPosition]);
}

Web組件

啟動應用進入首頁,頁面提供兩個按鈕,分別對應加載本地H5和加載云端H5,點擊按鈕跳轉到抽獎頁面。

// MainPage.ets
Column() {
  ...
  Navigator({ target: WEB_PAGE_URI, type: NavigationType.Push }) {
    Button($r('app.string.loadLocalH5'))
      ...
  }
  .params({ path: LOCAL_PATH, tips: $r('app.string.local') })

  Navigator({ target: WEB_PAGE_URI, type: NavigationType.Push }) {
    Button($r('app.string.loadCloudH5'))
      ...
  }
  .params({ path: CLOUD_PATH, tips: $r('app.string.online') })
}

說明: H5頁面本地存放在resources/rawfile目錄下,通過$rawfile()訪問;云端則存放在HttpServerOfWeb服務器上,開發者可以根據約束與限制章節服務端搭建流程進行服務器搭建。

抽獎頁面主要是由“點擊抽獎”按鈕和Web組件構成。給“點擊抽獎”按鈕綁定點擊事件,實現點擊按鈕調用H5頁面的JavaScript函數,并且通過onConfirm回調返回抽獎結果,在原生頁面彈窗顯示,完成ArkTS和H5的雙向交互。

// WebPage.ets
Column() {
  ...
  Web({ src: this.params['path'], controller: this.webController })
    ...
    // 網頁調用confirm()告警時觸發此回調
    .onConfirm((event) = > {
      // 彈窗顯示抽獎結果
      AlertDialog.show({
        message: WebConstant.WEB_ALERT_DIALOG_TEXT_VALUE + event.message,
        ...
      })
      return true;
    })
    ...
  Column() {
    Text($r('app.string.textValue'))
      ...
    Text(this.params['tips'])
      ...
  }
  Button($r('app.string.btnValue'))
    ...
    .onClick(() = > {
      // 異步執行JavaScript腳本
      this.webController.runJavaScript('startDraw()');
    })
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1279

    瀏覽量

    70643
  • 組件
    +關注

    關注

    1

    文章

    527

    瀏覽量

    18262
  • 鴻蒙
    +關注

    關注

    57

    文章

    2474

    瀏覽量

    43684
  • HarmonyOS
    +關注

    關注

    79

    文章

    2006

    瀏覽量

    31924
  • OpenHarmony
    +關注

    關注

    26

    文章

    3806

    瀏覽量

    17958
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    HarmonyOS開發案例:【使用List組件實現設置項】

    使用List組件、Toggle組件以及Router接口,實現一個簡單的設置頁,點擊將跳轉到對應的詳細設置頁面。
    的頭像 發表于 05-10 17:01 ?1259次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【使用List<b class='flag-5'>組件</b><b class='flag-5'>實現</b>設置項】

    HarmonyOS開發案例:【使用List組件實現商品列表】

    OpenHarmony ArkTS提供了豐富的接口和組件開發者可以根據實際場景和開發需求,選用不同的組件和接口。
    的頭像 發表于 05-10 16:41 ?1831次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【使用List<b class='flag-5'>組件</b><b class='flag-5'>實現</b>商品列表】

    HarmonyOS開發案例:【基礎組件Slider的使用】

    學習如何使用聲明式UI編程框架的基礎組件。本篇Codelab將會使用Image組件、Slider組件、Text組件共同實現一個可調節的風車動
    的頭像 發表于 05-10 16:01 ?922次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【基礎<b class='flag-5'>組件</b>Slider的使用】

    HarmonyOS開發案例:【Web組件實戰】

    使用ArkTS語言實現一個簡單的免登錄過程,向大家介紹基本的cookie管理操作。
    的頭像 發表于 04-28 17:30 ?1583次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【<b class='flag-5'>Web</b><b class='flag-5'>組件</b>實戰】

    HarmonyOS開發案例:【常用組件與布局】

    HarmonyOS ArkUI提供了豐富多樣的UI組件,您可以使用這些組件輕松地編寫出更加豐富、漂亮的界面。
    的頭像 發表于 05-09 18:20 ?1588次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【常用<b class='flag-5'>組件</b>與布局】

    HarmonyOS開發案例:【抽獎轉盤】

    基于畫布組件、顯式動畫,實現的一個自定義抽獎圓形轉盤。
    的頭像 發表于 05-07 10:10 ?890次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【<b class='flag-5'>抽獎</b>轉盤】

    「極速探索HarmonyOS NEXT 」閱讀體驗】+Web組件

    ,則源于web開發。盡管Web應用在性能上略遜一籌,但由于其龐大的用戶使用基數,在諸多場景下仍不可或缺。 在應用中顯示 Web 頁面 在開發
    發表于 03-10 10:39

    使用WebView組件實現應用與Web頁面間的通信

    1. 介紹開發者如果需要在自己的應用中嵌入Web頁面,可以通過WebView組件進行開發。WebView組件派生于通用
    發表于 08-26 10:39

    HarmonyOS/OpenHarmony應用開發-Web組件開發體驗

    ;) }}}*附件:HarmonyOSOpenHarmony應用開發-Web組件開發體驗.docx示例效果:參
    發表于 12-12 15:14

    HarmonyOS/OpenHarmony應用開發-類Web開發范式

    邏輯處理。UI組件與數據之間通過單向數據綁定的方式建立關聯,當數據發生變化時,UI界面自動觸發更新。此種開發方式,更接近Web前端開發者的使用習慣,快速將已有的
    發表于 01-18 19:15

    HarmonyOS—使用Web組件加載頁面

    ;/html> </html> 加載HTML格式的文本數據 Web組件可以通過??loadData??接口實現加載HTML格式的文本數據。當開發者不需要加載整個頁面,
    發表于 08-31 17:51

    HarmonyOS 應用開發 Web 組件基本屬性應用和事件

    ;gt; </html> 加載HTML格式的文本數據 Web組件可以通過??loadData??接口實現加載HTML格式的文本數據。當開發者不需要加載整個頁面,只需要顯示
    發表于 09-15 15:28

    華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案

    2021華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案
    的頭像 發表于 10-24 11:25 ?2095次閱讀
    華為<b class='flag-5'>開發</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發案</b>例

    HarmonyOS開發案例:【抽獎轉盤】

    基于畫布組件、動畫樣式,實現的一個自定義抽獎圓形轉盤。
    的頭像 發表于 04-24 21:58 ?639次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【<b class='flag-5'>抽獎</b>轉盤】

    HarmonyOS開發案例:【 switch、chart組件的使用】

    基于switch組件和chart組件實現線形圖、占比圖、柱狀圖,并通過switch切換chart組件數據的動靜態顯示。
    的頭像 發表于 04-25 20:58 ?922次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【 switch、chart<b class='flag-5'>組件</b>的使用】
    主站蜘蛛池模板: 成人国产精品毛片 | 九色九色九色在线综合888 | 站长工具天天爽视频 | 免费网站在线视频美女被 | 中文字幕佐山爱一区二区免费 | 日本人的色道www免费一区 | 婷婷色亚洲 | 国产天天射| 一级a爱片久久毛片 | 四虎国产精品永久在线看 | 欧美在线三级 | 免费观看做网站爱 | 欧美日韩精品一区二区在线线 | 好大好硬好深好爽的视频 | 日本最顶级丰满的aⅴ艳星 日本最好的免费影院 | 日韩免费视频一区二区 | 狠狠狠狠狠狠狠狠 | 男人日女人视频免费看 | 黄色美女网址 | 伊人网99| 男人的视频网站 | 国产拍拍拍免费视频网站 | 在线jlzzjlzz免费播放 | 亚洲精品国产自在久久出水 | 午夜精品久久久久久影视riav | 久久婷婷激情综合色综合也去 | 一级女人毛片人一女人 | 国产aaa级一级毛片 国产ar高清视频+视频 | 黄色在线观看视频 | 亚洲色图欧美在线 | 国模啪啪一区二区三区 | www.天堂.com| 婷婷亚洲视频 | 六月婷婷视频 | 国产成人综合日韩精品婷婷九月 | 亚洲综合成人网 | 毛片高清一区二区三区 | 国产精品免费看久久久香蕉 | 国产精品性 | 伊人精品成人久久综合欧美 | 四虎最新紧急入口 |