【uniapp】结构

2023-10-29

uniapp 结构

  • .hbuilderx 运行到手机上有的调试相关
    • launch.json 配置了启动调试时相关设置
  • common 通用文件 比如 xxx.css 通用样式
  • components 组件
  • lib
    • api 接口
  • pages 页面
  • static 静态资源,图片图标(英文命名)
  • store 存储数据和管理数据方法的仓库
  • uni_modules 引用的 uni 组件(非必须)
  • unpackage 运行到手机上就会有的打包文件
  • App.vue 根组件,所有的页面都是在 App.vue 下进行切换的,是页面入口文件,可调用应用的生命周期函数,其下的 style 样式会应用到各个页面
  • index.html
  • main.js 项目的入口文件,在项目加载时候首先加载此文件,主要作用是初始化 vue 实例、定义全局组件、使用需要的插件
  • manifest.json 配置 app 的属性
  • pages.json 全局文件,配置页面,导航栏等
  • uni.scss 全局 scss 文件

1.1 pages.json

uniapp 官网 pages.json
uniapp 官网 app-plus

{
	"pages": [
		{
			"path": "pages/xxx/xxx",
			"style": {}
		},
	],
	"globalStyle": {}
}

常用配置项:

  • pages 设置页面路径及窗口表现

  • globalStyle 设置默认页面的窗口表现,以下配置可在 globalStyle 全局设,也可在 pagesstyle 单个页面设

    • "navigationStyle":"custom", 导航栏样式,custom 表示取消默认导航栏
    • "navigationBarTitleText": "xxx" 导航栏标题
    • "navigationBarTitleSize": "20rpx", 导航栏标题文字大小
    • "navigationBarTextStyle": "black", 导航栏标题颜色
    • "navigationBarBackgroundColor": "#FFFFFF" 导航栏背景颜色
    • "enablePullDownRefresh": false 是否开启下拉刷新
    • "disableScroll": true 整体页面不能上下滚动(只在 style 中有效,在 globalStyle 中无效)
    • "app-plus":{} 配置编译到 App 平台时的特定样式
      • "background": "transparent" 背景透明
      • "backgroundColor": "rgba(0,0,0,0)" 背景颜色
      • "scrollIndicator": false 滚动条,不显示
      • "animationType": "fade-in" 窗口显示动画,淡入
      • "animationDuration": 200 窗口显示动画持续时间
      • "softinputMode": "adjustResize" 软键盘弹出模式 adjustResize、adjustPan 关于软键盘弹出的逻辑说明
      • "popGesture": "none" 侧滑返回功能(iOS 上),“close”(启用侧滑返回)、“none”(禁用侧滑返回)
  • 安卓若要禁用侧滑返回,使用 onBackPress(event) 生命周期函数
    uni-app 自定义返回逻辑教程
    uniapp 关闭默认返回安卓和 ios

  • uniapp 修改 navigationBar 字体大小

1.2 uni_modules 文件夹

uni_modules 是 uni-app 的插件模块化规范,可直接使用也可自己开发插件

  • 使用时,在自己项目下新建 uni_modules 文件夹

  • 在插件市场查找插件,选择使用 HBuilderX 导入插件

  • 整个插件文件夹(如:uni-nav-bar 文件夹)就会出现在自己项目的 uni_modules 文件夹下

  • 之后无需 import , <uni-nav-bar></uni-nav-bar> 标签就能使用,因为该文件夹下自带 package.json 文件

  • 图标 uni-icons 图标名称可在这里查找

1.3 store 文件夹

uniapp 官网 项目结构
vuex 中 this. s t o r e . c o m m i t 和 t h i s . store.commit 和 this. store.committhis.store.dispatch 的用法

  • Store 就是提供一个仓库,Store 仓库里面放了很多对象。
    • state 就是数据源存放地,对应于一般 Vue 对象里面的 data
    • actions 和 mutations 对应于 methods
  • 在使用 Vuex 的时候通常会创建 Store 实例 new Vuex.store({state,getters,mutations,actions}) 有很多子模块的时候还会使用到 modules。
  • Store 类就是存储数据和管理数据方法的仓库,实现方式是将数据和方法已对象形式传入其实例中。要注意一个应用或是项目中只能存在一个 Store 实例
  • this.$store.dispatch()this.$store.commit() 方法:
    • 在 store 中注册了 mutation 和 action,在组件中用 dispatch 调用 action,然后 action 用 commit 调用 mutation。
    • 同:两个方法都是传值给 vuex 的 mutation 改变 state
    • 异:存取方式不同
      • this.$store.commit() 用来触发同步操作 commit => mutations
        • 存储:this.$store.commit('方法名',值)
        • 取值:this.$store.state.方法名
      • this.$store.dispatch() 用来触发异步操作 dispatch => actions
        • 存储:this.$store.dispatch('方法名',值)
        • 取值:this.$store.getters.方法名
        • 当操作行为中含有异步操作:比如向后台发送请求获取数据,就需要使用 action 的 dispatch 去完成了。其他使用 commit 即可。
// store 文件夹下 xxxSrv.js  	// xxx.vue 中调用 store,不用写 import
export default {
  state: {
    //       this.$store.state.xxx
    xxx: [],
    yyy: { name: x, xx: 1 },
  },
  getters: {
    //       this.$store.getters.xxx
    xxx,
  },
  // mutations 更改状态的唯一方法
  mutations: {
    //       this.$store.commit("xxxSrv/mfun", xxx);
    mfun(x) {},
  },
  actions: {
    // await this.$store.dispatch("xxxSrv/afun", xxx);
    async afun(x) {
      context.commit("mfun", xxx);
    },
  },
};

1.4 manifest.json

manifest.json 启动配置

{
    "name" : "xxx",
    "app-plus" : { /* 5+App特有相关 */
        "splashscreen" : {
            "alwaysShowBeforeRender" : false,  // 是否等待首页渲染完毕后再关闭启动界面
            "waiting" : true,  // 是否在程序启动界面显示等待圈或雪花
            "autoclose" : false,  // 是否自动关闭启动界面
            "delay" : 0
        },
        "modules" : {}, /* 模块配置 */
        "distribute" : { /* 应用发布信息 */
            "android" : { /* android打包配置 */
                "permissions" : [],
                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
            },
            "ios" : {}, /* ios打包配置 */
            "sdkConfigs" : { /* SDK配置 */
                "ad" : {}
            },
        }
    },
    "quickapp" : {}, /* 快应用特有相关 */
    "mp-weixin" : {}, /* 小程序特有相关 */
}

1.5 App.vue

<script>
  export default {
    onLaunch: function () {
      console.log("App Launch");
      plus.navigator.setFullscreen(true); // 撑满全屏
      plus.screen.lockOrientation("portrait"); // 锁定竖屏
      // 登录后
      plus.navigator.closeSplashscreen(); // 关闭加载页
    },
    onShow: function () {
      console.log("App Show");
    },
    onHide: function () {
      console.log("App Hide");
    },
  };
</script>

<style>
  /* 1. 每个页面公共css */
  @import "./common/uni.css";
</style>

<style lang="scss">
  /* 2. 如果引入scss,要加上 lang="scss" */
  @import "./common/base.scss";
</style>

uni-app 横屏设置

  • 锁定屏幕方向可取值:plus.screen.lockOrientation('portrait');
    • “portrait-primary”: 竖屏正方向;
    • “portrait-secondary”: 竖屏反方向,屏幕正方向按顺时针旋转 180°;
    • “landscape-primary”: 横屏正方向,屏幕正方向按顺时针旋转 90°;
    • “landscape-secondary”: 横屏方向,屏幕正方向按顺时针旋转 270°;
    • “portrait”: 竖屏正方向或反方向,根据设备重力感应器自动调整;
    • “landscape”: 横屏正方向或反方向,根据设备重力感应器自动调整;
  • App.vue 是 uni-app 的主组件,所有页面都是在 App.vue 下进行切换的,是页面入口文件。
  • App.vue 本身不是页面,这里不能编写视图元素,也就是没有<template>

1.6 main.js

import App from "./App"; // 引入了 App.vue

// #ifndef VUE3
import Vue from "vue"; // 引入了 Vue 库
Vue.config.productionTip = false;
App.mpType = "app";
const app = new Vue({
  // 创建了一个vue实例
  ...App,
});
app.$mount(); // 挂载 Vue 实例
//即
//app.$mount()
//Vue({...App}).$mount()

// #endif

// #ifdef VUE3
import { createSSRApp } from "vue";
export function createApp() {
  const app = createSSRApp(App);
  return {
    app,
  };
}
// #endif

// app.$mount()
// createSSRApp(App).$mount()

Vue3 中的应用是通过使用 createApp 函数来创建的,参数是根组件(例:HelloVueApp)

Vue.createApp({...}).mount('#hello-vue')
  • main.js 是 uni-app 的入口文件,主要作用是初始化 vue 实例、定义全局组件、使用需要的插件如 vuex。
  • 无法使用 vue-router,路由须在 pages.json 中进行配置。如果开发者坚持使用 vue-router,可以在插件市场找到转换插件。
  • 使用 Vue.use 引用插件,使用 Vue.prototype 添加全局变量,使用 Vue.component 注册全局组件。
  • nvue 暂不支持在 main.js 注册全局组件

1.7 pages 文件夹

<!-- pages/xxx/xxx.vue -->
<template> </template>

<script>
  import xxx from "@/xxx/xxx.js";
  import xxx from "yyy";
  import { xxx } from "yyy";
  export default {
    data() {
      return {
        name: "",
      };
    },
    computed: {},
    onReady() {},
    onLoad() {},
    watch: {},
    methods: {},
  };
</script>

<style></style>
  • <template></template> 中必须先有一层 <view></view>
<!-- 正确 -->
<template>
  <view> ... </view>
</template>

<!-- 错误 -->
<template>
  <view> ... </view>
  <view> ... </view>
</template>

1.7.1 watch 监听属性

uni-app watch 事件监听三种用法

  • 监听数据的变化: data(){ }...mapState({ }) 中定义的数据
watch: {
	nameList: {
		handler(item) {
		    console.log(item);  // 当 nameList 的值改变时,执行该语句
		},
		immediate: true, // 普通监听(可监听到第一次绑定的变化)
		deep: true       // 深度监听(可监听对象内属性变化)
	}
}

1.7.2 生命周期

uniapp 官网 应用生命周期

  • 页面生命周期: uni-app 提供
函数名 说明
onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为 Object (用于页面传参),参考示例
onShow 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
onReady 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
  • 组件生命周期: vue 提供

uni-app 组件支持的生命周期,与 vue 标准组件的生命周期相同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【uniapp】结构 的相关文章

随机推荐

  • 普通文件下载 + 前端获取后端返回的文件流并下载

    参考资料 前端接受后端文件流并下载的几种方法 ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践 ajax请求二进制流进行处理 ajax异步下载文件 response setHeader 的
  • JavaScript的学习笔记

    JavaScript的学习笔记 学习B站上狂神的视频记录的笔记 1比较运算符 console log 1 1 true 判断的时候值相等 类型不同也是true console log 1 1 false 值相等且类型相同 才为true 2严
  • arcgis 字段计算器 条件赋值_ARCGIS中字段计算器的使用说明

    Field Calculator 工具可以在属性表字段点击右键 选择 Field Calculator 或者Data Management Tools gt fields gt Calculate Field打开 1 基本函数 针对数值型
  • 谷歌开发者工具之功能面板

    Network 面板 用的最多的面板 可查看 Ajax 请求 页面访问时间线等等 Performance 面板 查看JS性能 详情可看我的另一篇文章 如何使用谷歌浏览器开发者工具中的Performance分析网页性能 Rendering 面
  • 华为OD机试 - 恢复数字序列(Python)

    题目描述 对于一个连续正整数组成的序列 可以将其拼接成一个字符串 再将字符串里的部分字符打乱顺序 如序列8 9 10 11 12 拼接成的字符串为89101112 打乱一部分字符后得到90811211 原来的正整数10就被拆成了0和1 现给
  • C#中List常用方法:判断存在、查找、排序

    项目常用List来进行数据操作管理 有一些方法经常百度 所以这里记录下 目录 1 List判断元素是否存在 返回bool 2 List查找 返回对象 3 List排序 4 对象属性打印 5 List 其他方法 1 List判断元素是否存在
  • 程序员的自我修养——链接,装载与库

    章节目录 静态链接 编译和链接 目标文件 静态链接 windows COFF 装载和动态链接 可执行文件的装载与进程 动态链接 Linux共享库的组织 Windows下的动态链接 库与运行库 内存 运行库 系统调用与API 运行库实现 一
  • 【C++入门】引用符&详解

    1 C 的 引用符介绍 1 符号在C语言中表示取地址运算 2 C 对 符号进行拓展 符号新增了引用的用法 3 声明引用时 必须同时对其进行初始化 4 引用声明完毕后 相当于目标变量有两个名称 引用名就相当于变量的别名 操作引号名就相当于操作
  • 【深度解析→博文总结】李宏毅机器学习2023作业02Classification(Framewise Phoneme Prediction)

    文章目录 系列文章 简要说明 视频分享 作业详情 调参记录 Simple Baseline 0 49798 Medium Baseline 0 66440 Stong Baseline 0 74944 Boss Baseline 0 830
  • html制作电影界面,电影网站界面设计HTML_CSS模板

    实例简介 简单生活 希望对大家有用 要觉得本资源有价值请分享给您的朋友 生活就是人来人往 分享越多 收获越多 作者 天天ASP家园 实例截图 核心代码 7c828d9e b4a1 48fc be7b 81a2137edae2 电影网站界面设
  • ​​​​​​​三个案例帮你彻底了解反馈电路中的相位补偿

    转自于http www elecfans com d 669847 html 三个案例帮你彻底了解反馈电路中的相位补偿 2004年 帮朋友做镍氢充电器 利用镍氢电池充满电时电压有一个微小的下降这个特点来识别是否已经充满 比如1 2V的镍氢电
  • 程序员戴耳机究竟在听什么,看完真相,我惊了!

    今天 某妹子突然凑到我的耳边轻声说说 我们公司的程序员 清一色的戴着耳机 你说他们是不是故意不想听我们提的需求 我很方 因为我也喜欢戴耳机 思考ing 思考了一秒钟后 一本正经的和妹子说 你这么漂亮 怎么会呢 戴耳机可能只是他们的习惯罢了
  • String详解

    String类的理解 什么是String类 String类实现了Serializable接口 对象可以被序列化 序列化之后 对象可以进行网络传输 或者持久化 String类实现的Comparable接口 对象可以比较大小 String类实现
  • GoLang之搭建Web服务器

    2014 02 05 wcdj 0 摘要 之前总结过如何使用Perl搭建Web服务 Web服务器的实现 最小的Perl Web服务器 本文介绍如何使用GoLang搭建Web服务 Go语言提供了一个完善的net http包 通过这个http包
  • 将yolov3.pth转换为onnx并进行推理

    前言 最近训练了一个yolov3检测模型 需要将保存好的 pth文件转换为onnx并且写一个inference过程 于是学习了一下onnx的知识并记录下来 用到的工具 onnx 安装方法 pip install onnx onnxrunti
  • DVI-A、DVI-D、DVI-I接口定义、DVI接口图和DVI接口标准介绍

    dvi接口义 DVI接口图片 DVI接口标准介绍 dvi hdmi接口定义 DVI 的定义 DVI A 就是与 VGA 规范一样的 包括 RGBHV 信号线的模拟接口 RGB 是什么不用赘述了吧 HV 分别是水平 和 垂直 扫描的 行同步
  • springboot集成log4j日志

    一 新建log4j properties配置文件 配置内容如下 log4j rootLogger CONSOLE info error DEBUGlog4j rootLogger info error CONSOLE DEBUGlog4j
  • 端口扫描

    常见的扫描类型有以下几种 秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术 它通常用于在通过普通的防火墙或路由器的筛选 filtering 时隐藏自己 秘密扫描能躲避IDS 防火墙 包过滤器和日志审计 从而获取目标端口的开放或关闭的信息
  • 终结 Java 空指针异常!优雅方案解析与案例演示

    目录 引言 产生原因 优雅解析 代码示例 优雅解决方案一 条件判断 优雅解决方案二 断言与异常处理 优雅解决方案三 使用 Objects 类的 requireNonNull 方法 优雅解决方案三 Optional 类的妙用 总结 引言 Nu
  • 【uniapp】结构

    目录 uniapp 结构 1 1 pages json 1 2 uni modules 文件夹 1 3 store 文件夹 1 4 manifest json 1 5 App vue 1 6 main js 1 7 pages 文件夹 1