<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    1241

    瀏覽量

    68633
  • 組件
    +關注

    關注

    1

    文章

    359

    瀏覽量

    17628
  • 鴻蒙
    +關注

    關注

    55

    文章

    1866

    瀏覽量

    42180
  • HarmonyOS
    +關注

    關注

    79

    文章

    1912

    瀏覽量

    29398
  • OpenHarmony
    +關注

    關注

    24

    文章

    3437

    瀏覽量

    15248
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

    HarmonyOS應用開發資料(Svg組件

    1、HarmonyOS應用開發-Svg組件circle  該組件從API version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。2、
    發表于 03-17 14:49

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

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

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

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

    HarmonyOS/OpenHarmony應用開發-聲明式開發范式組件匯總

    組件是構建頁面的核心,每個組件通過對數據和方法的簡單封裝,實現獨立的可視、可交互功能單元。組件之間相互獨立,隨取隨用,也可以在需求相同的地方重復使用。聲明式
    發表于 01-19 11:14

    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 ?1652次閱讀
    華為<b class='flag-5'>開發</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發案</b>例

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

    基于畫布組件、動畫樣式,實現的一個自定義抽獎圓形轉盤。
    的頭像 發表于 04-24 21:58 ?83次閱讀
    <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 ?146次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【 switch、chart<b class='flag-5'>組件</b>的使用】
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>