当前位置: 首页 > news >正文

uniapp学习【项目创建+项目结构解析】

1.项目创建

  1. 打开 HBuilderX,点击 “文件> 新建 > 项目”。

  2. 选择 “Uniapp 项目”,填写以下信息:

    • 项目名称:自定义(例:uniapp-miniprogram-demo)。

    • 目录:选择本地文件夹(建议新建一个专门的开发文件夹,避免路径含中文)。

    • 模板:选择 “默认模板(Vue3)”(务必选 Vue3,否则后续无法使用 Vue3 语法)。

    • 勾选 “启用 TypeScript”(可选,小白建议先不勾,用 JavaScript 更易上手)。

    • 勾选 “创建 git 仓库”(可选,用于版本管理)。

  3. 点击 “创建”,项目初始化完成(首次创建会自动下载依赖,需等待 1-2 分钟)。

  4. 项目创建完成后,点击 HBuilderX 工具栏的 “运行> 运行到小程序模拟器 > 微信开发者工具”。

  5. 此时会自动启动微信开发者工具,并加载项目(首次运行可能需要授权,点击 “允许” 即可)。

  6. 若微信开发者工具显示 “编译成功”,页面出现 Uniapp 默认的 “Hello World”,则项目运行成功。

2.项目结构解析

uniapp-miniprogram-demo/
├── pages/               # 页面文件夹(核心!所有页面放在这里)
│   └── index/           # 首页文件夹(每个页面一个单独文件夹)
│       ├── index.vue    # 首页组件(页面核心,含模板、逻辑、样式)
│       ├── index.json   # 首页配置(单独配置当前页面的导航栏、标题等)
│       ├── index.js     # 首页逻辑(若用JavaScript,可选,可合并到.vue文件)
│       └── index.wxss   # 首页样式(若需单独写微信小程序样式,可选)
├── static/              # 静态资源文件夹(存放图片、字体等,不会被编译)
├── components/          # 自定义组件文件夹(存放复用的组件,如弹窗、卡片)
├── utils/               # 工具函数文件夹(存放通用函数,如请求封装、日期格式化)
├── App.vue              # 全局根组件(控制全局样式、全局生命周期)
├── main.js              # 入口文件(初始化Vue实例、引入全局依赖)
├── pages.json           # 全局页面配置(核心!配置所有页面路径、全局导航栏、tabBar等)
├── manifest.json        # 应用配置(配置小程序AppID、名称、权限等)
└── uni.scss             # Uniapp全局样式文件(定义全局变量、混入等)

2.1 pages.json(全局页面配置)

{"pages": [// 页面路径配置:第一个页面为首页{"path": "pages/index/index",  // 页面路径(对应pages文件夹下的目录)"style": {"navigationBarTitleText": "首页",  // 当前页面导航栏标题"navigationBarBackgroundColor": "#ffffff",  // 导航栏背景色"navigationBarTextStyle": "black"  // 导航栏文字颜色(仅支持black/white)}},// 新增页面需在这里添加路径(例:详情页){"path": "pages/detail/detail","style": {"navigationBarTitleText": "详情页"}}],"globalStyle": {// 全局样式配置(所有页面默认继承)"navigationBarBackgroundColor": "#ffffff",  // 全局导航栏背景色"navigationBarTextStyle": "black",          // 全局导航栏文字颜色"backgroundColor": "#f5f5f5"               // 页面背景色},"tabBar": {// 底部tab栏配置(若小程序需要多tab页面,需配置此项)"color": "#666666",          // 未选中tab文字颜色"selectedColor": "#007aff",  // 选中tab文字颜色"backgroundColor": "#ffffff",// tab栏背景色"list": [// tab项配置(最少2项,最多5项){"pagePath": "pages/index/index",  // tab对应的页面路径"text": "首页",                   // tab文字"iconPath": "static/tab/home.png",// 未选中图标路径(建议尺寸:40x40px)"selectedIconPath": "static/tab/home-selected.png"// 选中图标路径},{"pagePath": "pages/my/my","text": "我的","iconPath": "static/tab/my.png","selectedIconPath": "static/tab/my-selected.png"}]}
}

2.2 manifest.json(应用配置)

关键配置:小程序 AppID(必须配置,否则无法真机调试和发布)。

  1. 打开manifest.json,点击 “微信小程序配置”。

  2. 填写 “AppID”:登录微信公众平台,进入 “开发> 开发设置”,复制 “小程序 AppID”(个人账号也可获取,测试号不可用于发布)。

  3. 其他配置(如小程序名称、描述)可根据需求填写。

2.3  App.vue(全局根组件)

控制全局样式和全局生命周期

<template><!-- 全局页面容器(所有页面都会嵌套在这个容器里) --><div id="app"><router-view />  <!-- 页面路由出口(Uniapp自动管理,无需修改) --></div>
</template><script setup>
// 全局生命周期钩子(Uniapp特有)
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'// 小程序初始化完成时触发(全局只触发一次)
onLaunch(() => {console.log('小程序初始化完成')
})// 小程序显示时触发(如从后台切到前台)
onShow(() => {console.log('小程序显示')
})// 小程序隐藏时触发(如切到后台)
onHide(() => {console.log('小程序隐藏')
})
</script><style>
/* 全局样式(所有页面都会继承) */
/* 注意:不要在App.vue中写scoped样式,否则不会生效 */
body {margin: 0;padding: 0;box-sizing: border-box;
}
</style>

2.4 页面组件(如 index.vue)

每个页面的核心文件,包含 “模板(Template)”“逻辑(Script)”“样式(Style)” 三部分

<template><!-- 模板:页面UI结构,只能有一个根节点(通常用view) --><view class="index-page"><text class="title">Hello Uniapp+Vue3!</text><button @click="handleClick">点击我</button></view>
</template><script setup>
// 逻辑:页面交互逻辑(Vue3 setup语法糖,无需写export default)
// 1. 引入需要的API或组件(若有)
import { ref } from 'vue'// 2. 响应式数据(Vue3特有,ref用于基本类型,reactive用于对象/数组)
const count = ref(0)  // 定义响应式变量count,初始值0// 3. 事件处理函数
const handleClick = () => {count.value += 1  // 修改ref变量需用.valueuni.showToast({ title: `点击了${count.value}次` })  // Uniapp弹窗API
}// 4. 页面生命周期钩子(Uniapp页面特有,比Vue3生命周期更常用)
import { onLoad, onShow, onReady } from '@dcloudio/uni-app'// 页面加载时触发(只触发一次,可接收路由参数)
onLoad((options) => {console.log('页面加载,路由参数:', options)
})// 页面显示时触发(每次页面切换到前台都会触发)
onShow(() => {console.log('页面显示')
})// 页面初次渲染完成时触发(可操作DOM)
onReady(() => {console.log('页面渲染完成')
})
</script><style scoped>
/* 样式:页面样式,scoped表示样式只作用于当前页面(避免污染其他页面) */
.index-page {padding: 20rpx;  /* Uniapp推荐用rpx做单位(自适应不同屏幕),1rpx=0.5px */
}
.title {font-size: 32rpx;color: #333;margin-bottom: 30rpx;display: block;
}
button {background-color: #007aff;color: #fff;
}
</style>

http://www.dtcms.com/a/469890.html

相关文章:

  • 虚拟机所需的硬件功能在目标主机上不受支持或已禁用:*长模式:对于支持64位客户机操作系统而言是必需的。
  • Uniapp微信小程序开发:http请求封装。
  • 个人可以做商城网站吗合肥制作网站价格
  • 网站制作的前期主要是做好什么工作网站的构思
  • java每小时调动一次,生成任务,基于corn表达式动态调动任务执行
  • 网站模板兼容手机端市场推广是做什么的
  • 企业微信防封防投诉拦截系统:从痛点解决到技术实现
  • vue的组件通信
  • 掌握PINN:从理论到实战的神经网络进阶!!
  • wordpress thremeseo推广排名软件
  • 安平县哪里做网站建立公司网站视频
  • PostgreSql ALL 与 ANY 区别
  • 解决 husky > pre-commit hook failed (add --no-verify to bypass)
  • 模拟器抓包
  • (数据结构)线性表(下):链表分类及双向链表的实现
  • 阿里云短信服务配置说明
  • Java+SpringBoot+Dubbo+Nacos快速入门
  • 【开题答辩全过程】以 办公管理系统为例,包含答辩的问题和答案
  • 天创网站做网站 数据标准
  • 做除尘骨架的网站网页一般用什么语言编写
  • SciPy 常量模块
  • 记录一次在Win7系统中使用C#中的HttpWebRequest连接缓慢、超时等问题(httpclient和restsharp也存在同样的问题)
  • Spring Boot 3零基础教程,Spring Intializer,笔记05
  • spring boot 2.x 与 spring boot 3.x 及对应Tomcat、Jetty、Undertow版本的选择(理论)
  • 织梦 网站栏目管理 很慢国内免费域名申请
  • 建设企业网站的好处是什么门户网站建设的成果
  • 【BUG排查】基于RH850F1KMS1的主控出现系统中断错误,调试FEIC的值为0x11
  • C++变量命名详解
  • 2.c++面向对象(三)
  • 自动化测试系统Parasoft航空设备行业案例:减少75%的BUG