国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS開發(fā)案例:【購物APP】

這篇具有很好參考價值的文章主要介紹了HarmonyOS開發(fā)案例:【購物APP】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

介紹

本篇Codelab使用常用組件、頁面路由router實現(xiàn)購物應(yīng)用,包含以下功能:

  1. 使用toolbar、toolbar-item組件實現(xiàn)“首頁”,“新品”,“購物車”,“我的”頁面切換。
  2. 使用list組件,展示購物車里的商品。
  3. 使用swiper組件,實現(xiàn)圖片自動輪播。
  4. 使用panel組件,展示商品規(guī)格。
  5. 使用自定義組件,提高代碼的可讀性。

HarmonyOS開發(fā)案例:【購物APP】,鴻蒙開發(fā),harmonyos,音視頻,鴻蒙開發(fā),openharmony,typescript,實戰(zhàn)項目,鴻蒙

相關(guān)概念

  • [swiper]:滑動容器,提供切換子組件顯示的能力。
  • [input]:交互式組件,包括單選框,多選框,按鈕和單行文本輸入框。
  • [search]:搜索框組件,用于提供用戶搜索內(nèi)容的輸入?yún)^(qū)域。
  • [toolbar]:工具欄。放在界面底部,用于展示針對當前界面的操作選項。
  • [toolbar-item]:工具欄[toolbar]子組件。 用于展示工具欄上的一個操作選項。
  • [自定義組件]:自定義組件是用戶根據(jù)業(yè)務(wù)需求,將已有的組件組合,封裝成的新組件,可以在工程中多次調(diào)用,從而提高代碼的可讀性。

環(huán)境搭建

軟件要求

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

硬件要求

  • 開發(fā)板類型:[潤和RK3568開發(fā)板]。
  • OpenHarmony系統(tǒng):3.2 Release及以上版本。

環(huán)境搭建

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

  1. [獲取OpenHarmony系統(tǒng)版本]:標準系統(tǒng)解決方案(二進制)。以3.2 Release版本為例:

    HarmonyOS開發(fā)案例:【購物APP】,鴻蒙開發(fā),harmonyos,音視頻,鴻蒙開發(fā),openharmony,typescript,實戰(zhàn)項目,鴻蒙

  2. 搭建燒錄環(huán)境。

    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開發(fā)板的燒錄]
  3. 搭建開發(fā)環(huán)境。

    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發(fā)環(huán)境配置。
    2. 開發(fā)環(huán)境配置完成后,請參考[使用工程向?qū)創(chuàng)建工程(模板選擇“Empty Ability”)。
    3. 工程創(chuàng)建完成后,選擇使用[真機進行調(diào)測]。
    4. 鴻蒙開發(fā)指導(dǎo)文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復(fù)制轉(zhuǎn)到。

HarmonyOS開發(fā)案例:【購物APP】,鴻蒙開發(fā),harmonyos,音視頻,鴻蒙開發(fā),openharmony,typescript,實戰(zhàn)項目,鴻蒙

代碼結(jié)構(gòu)解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在【gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md】中提供。由于本篇Codelab頁面較多,因此component和pages目錄下只展示“購物主頁面”的hml、js、css。

`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

├──entry/src/main/js	             // 代碼區(qū)
│  └──MainAbility
│     ├──common
│     │  ├──constant
│     │  │  └──commonConstants.js    // 公共常量類
│     │  └──images                   // 圖片區(qū)
│     ├──component
│     │  ├──backComponent            // 后退子組件
│     │  ├──commonButton             // 支付按鈕子組件
│     │  ├──commonToolbar            // 導(dǎo)航欄子組件
│     │  ├──home                     // 購物主頁子組件
│     │  ├──likedCards               // 猜你喜歡卡片子組件
│     │  ├──myInfo                   // 我的子組件
│     │  ├──newProduct               // 新品子組件
│     │  ├──orderReusableCom         // 用戶商品信息子組件
│     │  ├──productBuyInfo           // 購買商品卡片子組件
│     │  ├──shoppingCart             // 購物車子組件
│     │  └──subtitle                 // 副標題子組件
│     ├──i18n
│     │  ├──en-US.json               // 英文國際化			
│     │  └──zh-CN.json               // 中文國際化	
│     ├──pages
│     │  ├──allOrders                // 全部訂單頁
│     │  ├──homePage                 // 購物主頁
│     │  │  ├──homePage.css          // 購物主頁面樣式
│     │  │  ├──homePage.hml          // 購物主頁面
│     │  │  └──homePage.js           // 購物主頁面邏輯
│     │  ├──launchPage               // 啟動頁
│     │  ├──pendingPayment           // 待支付頁
│     │  ├──productDetails           // 產(chǎn)品詳情頁
│     │  └──sureOrder                // 確定訂單頁
│     └──app.js                      // 程序入口
└──entry/src/main/resources          // 應(yīng)用資源目錄

構(gòu)建購物應(yīng)用首頁

本篇Codelab選取購物應(yīng)用的主頁面、購物車頁面、以及導(dǎo)航欄進行詳細的講解,對于完整代碼,可在gitee源碼中進行查看。

購物應(yīng)用的主頁面主要由界面底部導(dǎo)航欄和導(dǎo)航欄上的內(nèi)容組成。效果如圖所示:

HarmonyOS開發(fā)案例:【購物APP】,鴻蒙開發(fā),harmonyos,音視頻,鴻蒙開發(fā),openharmony,typescript,實戰(zhàn)項目,鴻蒙

<!-- homePage.hml -->
<element name="home" src="../../component/home/home.hml"></element>
<element name="new-product" src="../../component/newProduct/newProduct.hml"></element>
<element name="shopping-cart" src="../../component/shoppingCart/shoppingCart.hml"></element>
<element name="my-info" src="../../component/myInfo/myInfo.hml"></element>
<element name="common-toolbar" src="../../component/commonToolbar/commonToolbar.hml"></element>

<div class="container">
    <!-- 主頁面 -->
    <home if="{{ tag === homePageIndex }}"></home>

    <!-- 新品頁面 -->
    <new-product if="{{ tag === newProductIndex }}"></new-product>

    <!-- 購物車頁面 -->
    <shopping-cart if="{{ tag === shoppingCartIndex }}"></shopping-cart>

    <!-- 我的頁面 -->
    <my-info if="{{ tag === myInfoIndex }}"></my-info>

    <!-- 導(dǎo)航欄 -->
    <common-toolbar tag="{{ tag }}" @switch-toolbar="switchToolbar"></common-toolbar>
</div>

底部導(dǎo)航欄:由“主頁”、“新品”、“購物車”以及“我的”頁面組成,點擊導(dǎo)航欄內(nèi)容,展示所點擊模塊的內(nèi)容。

// homePage.js
import CommonConstants from '../../common/constant/commonConstants';

export default {
  data: {
    // 頁面默認展示主頁,tag是主頁面的索引
    tag: 1,
    // 主頁面索引
    homePageIndex: CommonConstants.HOME_PAGE_INDEX,
    // 新品頁面索引
    newProductIndex: CommonConstants.NEW_PRODUCT_INDEX,
    // 購物車頁面索引
    shoppingCartIndex: CommonConstants.SHOPPING_CART_INDEX,
    // 我的頁面索引
    myInfoIndex: CommonConstants.MY_INFO_INDEX
  },

  /**
   * 切換導(dǎo)航欄內(nèi)容
   *
   * @param value 子組件傳過來的索引
   */
  switchToolbar(value) {
    this.tag = value.detail.index;
  }
}

子組件:導(dǎo)航欄的使用

導(dǎo)航欄由“主頁”、“新品”、“購物車”以及“我的”組成,點擊導(dǎo)航欄對應(yīng)的子組件,頁面會展示對應(yīng)模塊的內(nèi)容。效果如圖所示:

HarmonyOS開發(fā)案例:【購物APP】,鴻蒙開發(fā),harmonyos,音視頻,鴻蒙開發(fā),openharmony,typescript,實戰(zhàn)項目,鴻蒙

在父組件homePage.hml中使用@switch-toolbar="switchToolbar"綁定子組件的事件,用于接收子組件傳過來的索引,通過if判斷,從而展示索引對應(yīng)的頁面。

<!-- homePage.hml -->
...
<div class="container">
    <!-- 主頁面 -->
    <home if="{{ tag === homePageIndex }}"></home>

    <!-- 新品頁面 -->
    <new-product if="{{ tag === newProductIndex }}"></new-product>

    <!-- 購物車頁面 -->
    <shopping-cart if="{{ tag === shoppingCartIndex }}"></shopping-cart>

    <!-- 我的頁面 -->
    <my-info if="{{ tag === myInfoIndex }}"></my-info>

    <!-- 導(dǎo)航欄 -->
    <common-toolbar tag="{{ tag }}" @switch-toolbar="switchToolbar"></common-toolbar>
</div>

<!-- commonToolbar.hml -->
<div class="container">
    <toolbar class="toolbar">
        <toolbar-item value="{{ $t(toolbarName.home) }}" @click="switchToolbar(homePageIndex)"
                      icon="{{ tag === homePageIndex ? commonIcon.home : commonIcon.homeDisable }}">
        </toolbar-item>
        <toolbar-item value="{{ $t(toolbarName.newProduct) }}" @click="switchToolbar(newProductIndex)"
                      icon="{{ tag === newProductIndex ? commonIcon.newProduct : commonIcon.newProductDisable }}">
        </toolbar-item>
        <toolbar-item value="{{ $t(toolbarName.shoppingCart) }}" @click="switchToolbar(shoppingCartIndex)"
                      icon="{{ tag === shoppingCartIndex ? commonIcon.shoppingCart : commonIcon.shoppingCartDisable }}">
        </toolbar-item>
        <toolbar-item value="{{ $t(toolbarName.me) }}" @click="switchToolbar(myInfoIndex)"
                      icon="{{ tag === myInfoIndex ? commonIcon.me : commonIcon.meDisable }}">
        </toolbar-item>
    </toolbar>
</div>

在子組件commonToolbar.js中通過this.$emit(‘switchToolbar’, {info: value})觸發(fā)事件并向上傳遞參數(shù),homePage.js中的switchToolbar方法接收子組件傳過來的索引。在子組件commonToolbar.js文件中定義props,props用于組件之間的數(shù)據(jù)通信,當父組件中的tag發(fā)生變化的時候,子組件也會隨之響應(yīng),然后改變toolbar-item中icon的顏色。

// homePage.js
import CommonConstants from '../../common/constant/commonConstants';

export default {
  data: {
    // 頁面默認展示主頁,tag是主頁面的索引
    tag: 1,
    ...
  },

  /**
   * 切換導(dǎo)航欄內(nèi)容
   *
   * @param value 子組件傳過來的索引
   */
  switchToolbar(value) {
    this.tag = value.detail.index;
  }
}

// commonToolbar.js
import CommonConstants from '../../common/constant/commonConstants';

export default {
  props: ['tag'],
  data: {
    commonIcon: CommonConstants.COMMON_TOOLBAR_ICON,
    toolbarName: CommonConstants.COMMON_TOOLBAR_NAME,
    // 主頁面索引
    homePageIndex: CommonConstants.HOME_PAGE_INDEX,
    // 新品頁面索引
    newProductIndex: CommonConstants.NEW_PRODUCT_INDEX,
    // 購物車頁面索引
    shoppingCartIndex: CommonConstants.SHOPPING_CART_INDEX,
    // 我的頁面索引
    myInfoIndex: CommonConstants.MY_INFO_INDEX
  },

  /**
   * 向父組件傳值
   *
   * @param index 選中子模塊的索引
   */
  switchToolbar(index) {
    this.$emit('switchToolbar', {
      index: index
    });
  }
}

構(gòu)建購物車頁面

購物車頁面由頂部標題欄、購物車商品列表、猜你喜歡的商品列表三部分組成,并以子組件的形式顯示在主頁面中。其中,購物車商品列表使用list組件和for循環(huán),實現(xiàn)對多條商品數(shù)據(jù)進行展示。猜你喜歡的商品列表是通過引用自定義組件實現(xiàn)的。效果如圖所示:

HarmonyOS開發(fā)案例:【購物APP】,鴻蒙開發(fā),harmonyos,音視頻,鴻蒙開發(fā),openharmony,typescript,實戰(zhàn)項目,鴻蒙文章來源地址http://www.zghlxwxcb.cn/news/detail-861836.html

<!-- shoppingCart.hml -->
<element name="liked-cards" src="../../component/likedCards/likedCards.hml"></element>

<div class="container">
    <div class="top">
        <!-- 頂部導(dǎo)航標題欄 -->
        <div class="top-title">
            <text class="shopping-cart">{{ $t('strings.shopping_cart') }}</text>
            <text class="edit">{{ $t('strings.edit') }}</text>
        </div>
        <!-- 購物車商品列表 -->
        <div class="top-list">
            <div class="list-title">
                <input class="all-checkbox" type="checkbox" checked="{{ isAllSelect }}" @change="checkboxOnChange">
                </input>
                <image class="my-icon-size" src="{{ person }}"></image>
                <text class="mall-self-operated">{{ $t('strings.mall_self_operated') }}</text>
            </div>
            <list class="list">
                <list-item for="{{ (index, item) in shoppingListData }}" class="list-item">
                    <div class="list-content">
                        <input class="checkbox" type="checkbox" checked="{{ item.isSelect }}"></input>
                        <image class="product-pictures" src="{{ item.image }}"></image>
                        <div class="box-content">
                            <text class="product-title">{{ $t(item.title) }}</text>
                            <text class="product-subtitle">{{ $t(item.subtitle) }}</text>
                            <div class="content-price">
                                <text class="product-price">{{ item.price }}</text>
                                <div class="price-num">
                                    <image class="my-icon-size" @click="subtractNum(index)" src="{{ item.num === 0 ?
                                            commonIcon.decreaseDisableIcon : commonIcon.decreaseIcon }}">
                                    </image>
                                    <text class="product-num">{{ item.num }}</text>
                                    <image class="my-icon-size" src="{{ commonIcon.increaseIcon }}"
                                           @click="addNum(index)">
                                    </image>
                                </div>
                            </div>
                        </div>
                    </div>
                </list-item>
            </list>
        </div>
    </div>
    <!-- 猜你喜歡商品列表 -->
    <div class="middle-card">
        <liked-cards></liked-cards>
    </div>
</div>
  • 點擊“商品自營”頭像前的多選框,會觸發(fā)checkboxOnChange()方法,頁面會勾選/不勾選購物車的中所有商品。
  • 點擊“+”按鈕會觸發(fā)addNum()方法,增加單件商品的數(shù)量。
  • 點擊“-”按鈕會觸發(fā)subtractNum()方法,減少單件商品的數(shù)量。
// shoppingCart.js
import CommonConstants from '../../common/constant/commonConstants';

export default {
  data: {
    isAllSelect: false,
    shoppingListData: CommonConstants.SHOPPING_LIST_DATA,
    commonIcon: CommonConstants.SHOPPING_CART_ICON,
    person: CommonConstants.COMMON_ICON.person
  },

  /**
   * 購物車商品全選/非全選
   */
  checkboxOnChange() {
    this.isAllSelect = !this.isAllSelect;
    this.shoppingListData.filter((item) => {
      item.isSelect = this.isAllSelect;
    });
  },

  /**
   * 勾選單個商品
   *
   * @param subscript 選中商品的索引
   * @param event 單選框事件
   */
  singleAnswer(subscript, event) {
    // 修改商品的選擇狀態(tài)
    this.shoppingListData.forEach((item, index) => {
      if (index === subscript) {
        item.isSelect = event.checked;
      }
    })
    // 檢查購物車中的所有商品是否都被選中
    let selectAll = this.shoppingListData.every(item => item.isSelect === true);
    if (selectAll === true) {
      this.isAllSelect = true;
    } else {
      this.isAllSelect = false;
    }
  },

  /**
   * 減少商品數(shù)量邏輯
   *
   * @param value 當前商品的數(shù)量
   */
  subtractNum(value) {
    if (this.shoppingListData[value].num > 0) {
      this.shoppingListData[value].num--;
    }
  },

  /**
   * 增加商品數(shù)量邏輯
   *
   * @param value 當前商品的數(shù)量
   */
  addNum(value) {
    this.shoppingListData[value].num++;
  }
}

到了這里,關(guān)于HarmonyOS開發(fā)案例:【購物APP】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 鴻蒙HarmonyOS實戰(zhàn)-工具安裝和Helloworld案例

    鴻蒙HarmonyOS實戰(zhàn)-工具安裝和Helloworld案例

    HarmonyOS是華為自主開發(fā)的操作系統(tǒng),它在2020年9月正式發(fā)布。它最初被稱為鴻蒙OS,后來更名為HarmonyOS。HarmonyOS旨在提供一種可在各種設(shè)備上無縫運行的統(tǒng)一操作系統(tǒng),包括智能手機、平板電腦、智能穿戴設(shè)備、智能音箱、車載系統(tǒng)、智能家居設(shè)備等等。相比于其他操作系統(tǒng),

    2024年01月17日
    瀏覽(21)
  • 17.鴻蒙HarmonyOS App(JAVA)滑動選擇器

    17.鴻蒙HarmonyOS App(JAVA)滑動選擇器

    每天進步一點點 ,成功在久不在速 ? ? ?//設(shè)置文本樣式 picker.setNormalTextFont(Font.DEFAULT_BOLD); picker.setNormalTextSize(40); picker.setNormalTextColor(new Color(Color.getIntColor(\\\"#FFA500\\\"))); picker.setSelectedTextFont(Font.DEFAULT_BOLD); picker.setSelectedTextSize(40); picker.setSelectedTextColor(new Color(Color.getIntColor(\\\"#00FFFF

    2024年01月20日
    瀏覽(24)
  • 18.鴻蒙HarmonyOS App(JAVA)日期選擇器-時間選擇器

    18.鴻蒙HarmonyOS App(JAVA)日期選擇器-時間選擇器

    18.鴻蒙HarmonyOS App(JAVA)日期選擇器-時間選擇器 點擊button按鈕觸發(fā)事件顯示月份與獲取的時間 DatePicker的共有XML屬性繼承自:StackLayout DatePicker的自有XML屬性見下表: 屬性名稱 中文描述 取值 取值說明 使用案例 date_order 顯示格式,年月日 day-month-year 表示日期以日-月-年的格式顯

    2024年01月23日
    瀏覽(18)
  • HarmonyOS基礎(chǔ)(七)- 詳細剖析鴻蒙引入第三方庫案例篇(1)

    HarmonyOS基礎(chǔ)(七)- 詳細剖析鴻蒙引入第三方庫案例篇(1)

    大家好!我是黑臂麒麟(起名原因:一個出生全右臂自帶紋身的高質(zhì)量程序員??),也是一位6+(約2個半坤年)的前端; 學(xué)習(xí)如像練武功一樣,理論和實踐要相結(jié)合,學(xué)一門只是也是一樣; 這里會用兩周的時間把所學(xué)的常用ArkUI基礎(chǔ)的常用組件輸出在網(wǎng); 如需深究可前往高

    2024年04月23日
    瀏覽(22)
  • 15.鴻蒙HarmonyOS App(JAVA)進度條與圓形進度條

    15.鴻蒙HarmonyOS App(JAVA)進度條與圓形進度條

    15.鴻蒙HarmonyOS App(JAVA)進度條與圓形進度條 MainAbilitySlice.java

    2024年01月17日
    瀏覽(25)
  • 鴻蒙開發(fā)-HarmonyOS UI架構(gòu)

    鴻蒙開發(fā)-HarmonyOS UI架構(gòu)

    當我們新建一個工程之后,首先會進入Index頁。我們先簡單的做一個文章列表的顯示 這樣,我們只要把 articles 里面填充數(shù)據(jù),就能正常顯示一個列表了。 可以看到上面的代碼里是沒有數(shù)據(jù)的,只有一個空數(shù)組。我們想要從網(wǎng)絡(luò)獲取數(shù)據(jù)。那么,數(shù)據(jù)怎么來呢?最簡單粗暴的

    2024年02月19日
    瀏覽(20)
  • 鴻蒙學(xué)習(xí):初探HarmonyOS前端開發(fā)

    隨著鴻蒙操作系統(tǒng)(HarmonyOS)的推出,前端開發(fā)者們迫切希望了解如何在這個全新的操作系統(tǒng)上進行應(yīng)用程序的開發(fā)。本文將帶您深入了解HarmonyOS前端開發(fā)的基礎(chǔ)知識和相關(guān)源代碼示例。 HarmonyOS是華為推出的一款基于微內(nèi)核的分布式操作系統(tǒng),旨在為各種設(shè)備提供統(tǒng)一的開發(fā)

    2024年01月21日
    瀏覽(27)
  • 鴻蒙(HarmonyOS)應(yīng)用開發(fā)指南

    鴻蒙(HarmonyOS)應(yīng)用開發(fā)指南

    1.1 簡介 鴻蒙 (即 HarmonyOS ,開發(fā)代號 Ark ,正式名稱為華為終端鴻蒙智能設(shè)備操作系統(tǒng)軟件)是華為公司自 2012 年以來開發(fā)的一款可支持鴻蒙原生應(yīng)用和兼容 AOSP 應(yīng)用的 分布式操作系統(tǒng) 。該系統(tǒng)利用“分布式”技術(shù)將 手機、電腦、平板、電視、汽車和智能穿戴 等多款設(shè)備

    2024年02月02日
    瀏覽(58)
  • HarmonyOS Next 自定義安全鍵盤案例_鴻蒙next 自定義鍵盤(1)

    HarmonyOS Next 自定義安全鍵盤案例_鴻蒙next 自定義鍵盤(1)

    // 切換大寫字母鍵盤 this.curKeyboardType = EKeyboardType.UPPERCASE; this.items = upperCaseKeyData; } else { // 切換小寫字母鍵盤 this.curKeyboardType = EKeyboardType.LOWERCASE; this.items = lowerCaseKeyData; } break; // 切換特殊字符鍵盤 case EKeyType.SPECIAL: if (this.curKeyboardType !== EKeyboardType.SPECIAL) { this.curKeyboardType =

    2024年04月17日
    瀏覽(20)
  • HarmonyOS鴻蒙基于Java開發(fā): 相機開發(fā)

    目錄 相機開發(fā)流程 接口說明 相機權(quán)限申請 相機設(shè)備創(chuàng)建 相機設(shè)備配置 相機幀捕獲 相機設(shè)備釋放 相機模塊主要工作是給相機應(yīng)用開發(fā)者提

    2024年01月20日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包