91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第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

    文章

    1287

    瀏覽量

    71451
  • 組件
    +關注

    關注

    1

    文章

    532

    瀏覽量

    18424
  • 鴻蒙
    +關注

    關注

    60

    文章

    2620

    瀏覽量

    44063
  • HarmonyOS
    +關注

    關注

    80

    文章

    2126

    瀏覽量

    33100
  • OpenHarmony
    +關注

    關注

    29

    文章

    3854

    瀏覽量

    18633
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

    基于畫布組件、顯式動畫,實現的一個自定義抽獎圓形轉盤。
    的頭像 發表于 05-07 10:10 ?982次閱讀
    <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 ?2171次閱讀
    華為<b class='flag-5'>開發</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發案</b>例

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

    基于畫布組件、動畫樣式,實現的一個自定義抽獎圓形轉盤。
    的頭像 發表于 04-24 21:58 ?795次閱讀
    <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 ?1094次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【 switch、chart<b class='flag-5'>組件</b>的使用】
    主站蜘蛛池模板: 精品久久久久久 | 午夜国产精品久久久久 | 天堂网在线观看 | 国产hs免费高清在线观看 | 午夜视频在线观看一区 | 青草91| 久在操| 五月婷婷啪啪 | 亚洲三级在线免费观看 | 伊人网站在线 | 国产片一级特黄aa的大片 | 亚洲综合春色另类久久 | 男女视频免费 | 8888四色奇米在线观看不卡 | 男人天堂网在线观看 | 米奇777四色精品人人爽 | 午夜国产精品福利在线观看 | 好紧好湿好黄的视频 | 亚洲最新黄色网址 | 亚洲第一网站快活影院 | 综合久久婷婷 | 四虎国产精品永久免费网址 | 久久欧洲视频 | 97久久综合九色综合 | 免费人成激情视频在线观看冫 | se视频在线观看 | 色视频色露露永久免费观看 | 久久天天躁狠狠躁夜夜 | 国产欧美日韩视频免费61794 | 亚洲女人小便 | 黄色在线网站 | 狠狠色噜噜狠狠色综合久 | 欧美黑人5o厘米全进去 | 天天干天天色综合 | 天堂电影免费在线资源 | 日本黄色免费网站 | 亚洲啪啪 | 女bbbbxxxx毛片视频丶 | 日韩综合nv一区二区在线观看 | 黄网站色视频免费看无下截 | 俺去啦网婷婷 |