uni-app 系统学习,从入门到实战(二)—— 项目结构解析
全篇大概 2000 字(含代码),建议阅读时间 10min
一、UniApp 目录结构详解
UniApp 基于 Vue.js 开发,其目录结构遵循约定大于配置的原则,以下是一个标准项目的核心目录结构:

pages # 页面目录(核心)
index # 首页
index.vue # 页面组件
index.scss # 页面样式
static # 静态资源(图片、字体等)
components # 自定义组件
uni_modules # 插件市场安装的模块
common # 公共工具(JS、CSS)
App.vue # 应用入口组件
main.js # 应用入口脚本
pages.json # 全局页面配置(核心)
manifest.json # 应用发布配置(核心)
uni.scss # 全局样式变量
1.1 核心目录说明
-
pages 目录
-
每个子目录对应一个页面,必须包含
.vue文件。 -
页面路径需在
pages.json中注册后才能访问。
-
-
static 目录
-
存放静态资源(如图片、字体),通过绝对路径
/static/logo.png引用。 -
打包时会直接复制到输出目录,不建议存放大型文件。
-
-
components 目录
-
存放全局复用组件,通过
@/components/xxx.vue引入。
-
二、pages.json:页面路由与全局样式配置
pages.json 是 UniApp 的核心配置文件,负责管理页面路由、导航栏样式、底部 TabBar 等全局设置。
2.1 基本结构示例
{"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","enablePullDownRefresh": true}}],"globalStyle": {"navigationBarTextStyle": "black","navigationBarBackgroundColor": "#FFFFFF"},"tabBar": {"list": [{"pagePath": "pages/index/index","text": "首页"}]}
}
2.2 核心配置项解析
pages 数组
path: 页面路径(相对于项目根目录)
style: 页面独有样式配置(覆盖全局配置)globalStyle
全局导航栏、背景色、下拉刷新等样式配置。
tabBar
底部导航栏配置,最多支持 5 个 Tab。
2.3 最佳实践
-
使用
condition字段实现动态路由(如根据用户权限显示不同页面)。 -
通过
easycom配置自动引入组件,避免手动注册。
三、manifest.json:应用发布与多端适配
manifest.json 是应用的发布配置文件,用于配置应用名称、图标、启动页、权限等平台相关设置。
3.1 基本结构示例
{"name": "MyApp","appid": "__UNI__XXXXXX","versionName": "1.0.0","mp-weixin": {"appid": "wx1234567890","permission": {"scope.userLocation": {"desc": "需要获取您的位置信息"}}},"h5": {"title": "My H5 App","router": {"mode": "history"}}
}
3.2 多平台配置策略
-
公共配置:
name,versionName,appid等全局生效。 -
平台专属配置:如
mp-weixin(微信小程序)、h5、app(原生 App)等节点。
3.3 关键配置项
-
图标与启动页
"icons": {"android": "/static/logo.png","ios": "/static/logo.png" }, "splashscreen": {"alwaysShowBeforeRender": false } -
权限声明(微信小程序)
"mp-weixin": {"permission": {"scope.userLocation": {"desc": "获取位置用于导航功能"}} }
四、开发与发布流程优化
-
环境区分
-
通过
process.env.NODE_ENV区分开发与生产环境。 -
在
manifest.json中配置不同环境的 API 地址。
-
-
性能优化
使用分包加载减少首屏体积:
// pages.json
"subPackages": [{"root": "subpages","pages": [ ... ]}
]
-
多平台发布
-
通过
HBuilderX的 发行菜单 一键生成各平台代码包。 -
针对不同平台调整
manifest.json中的配置(如微信小程序的appid)。
-
五、常见问题与解决方案
-
页面白屏
-
检查
pages.json中的路径是否正确。 -
确保页面组件包含
<template>,<script>,<style>标签。
-
-
静态资源加载失败
-
使用绝对路径
/static/...,避免相对路径。 -
检查文件是否被正确复制到
dist目录。
-
-
跨平台样式兼容
-
使用
uni.scss定义全局样式变量。 -
通过条件编译实现平台差异化样式:
-
/* #ifdef H5 */
.header { height: 44px; }
/* #endif */
总结
掌握 UniApp 的目录结构与核心配置文件(pages.json 和 manifest.json)是开发跨平台应用的关键。通过合理配置,可以实现:
-
高效路由管理
-
多平台差异化适配
-
一键打包发布
相关文章:
uni-app 系统学习,从入门到实战(二)—— 项目结构解析
全篇大概 2000 字(含代码),建议阅读时间 10min 一、UniApp 目录结构详解 UniApp 基于 Vue.js 开发,其目录结构遵循约定大于配置的原则,以下是一个标准项目的核心目录结构: pages # 页面目录(核…...
滴水逆向_引用_友元函数_运算符重载
作业: 运算符号重载实现。 struct Person { public:int x;int y; public:Person(){this->x 10;this->y 20;}Person(int x, int y){this->x x;this->y y;}//申明友元函数void Printf(const Person& p){printf("%d %d",p.x,p.y);}/…...
java医院多维度综合绩效考核源码,医院绩效管理系统,支持一键核算和批量操作,设有审核机制,允许数据修正
医院绩效考核管理系统,java医院绩效核算系统源码,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求,对考核方案中各维度进行灵活配置,对各维…...
科普:HTTP端口80和HTTPS端口443
你会发现,有的网址不带端口号,怎么回事? HTTP协议默认端口:HTTP协议的默认端口是80。当用户在浏览器中输入一个没有指定端口的以http://开头的网址时,浏览器会自动使用80端口与服务器建立连接,进行超文本数…...
uniapp打包生产证书上架IOS全流程
第一步:生成生产证书 上传CSR文件,windows系统电脑无法上传csr文件可以参考这个: windows下创建ios打包证书的详细流程_香蕉云编 下载生产证书 下载下来的cer生产证书在香蕉云编cer文件上传栏上传,然后生成p12文件 生成p12文件…...
山东大学软件学院nosql实验一环境配置
环境:前端vue后端springboot 软件环境: MongoDB MongoDBCompass 实验步骤与内容: 在官网下载安装包(最新版) 配置环境环境变量 在“高级系统设置-环境变量”中,可以将MongoDB添加到环境变量Path中(D:\…...
【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?
前言: Hello大家好,我是Dream。不知不觉2024年已经过去,自己也马上迈入23岁,感慨时间飞快,从19岁刚入大学加入CSDN,到现在大学毕业已经整整四年了。CSDN陪伴我走过了最青涩的四年大学时光,在这里…...
【Windows 同时安装 MySQL5 和 MySQL8 - 详细图文教程】
目录 建议 8.0的版本用图形化工具安装 0.下载 1.安装 2.配置环境变量 1. 下载 mysql8.0 和 mysql5.7的压缩包 2. 解压到本地 3. 安装MySQL8.xx.xx 第一步 配置环境变量 第二步 新建配置文件 第三步 MySQL 数据库初始化 第四步 临时密码 第五步 安装并开启mysql80服…...
[Python学习日记-83] 操作系统的介绍
[Python学习日记-83] 操作系统的介绍 简介 操作系统介绍 简介 本篇开始我们要学习网络编程的进阶知识,即并发编程(多进程编程),从字面意思可以看出,进程就是正在执行的一个过程,也就是说进程是对正在运行…...
软考——WWW与HTTP
1.万维网(world wide web) 是一个规模巨大的、可以资源互联的资料空间。由URL进行定位,通过HTTP协议传送给使用者,又由HTML来进行文件的展现。 它的主要组成部分是:URL、HTTP、HTML。 (1)URL…...
算法-数据结构-图-邻接表构建
邻接表的基本概念 顶点(Vertex): 图中的每个顶点用一个节点表示。 每个顶点存储一个链表或数组,用于记录与该顶点直接相连的其他顶点。 边(Edge): 如果顶点 A 和顶点 B 之间有一条边…...
Docker(Nginx)部署Vue
简介:目标使用docker将vue生成的dist文件,结合nginx生成镜像,然后运行; 1、首选确保vue项目正确运行,并能正确打包dist文件; 2、查看已经生成的dist文件 3、将dist文件打包为rar文件或者zip文件…...
ubuntu22.04的docker容器中安装ssh服务
ubuntu22.04的docker容器中安装ssh服务,以便外部可以连接到容器中操作。 rootnode15:~# cat /etc/issue Ubuntu 22.04.5 LTS \n \l rootnode15:~# docker ps|grep qwen 7d3c36c37d36 vllm/vllm-openai:v0.7.3 "python3 -m …...
卷积这个词在卷积神经网络中应该怎么理解
卷积的定义 数学概念: 在数学上,卷积是一种操作,通常用于两个函数之间的运算。对于图像处理而言,这些函数通常是输入图像和一个称为“卷积核”或“滤波器”的小矩阵。 在CNN中的应用: 卷积操作是通过滑动窗口…...
设计模式教程:迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)是设计模式中的一种行为型模式,它允许顺序访问一个集合对象中的元素,而无需暴露集合对象的内部结构。换句话说,迭代器模式提供了一个方法,能让你遍历集合中的元素,…...
C语言学习【1】C语言关于寄存器的封装
目录 1.封装寄存的C语言的语法volatile:unsigned int:*pGpiobOdrvolatile unsigned int * 2.进一步C语言的封装 在嵌入式中,底层一定是操作寄存器,我有一个理念,凡事一定要想清楚,把任何知识点融入自己的理解之中&…...
鸿蒙app 开发中的 == 和 === 的区别
在鸿蒙 App 开发中,如果你使用 JavaScript 或 TypeScript 进行编码, 和 是用于比较值的运算符,它们的主要区别在于比较的严格程度,下面为你详细介绍: 1. (宽松相等运算符) 比较规则࿱…...
【算法】冒泡排序
目录 一、算法概述 二、算法原理 1. 核心思想 2. 排序过程演示 三、标准实现代码 四、时间复杂度分析 五、优化策略 1. 提前终止优化 2. 记录最后交换位置 六、算法特性 七、实际应用 八、扩展思考 九、总结 一、算法概述 冒泡排序(Bubble Sort࿰…...
R Excel 文件:高效数据处理的利器
R Excel 文件:高效数据处理的利器 在数据分析领域,R语言因其强大的统计分析和可视化功能而备受推崇。而R Excel文件,作为R语言与Excel的桥梁,使得数据在R和Excel之间的高效转换成为可能。本文将详细介绍R Excel文件的概念、应用场景以及操作方法。 一、R Excel文件的概念…...
数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表
一. 使用工具和命令 1.1 使用的工具 Navicat Premium 17 :“Navicat”是一套可创建多个连接的数据库管理工具。 MySQL版本8.0.39 。 1.2 使用的命令 Navicat中使用的命令 命令 命令解释 SHOW DATABASES; 展示所有的数据库 CREATE DATABASE 数据…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
