uniapp項目實踐之全局公共組件樣式及方法使用示例詳解
uniapp 項目實踐全局公共組件和樣式及方法的使用
上一篇講解了如何創(chuàng)建一個新的 uniapp 項目,這篇來講解以下如何注冊和使用全局的公共組件,全局樣式和全局方法。
目錄結(jié)構(gòu)
創(chuàng)建好項目以后,可以先初始化一下目錄,下面是我自己的習慣。
┌─components ├─hybrid │ ├─html │ │ └─error.html │ └─q-icon │ └─q-icon.vue ├─pages │ └─index │ └─index.vue ├─static │ ├─fonts │ │ └─iconfont.css │ └─image │ └─logo.png ├─scripts │ └─http.js │ └─index.js │ └─urls.js │ └─utils.js ├─styles │ └─extend.scss │ └─global.scss │ └─mixin.scss │ └─reset.scss │ └─variable.scss ├─App.vue ├─favicon.ico ├─index.html ├─main.js ├─manifest.json ├─pages.json ├─uni.promisify.adaptor.js └─uni.scss
下面是官方給出的目錄結(jié)構(gòu)規(guī)范。
┌─uniCloud 云空間目錄,阿里云為uniCloud-aliyun,騰訊云為uniCloud-tcb(詳見uniCloud) │─components 符合vue組件規(guī)范的uni-app組件目錄 │ └─comp-a.vue 可復(fù)用的a組件 ├─utssdk 存放uts文件 ├─pages 業(yè)務(wù)頁面文件存放的目錄 │ ├─index │ │ └─index.vue index頁面 │ └─list │ └─list.vue list頁面 ├─static 存放應(yīng)用引用的本地靜態(tài)資源(如圖片、視頻等)的目錄,注意:靜態(tài)資源只能存放于此 ├─uni_modules 存放[uni_module](/uni_modules)。 ├─platforms 存放各平臺專用頁面的目錄,詳見 ├─nativeplugins App原生語言插件 詳見 ├─nativeResources App端原生資源目錄 │ ├─android Android原生資源目錄 詳見 | └─ios iOS原生資源目錄 詳見 ├─hybrid App端存放本地html文件的目錄,詳見 ├─wxcomponents 存放小程序組件的目錄,詳見 ├─unpackage 非工程代碼,一般存放運行或發(fā)行的編譯結(jié)果 ├─AndroidManifest.xml Android原生應(yīng)用清單文件 詳見 ├─Info.plist iOS原生應(yīng)用配置文件 詳見 ├─main.js Vue初始化入口文件 ├─App.vue 應(yīng)用配置,用來配置App全局樣式以及監(jiān)聽 應(yīng)用生命周期 ├─manifest.json 配置應(yīng)用名稱、appid、logo、版本等打包信息,詳見 ├─pages.json 配置頁面路由、導(dǎo)航條、選項卡等頁面類信息,詳見 └─uni.scss 這里是uni-app內(nèi)置的常用樣式變量
公共組件
下面開始公共組件的編寫、注冊和使用。
編寫公共組件
在 uniapp 項目下是基于 vue 框架來寫頁面的,因此可以使用 vue 的相關(guān)知識點來新建公共組件。
在剛剛的目錄結(jié)構(gòu)下面,有一個components
文件夾,里面就是存放相關(guān)的全局公共組件。
我們就以全局公共圖標組件為例展示一下,可以采用{作者名稱}-${組件名稱}
命名文件夾,{作者名稱}-${組件名稱}.vue
來命名組件。
- 新建文件夾
q-icon
; - 在
q-icon
文件夾下面新建q-icon.vue
組件; - 開始編寫組件內(nèi)容;
tips:關(guān)于圖標,可以到iconfont里面找到一些你喜歡的圖標加入到購物車然后添加到自己的項目里面,最后下載下來放入/static/fonts/iconfont.css
里面即可。
下面這部分是模板內(nèi)容,里面有圖標名稱,大小和顏色的綁定。
<template> <view class="q-icon"> <text :class="{ demo: true, [`demo-${name}`]: true }" :style="{ fontSize: size * 2 + 'rpx', color: color }" > </text> </view> </template>
下面這部分是方法,里面有父組件傳遞的消息參數(shù)和格式定義以及默認值。
<script setup name="qIcon"> const props = defineProps({ // 名稱 name: { type: String, default: "home", }, // 大小 size: { type: Number, default: 16, }, // 顏色 color: { type: String, default: "#333", }, }); </script>
下面這部分是組件的樣式,可以引入剛剛在 iconfont 下載的文件。
<style scoped> @import "/static/fonts/iconfont.css"; .q-icon { padding: 10rpx; } </style>
注冊公共組件
- 引入到
main.js
文件進行注冊;
在main.js
文件進行一下引入。
import qIcon from "./components/q-icon/q-icon.vue"; app.component("q-icon", qIcon);
- 使用
easycom
方法進行注冊;
"easycom": { "autoscan": true, "custom": { "^q-(.*)": "@/components/q-$1/q-$1.vue" } }
- 自動注冊,發(fā)現(xiàn)不用以上方法,也可以直接使用,只要是在
components
文件夾里面并且符合官方規(guī)范就可;
使用公共組件
完成以上兩步以后就可以使用公共組件了。
打開/pages/index/index.vue
,在template
里面寫入以下內(nèi)容。
<q-icon name="user" :size="20" color="#333" />
公共樣式
編寫公共樣式可以減少我們樣式的重復(fù)冗余,提高頁面渲染效率和頁面編寫速度,下面就是編寫、注冊和使用的方法。
編寫公共樣式
在剛剛的目錄styles
下面,已經(jīng)提前創(chuàng)建好了一些樣式文件。
下面就做一個剛剛圖標公共樣式的示例。
- 在
variable.scss
里面加入一個顏色變量$iconBgColor: #666;
; - 在
global.scss
里面寫一個樣式;
// 圖標 .block-icon { border: 2rpx solid $iconBgColor; }
注冊公共樣式
- 可以在
main.js
里面引入之前寫好的全局文件;
import "./styles/global.scss";
- 可以在
App.vue
里面引入;
<style lang="scss"> /*每個頁面公共css */ @import "./styles/global.scss"; </style>
使用公共樣式
例如:在/pages/index/index.vue
里面使用公共樣式。
<view class="block-icon"> Uniapp </view>
公共方法
以下是公共方法的編寫、注冊和使用的方法。
編寫公共方法
這次以一個簡單的求和函數(shù)方法為例。
在scripts
文件夾里面的utils.js
里面寫入一個方法。
// 通用方法 // 求和方法 const sum = (a, b) => a + b; const utils = { sum, }; export default utils;
注冊公共方法
- 引入到
/scripts/index.js
;
// 公共方法 import utils from "./utils.js"; const apis = { utils, }; export default apis;
- 引入到
main.js
;
import apis from "./scripts/index.js"; // vue2 Vue.prototype.$apis = apis; // vue3 app.config.globalProperties.$apis = apis;
使用公共方法
在/pages/index/index.vue
調(diào)用方法。
- 頁面部分
<view class="text-sum"> <input class="text-sum-ipt" type="text" v-model.number="sum.num1" placeholder="請輸入數(shù)字1" /> <text>+</text> <input class="text-sum-ipt" type="text" v-model.number="sum.num2" placeholder="請輸入數(shù)字2" /> <text>結(jié)果是:{{sum.result}}</text> </view> <button type="primary" @click="calcSum">求和</button>
- 樣式部分
.text-sum { display: flex; padding: 50rpx 0; text-align: center; .text-sum-ipt { margin: 0 20rpx; width: 100rpx; border: 1rpx solid $iptBorColor; } }
$iptBorColor
是我在uni.scss
里面加入的一個變量:
/* 首頁變量 */ $iptBorColor: #999;
- 方法部分
export default { data() { return { sum: { num1: 0, num2: 0, result: 0, }, }; }, methods: { calcSum() { this.sum.result = this.$apis.utils.sum(this.sum.num1, this.sum.num2); }, }, };
最后
看一下最后的成果展示。
以上就是全局注冊公共組件、樣式和方法的主要內(nèi)容,更多關(guān)于uniapp全局公共組件樣式的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS實現(xiàn)的檢驗身份證格式并輸出出生日期,年齡,性別,出生地示例
這篇文章主要介紹了JS實現(xiàn)的檢驗身份證格式并輸出出生日期,年齡,性別,出生地,涉及javascript字符串遍歷、運算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05javascript實現(xiàn)下班倒計時效果的方法(可桌面通知)
這篇文章主要介紹了javascript實現(xiàn)下班倒計時效果的方法,涉及javascript倒計時效果及桌面提示效果的實現(xiàn)技巧,具有一定參考借鑒價值2015-07-07Javascript通過overflow控制列表閉合與展開的方法
這篇文章主要介紹了Javascript通過overflow控制列表閉合與展開的方法,設(shè)計javascript動態(tài)操作頁面元素與樣式的相關(guān)技巧,需要的朋友可以參考下2015-05-05原生JavaScript實現(xiàn)模態(tài)框的示例代碼
這篇文章主要為大家詳細介紹了如何利用原生JavaScript封裝實現(xiàn)模態(tài)框效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06