小程序學習筆記:自定義組件創建、引用、應用場景及與頁面的區別

在微信小程序開發中,自定義組件是一項極為實用的功能,它能有效提高代碼的復用性,降低開發成本,提升開發效率。本文將深入剖析微信小程序自定義組件的各個關鍵方面,包括創建、引用、應用場景以及與頁面的區別,并附上詳細代碼示例,幫助開發者全面掌握這一技術。

一、自定義組件的創建

創建自定義組件主要分為以下三個步驟:

  1. 創建 components 文件夾:在項目根目錄下,通過鼠標右鍵新建一個名為 “components” 的文件夾。此文件夾將用于存放所有自定義組件,是管理組件的基礎目錄。
  2. 新建組件文件夾:在 “components” 文件夾內,再新建一個專門用于存放特定組件的文件夾。例如,創建一個名為 “test” 的文件夾,該文件夾將用于存放我們的第一個自定義組件。
  3. 生成組件文件:在新建的組件文件夾(如 “test” 文件夾)上,鼠標右鍵點擊,選擇 “新建 component” 選項。隨后,輸入組件名稱(如 “test”)并回車確認。此時,開發工具會自動生成組件對應的四個文件,分別是:
  • .js 文件:用于編寫組件的邏輯代碼,如數據處理、事件響應等功能。
  • .json 文件:組件的配置文件,用于聲明組件相關的屬性和配置信息。
  • .wxml 文件:組件的結構文件,類似于 HTML,用于定義組件的頁面結構。
  • .wxss 文件:組件的樣式文件,用于設置組件的外觀樣式,與 CSS 功能類似。

為保證項目目錄結構清晰,建議將每個組件分別存放在獨立的文件夾中。這樣,不同組件的文件相互隔離,便于管理和維護,避免文件混亂。

二、自定義組件的引用

組件的引用方式分為局部引用和全局引用兩種,它們各自有著不同的應用場景和使用方法。

(一)局部引用

局部引用意味著組件僅能在當前被引用的頁面內使用。具體引用步驟如下:

  1. 在頁面.json 配置文件中引入組件:打開需要引用組件的頁面的.json 配置文件(例如,若要在首頁引用組件,則打開首頁對應的.json 文件)。在文件中聲明一個 “usingComponents” 節點,所有要使用的組件都在該節點下進行聲明。“usingComponents” 的值是一個鍵值對,其中鍵是組件引用后的名稱,值是組件的存放路徑(路徑不要帶任何后綴)。例如
{"usingComponents": {"myTest1": "/components/test"}
}

上述代碼中,“myTest1” 是自定義的引用名稱,“/components/test” 是 “test” 組件的存放路徑,表示從項目根目錄下的 “components” 文件夾中找到 “test” 組件。
2. 在頁面.wxml 中使用組件:完成配置文件的引用聲明后,即可在頁面的.wxml 文件中以標簽形式使用組件。例如,在首頁的.wxml 文件中添加如下代碼

<view><myTest1></myTest1>
</view>

保存文件后,頁面將顯示該組件的內容。若在其他未引用該組件的頁面中使用相同標簽,組件內容不會被渲染,這證明了局部引用的局限性,即組件僅在當前引用頁面有效。

(二)全局引用

全局引用允許組件在小程序的每個頁面中使用,提高了組件的復用性。引用步驟如下:

在 app.json 全局配置文件中引入組件:打開項目的 app.json 全局配置文件,在與 “window” 節點同級的位置聲明一個 “usingComponents” 節點。在該節點下進行組件引用聲明,方式與局部引用類似。例如:

{"window": {// 窗口相關配置},"usingComponents": {"myTest1": "/components/test"}
}
  1. 在各頁面中使用組件:完成全局引用配置后,在任何頁面的.wxml 文件中都可以直接使用該組件。例如,在首頁和消息頁面的.wxml 文件中都可以添加如下代碼來使用組件:
<view><myTest1></myTest1>
</view>

保存文件后,在首頁和消息頁面中都能正常顯示組件內容,這體現了全局引用的優勢,即一次引用,多處使用。

三、應用場景選擇

在實際開發中,應根據組件的使用頻率和范圍來選擇合適的引用方式。

  1. 全局引用場景:當某個組件在多個頁面中頻繁使用時,建議采用全局引用方式。例如,小程序底部的導航欄組件,幾乎在每個頁面都需要顯示,此時全局引用可以避免在每個頁面的.json 文件中重復聲明引用,減少代碼冗余,提高開發效率和代碼的可維護性。
  2. 局部引用場景:若組件僅在特定頁面可能被用到,局部引用則更為合適。比如,某個頁面中獨有的表單提交提示組件,僅在該頁面使用,對其他頁面無意義,這種情況下局部引用既能滿足需求,又不會增加其他頁面的不必要引用,降低了代碼復雜度。

四、組件和頁面的區別

雖然組件和頁面在表面上都由.js、.json、.wxml 和.wxss 四個文件組成,但它們在內部存在一些顯著區別。

.json 文件區別:組件的.json 文件中需要聲明 “component": true” 這個屬性,用于表明當前是一個組件。而頁面的.json 文件通常默認有 “usingComponents” 節點(用于局部引用組件),但不會有 “component": true” 屬性。例如,組件的.json 文件內容可能如下:

{"component": true
}
  1. .js 文件區別:組件的.js 文件中調用的是 “Component” 函數,用于定義組件的邏輯和行為。而頁面的.js 文件調用的是 “Page” 函數,用于定義頁面的相關配置和功能。例如,組件的.js 文件開頭可能是:
Component({// 組件的屬性、數據、方法等定義
})

頁面的.js 文件開頭則是:

Page({// 頁面的數據、生命周期函數、事件處理函數等定義
})
  1. 事件處理函數區別:組件的事件處理函數需要定義在 “methods” 節點中。而頁面的事件處理函數只需定義在與 “data” 節點同級的位置,與組件的處理方式不同。例如,頁面的事件處理函數定義如下:
Page({data: {// 頁面數據},// 事件處理函數handleTap: function() {// 處理點擊事件的邏輯}
})

組件的事件處理函數定義如下:

Component({data: {// 組件數據},methods: {// 事件處理函數handleTap: function() {// 處理點擊事件的邏輯}}
})

通過深入理解微信小程序自定義組件的創建、引用、應用場景及與頁面的區別,并結合實際項目進行運用,開發者能夠更加高效地開發出功能豐富、結構清晰的小程序應用,為用戶帶來更好的體驗。希望本文的內容能對廣大開發者有所幫助,助力大家在小程序開發領域不斷探索和進步。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88848.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開發數字化綠色低碳園區系統:分階段實施指南

目錄 摘要 背景 核心模塊 階段性開發 分階段開發實施 第一階段(3-6個月):搭建核心骨架 第二階段(6-9個月):擴展功能 第三階段(9-12個月):深度定制 技術選型 注意事項 實施計劃表 小結 摘要 數字化綠色低碳園區系統通過物聯網、能源管理和數據分析等技術,…

智能實驗室革命:Deepoc大模型驅動全自動化科研新生態

自動化實驗執行 自動化實驗執行通過機器人技術與智能控制系統的深度融合&#xff0c;重構傳統實驗操作模式&#xff0c;其核心技術突破體現在以下層面&#xff1a; 1. ??多模態任務分解與執行架構?? 基于大模型的任務解析引擎可將復雜實驗流程分解為可執行的原子操作序列…

還在手動部署?用Jenkins+Docker+Git實現自動化CI/CD

“每次發版都要手動打包上傳&#xff0c;部署宕機了才發現出錯&#xff1f;” 你還在重復“開發提測-打包部署-驗證回歸”的流水線操作&#xff1f;明明可以一鍵搞定的流程&#xff0c;為何還在親力親為&#xff1f;是時候了解并掌握 自動化 CI/CD 的真正威力了&#xff01; 手…

Stream流中間方法的使用

Stream流的中間方法詳解 Stream流的中間方法指那些返回新Stream的操作&#xff0c;允許鏈式調用。這些方法通常用于數據過濾、映射、排序等操作&#xff0c;不會觸發最終計算。 filter方法 filter用于篩選滿足條件的元素&#xff0c;接受一個Predicate函數式接口參數。 Lis…

華為云Flexus+DeepSeek征文|華為云ModelArts結合FeedMe:開啟AI驅動的RSS閱讀新時代

華為云FlexusDeepSeek征文&#xff5c;華為云ModelArts結合FeedMe&#xff1a;開啟AI驅動的RSS閱讀新時代 前言一、華為云ModelArts Studio平臺介紹1.1 ModelArts Studio介紹1.2 ModelArts Studio主要特點1.3 ModelArts Studio使用場景1.4 ModelArts Studio產品架構 二、FeedMe…

華為云Flexus+DeepSeek征文 | 華為云ModelArts Studio新手入門:DeepSeek服務的配置與使用詳解

華為云FlexusDeepSeek征文 | 華為云ModelArts Studio新手入門&#xff1a;DeepSeek服務的配置與使用詳解 前言一、ModelArts Studio介紹1. 華為云ModelArts Studio簡介2. 華為云ModelArts Studio主要特點3. 華為云ModelArts Studio主要使用場景 二、ModelArts Studio平臺開通De…

Note2:機器學習基本攻略(Machine Learning by Hung-yi Lee)

目錄 基本思路 1.訓練資料上loss很大 1.1 model bias 1.2 optimazation&#xff08;優化不夠好&#xff09; 1.3如何確定是 model bias還是optimazation 解決方法 2.訓練資料上loss很小 2.1 Overfitting 解決方案 1.使用更多訓練資料 2.限制模型 2.2 Mismatch 3.…

使用ubuntu下的FAST和gfzrnx進行廣播星歷下載及版本之間的轉換

使用FAST下載混合的廣播星歷文件 cd FAST_V3.00.03 (進入文件夾) chmod x FAST (授權) chmod x bin/* ./FAST1 下載&#xff1a;https://gnss.gfz.de/services/gfzrnx/download &#xff08;需注冊&#xff09; 2 打開bash&#xff0c;依次輸入 (其中gfzrnx_2.1.12_lx64為下載…

vue裁剪圖片

有一個需求就是在你有倆張圖片一樣大小&#xff0c;一個亮色的&#xff0c;一個暗色的&#xff0c;亮色的根據后端返回的數據顯示多高&#xff0c;這樣就有一個感覺是慢慢往上走的&#xff0c;主要用到了css的一個屬性 .my-info-image {width: 280px;height: 200px;position: a…

使用GDAL庫統計不同分區內的災害點分布情況,計算災害相對密度等統計指標

主要功能是處理地理空間柵格數據&#xff08;TIFF文件&#xff09;和災害點數據&#xff08;CSV文件&#xff09;&#xff0c;統計不同分區內的災害點分布情況&#xff0c;并計算災害相對密度等統計指標。 TIFF文件&#xff1a;已經重分類后的文件 CSV文件&#xff1a;災害點…

jar 包如何下載

在 Javaweb - 2 中&#xff0c;我們導入了三那個 jar 包來進行服務端的 JSON 串格式轉換&#xff0c;這個為大家做一個如何下載那三個 jar 包的教程~ 打開倉庫網站 我們需要先打開一個倉庫網址&#xff1a;Maven Repository: Search/Browse/Explore 這個網址中&#xff0c;幾…

【vue3】打包配置webpack壓縮,哈希值設置

壓縮配置 依賴下載&#xff1a; npm i --save-dev compression-webpack-plugin vue.config.js配置 const CompressionWebpackPlugin require(compression-webpack-plugin);filenameHashing: true, // 打包后為文件名增加hash值// 配置webpackconfigureWebpack: config >…

vue3 + elementPlus 封裝hook,檢測form表單數據修改變更;示例用 script setup 語法使用

vue3 elementPlus 封裝hook,檢測form表單數據修改變更&#xff1b;示例 script setup 語法 原文&#xff1a;https://mp.weixin.qq.com/s/gCuqKskp-KBxdClxcpwFqw原文&#xff1a;https://mp.weixin.qq.com/s/gCuqKskp-KBxdClxcpwFqw原文&#xff1a;https://mp.weixin.qq.com…

Java-泛型類

一、泛型類的基本概念 1. 什么是泛型類 泛型類是指使用類型參數定義的類&#xff0c;可以在類定義時不指定具體類型&#xff0c;而在實例化時指定。 2. 泛型類的作用 類型安全&#xff1a;編譯時檢查類型匹配 消除強制轉換&#xff1a;減少運行時ClassCastException風險 代…

信任邊界的人生智慧

我曾經是個喜歡試探的人 總想知道朋友會不會在我困難時伸手&#xff0c;合作伙伴會不會在利益面前變臉&#xff0c;愛人會不會在誘惑下堅守 結果發現&#xff0c;每一次試探都像是在關系上撒鹽 不是因為對方經不起考驗&#xff0c;而是「考驗」這個行為本身就充滿了不信任的…

SQL Server 中 GO 的作用

CREATE DATABASE MyDatabase; USE MyDatabase; GO --定義局部變量 DECLARE s_no varchar(8), s_avgrade numeric(4,1); --對局部變量賦值 SET s_no 20170208; SET s_avgrade 95.0; --使用局部變量 UPDATE student SET s_avgrade s_avgrade WHERE s_no s_no;&#x1f31f; G…

指標中臺+大模型:解密衡石Agentic BI的NL2DSL架構實現

——Text2Metrics引擎如何攻克語義鴻溝&#xff0c;碾壓傳統NL2SQL方案 一、傳統NL2SQL的“架構原罪”&#xff1a;業務語義的失控黑洞 當某銀行嘗試用NL2SQL分析“高凈值客戶流失率”時&#xff0c;系統生成如下危險SQL&#xff1a; 這正是NL2SQL的三大架構缺陷&#xff1a;…

設計模式 - 抽象工廠

抽象工廠是對工廠的抽象化&#xff0c;而不只是制造方法。 為了滿足不同用戶對產品的多樣化需求&#xff0c;工廠不會只局限于生產一類產品&#xff0c;但是系統如果按工廠方法那樣為每種產品都增加一個工廠又會造成工廠泛濫。所以&#xff0c;為了調和這種矛盾&#xff0c;抽…

面向對象Plus(2/2)

目錄 面向對象Plus(qianwen) 一.面向對象三大特性 封裝 繼承 多態 二.多態 1.了解多態 2.體驗多態 三.類屬性和實例屬性 1.類屬性 a.設置和訪問類屬性 類屬性的優點 b.修改類屬性 四.類方法和靜態方法 1.類方法 a.類方法特點 b.類方法應用場景 2.靜態方法 a…

MocapApi 中文文檔 和github下載地址 NeuronDataReader(以下簡稱 NDR)的下一代編程接口

以下是 MocapApi 技術文檔 github https://github.com/pnmocap/MocapApi?tabreadme-ov-file 國內可以查找getcode 英文文檔 https://mocap-api.noitom.com/mocap_api_en.html 概述 MocapApi 是 NeuronDataReader&#xff08;以下簡稱 NDR&#xff09;的下一代編程接口&…