自定义一个 uniapp 页面模板

简介: 自定义一个 uniapp 页面模板

8c86dee92a373e87bb77aa0f1dc2b2c.png

前言

使用 uniapp 开发项目时,有时候需要根据自己项目的需要自定义自己的页面模板,通常会包含一个统一的根页面组件,以方便保持全局样式的一致,更利于兼容处理,项目维护

全局引入页面组件

uniapp支持配置方式全局引入组件,也支持使用 vue 传统的组件注册方式,本编主要讲下官方配置方式引入应该如何配置

创建组件目录

这里我创建一个common目录来存放全局使用的组件

common
└── sf-page
    └── sf-page.vue
复制代码

这里需要注意文件的命名,组件目录与组件名称保持一致

修改配置文件

修改 pages.json,这里使用 sf- 作为自定义组件前缀

{
    "easycom": {
        "autoscan": true,
        "custom": {
            // uni-ui 规则如下配置
            "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue",
            "^sf-(.*)": "@/common/sf-$1/sf-$1.vue"
        }
    }
}
复制代码

最好此时重启下项目,就可以直接在项目中使用注册的组件标签了

<template>
  <sf-page>
    // ...
  </sf-page>
</template>
复制代码

页面组件开发

需求

自定义的页面组件,需要满足我们一下功能配置

  • 可配置化控制 header / body / footer 三块区域
  • 支持主题配置

开发

  • 页面结构划分与主题样式配置

关于主题可参考该篇 juejin.cn/post/717471…

<template>
  <view class="sf-page" :class="theme">
    <!-- 页面头部 -->
    <view v-if="customHeader" class="">
      <slot name="header"></slot>
    </view>
    <!-- 页面主体 -->
    <view class="">
      <slot name="body"></slot>
    </view>
    <!-- 页面底部 -->
    <view v-if="customFooter" class="">
      <slot name="footer"></slot>
    </view>
  </view>
</template>
<script setup>
import { computed } from "vue";
const props = defineProps({
    customHeader: {
    type: Boolean,
    default: false
  },
    customFooter: {
    type: Boolean,
    default: false
  },
})
const theme = computed(() => {
  return uni.$theme.get()
})
</script>
<style>
</style>
复制代码

组件使用

<template>
  <sf-page :customHeader="false" :customFooter="false">
    <template v-slot:header></template>
    <template v-slot:body>
      <view class="theme-bg">
        <text>测试</text>
      </view>
    </template>
    <template v-slot:footer></template>
  </sf-page>
</template>
复制代码

自定义模板

配置模板文件是为了我们使用 uniapp 的新建页面时,可以使用我们想要的页面模板进行初始化

编辑模板文件

<template>
  <sf-page :customHeader="false" :customFooter="false">
    <template v-slot:header></template>
    <template v-slot:body>
    </template>
    <template v-slot:footer></template>
  </sf-page>
</template>
<script setup>
</script>
<style lang="scss">
</style>
复制代码

设置自定义模板

hbuilder 项目中右键新建页面,点击自定义模板

2420d3b4bd90173933af375f39d01c4.png

点击后会打开文件目录,将模板文件复制到该目录下,下次新建页面时就可以看到我们的自定义模板了

e903da914426a0e8891ecda073e2846.png

再次新建页面

499fd0e269ff54c0d2bdebeb861c2f7.png

好了,到此我们就已经把自定义 uniapp 页面模板的配置弄好啦

相关文章
|
7月前
|
JavaScript 数据安全/隐私保护 UED
UniApp 中的路由魔法:玩转页面导航与跳转
UniApp 中的路由魔法:玩转页面导航与跳转
1653 3
|
7月前
uniapp的form表单自定义验证规则
uniapp的form表单自定义验证规则
293 0
|
2月前
|
数据可视化 API
低代码可视化-uniapp购物车页面-代码生成器
低代码可视化-uniapp购物车页面-代码生成器
66 1
|
2月前
|
数据可视化 搜索推荐
重磅更新-UniApp自定义字体可视化设计
重磅更新-UniApp自定义字体可视化设计
57 0
|
5月前
|
移动开发 前端开发 小程序
uniapp内置组件uni.navigateTo跳转后页面空白问题解决
【7月更文挑战第1天】uniapp内置组件uni.navigateTo跳转后页面空白问题解决
159 4
|
5月前
|
小程序 UED
uniapp 添加分包页面,配置分包预下载
uniapp 添加分包页面,配置分包预下载
110 2
|
5月前
|
安全
uniapp实战 —— 自定义顶部导航栏
uniapp实战 —— 自定义顶部导航栏
215 2
|
5月前
uniapp实战 —— 轮播图【自定义指示点】(含组件封装,自动注册全局组件,添加全局组件类型声明)
uniapp实战 —— 轮播图【自定义指示点】(含组件封装,自动注册全局组件,添加全局组件类型声明)
347 1
|
5月前
uniapp 添加自定义图标
uniapp 添加自定义图标
201 0
|
5月前
|
前端开发 JavaScript 索引
uniapp的u-album组件自定义删除功能
这样,你就可以在u-album组件中实现自定义的删除功能了。需要注意的是,这个删除操作只是在前端删除了图片项,并没有在后端删除对应的图片文件,如果你需要在后端也删除对应的图片文件,你还需要在删除操作后发送一个请求到后端,让后端删除对应的图片文件。
128 0

相关实验场景

更多