uni-app 系统学习,从入门到实战(二)—— 项目结构解析

news/2025/2/26 0:16:53/

全篇大概 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 核心目录说明
  1. pages 目录

    • 每个子目录对应一个页面,必须包含 .vue 文件。

    • 页面路径需在 pages.json 中注册后才能访问。

  2. static 目录

    • 存放静态资源(如图片、字体),通过绝对路径 /static/logo.png 引用。

    • 打包时会直接复制到输出目录,不建议存放大型文件

  3. 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 多平台配置策略
  • 公共配置nameversionNameappid 等全局生效。

  • 平台专属配置:如 mp-weixin(微信小程序)、h5app(原生 App)等节点。

3.3 关键配置项
  • 图标与启动页

    "icons": {"android": "/static/logo.png","ios": "/static/logo.png"
    },
    "splashscreen": {"alwaysShowBeforeRender": false
    }
  • 权限声明(微信小程序)

    "mp-weixin": {"permission": {"scope.userLocation": {"desc": "获取位置用于导航功能"}}
    }
     

四、开发与发布流程优化

  1. 环境区分

    • 通过 process.env.NODE_ENV 区分开发与生产环境。

    • 在 manifest.json 中配置不同环境的 API 地址。

  2. 性能优化

    使用 分包加载 减少首屏体积:
// pages.json
"subPackages": [{"root": "subpages","pages": [ ... ]}
]
  1. 多平台发布

    • 通过 HBuilderX 的 发行菜单 一键生成各平台代码包。

    • 针对不同平台调整 manifest.json 中的配置(如微信小程序的 appid)。


五、常见问题与解决方案

  1. 页面白屏

    • 检查 pages.json 中的路径是否正确。

    • 确保页面组件包含 <template><script><style> 标签。

  2. 静态资源加载失败

    • 使用绝对路径 /static/...,避免相对路径。

    • 检查文件是否被正确复制到 dist 目录。

  3. 跨平台样式兼容

    • 使用 uni.scss 定义全局样式变量。

    • 通过条件编译实现平台差异化样式:

/* #ifdef H5 */
.header { height: 44px; }
/* #endif */

总结

掌握 UniApp 的目录结构与核心配置文件(pages.json 和 manifest.json)是开发跨平台应用的关键。通过合理配置,可以实现:

  • 高效路由管理

  • 多平台差异化适配

  • 一键打包发布


http://www.ppmy.cn/news/1574923.html

相关文章

Spring Boot日志配置与环境切换实战

在实际的项目开发中&#xff0c;我们常常需要根据不同的运行环境&#xff08;如开发环境、测试环境和生产环境&#xff09;来调整日志的输出格式和级别。Spring Boot通过标签为我们提供了一种非常便捷的方式来实现基于环境的条件配置。本文将通过一个具体的实例&#xff0c;详细…

ArcGis for js 4.x实现测量,测距,高程的功能

文章目录 前言一、三维测量&#xff0c;测距&#xff0c;高程是什么&#xff1f;二、使用步骤1.引入库2.初始化Draw3.初始化图层4.测量距离功能5.测量面积5.测量高程 清理地图图层 前言 ArcGIS for JS广泛应用于需要在Web上展示和分析空间数据的各种场景中&#xff0c;包括教育…

Apache部署Vue操作手册

背景 本文介绍了如何在windows下使用apache web来部署前后端分离的应用&#xff08;若依&#xff09;。 1. 下载apache软件 下载地址&#xff1a;Apache VS17 binaries and modules download 下载时间很慢也可以在我这资源直接下载。 2. 将下载好的apache注册成服务 在cmd里以…

千字长文!最通俗易懂的Transformer模型架构详解!(图文并茂)

2017 年 Google 在论文《Attention Is All You Need》中提出 Transformer 模型架构&#xff0c;该架构是基于 Encoder-Decoder &#xff08;编码器-解码器&#xff09;的架构。作为当下最先进的深度学习架构之一&#xff0c;Transformer 被广泛应用于自然语言处理领域&#xff…

Github 2025-02-24 开源项目周报 Top15

根据Github Trendings的统计,本周(2025-02-24统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目5Jupyter Notebook项目1C++项目1Rust项目1HTML项目1JavaScript项目1Dify.AI: 开源的LLM应用程序开发平台 创建周期:…

TD时间差分算法

TD算法用来估计value-state 给定data/experiece of algorithm&#xff0c; TD算法&#xff1a; 其中TD error&#xff1a; δ t v ( s t ) − [ r t 1 γ v ( s t 1 ) ] v ( s t ) − v t ‾ \delta_t v(s_t) -[r_{t1} \gamma v(s_{t1})]v(s_t) - \overline{v_{t}} δ…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说&#xff0c;APP更新功能再常见不过了&#xff0c;因为平台更新审核时间较长&am…

云夹平台:一站式学习与生活效率工具

在数字化时代&#xff0c;高效管理知识、资源和日常事务成为现代人的核心需求。云夹平台正是这样一款集多功能于一体的智能工具&#xff0c;致力于为用户提供便捷、个性化的服务体验。无论你是学生、职场人士还是终身学习者&#xff0c;云夹都能成为你的得力助手。 1. 书签管理…