UniApp相关知识点整理
📅 2026/7/4 9:01:45
👁️ 阅读次数
📝 编程学习
一、基础概念
1. UniApp 是什么?和 Vue/小程序有何区别?
- 答案:
UniApp 是基于 Vue.js 的跨平台框架,一套代码可编译到 iOS、Android、H5、小程序等平台。- 与 Vue 区别:UniApp 使用 Vue 的语法,但组件和 API 更接近小程序(如
<view>替代<div>)。 - 与小程序区别:UniApp 支持多平台编译,而小程序只能运行在微信环境。
- 与 Vue 区别:UniApp 使用 Vue 的语法,但组件和 API 更接近小程序(如
2. UniApp 的优缺点?
- 优点:
- 跨平台:一次开发,多端发布。
- 学习成本低:Vue 语法 + 小程序组件,对前端友好。
- 性能较好:通过原生渲染接近原生 App 体验。
- 缺点:
- 生态限制:部分原生功能需依赖插件或条件编译。
- 调试复杂:不同平台需单独适配。
二、核心机制
3. UniApp 的生命周期有哪些?
- 应用生命周期(在
App.vue中监听):onLaunch:应用初始化(只触发一次)。onShow:应用显示(如从后台切换到前台)。onHide:应用隐藏(如切换到后台)。
- 页面生命周期(在页面中监听):
onLoad:页面加载(接收路由参数)。onShow:页面显示。onReady:页面初次渲染完成。
- 组件生命周期:与 Vue 一致(
created、mounted等)。
4. UniApp 的跨平台原理?
- 核心:将 Vue 模板编译为各平台原生组件(如微信小程序的 WXML)。
- 条件编译:通过
#ifdef和#endif区分平台代码,例如:// 仅 H5 平台生效#ifdefH5console.log('这是 H5 平台');#endif
三、开发技巧
5. 如何实现页面跳转和传参?
- 跳转方式:
uni.navigateTo:保留当前页跳转(可返回)。uni.redirectTo:关闭当前页跳转。uni.switchTab:跳转至 TabBar 页面。
- 传参示例:
// 跳转传参uni.navigateTo({url:'/pages/detail?id=123'});// 接收参数(在目标页面的 onLoad 中)onLoad(options){console.log(options.id);// 输出 123}
6. 如何处理网络请求和跨域?
- 请求方法:使用
uni.request,支持 Promise 封装:uni.request({url:'https://api.example.com/data',success:(res)=>{console.log(res.data);}}); - 跨域解决:
- 开发阶段:配置
vue.config.js代理。 - 生产环境:服务端配置 CORS 或使用云函数。
- 开发阶段:配置
四、数据管理
7. 如何实现数据缓存?
- 同步存储:
uni.setStorageSync('key','value');// 存constvalue=uni.getStorageSync('key');// 取 - 异步存储:
uni.setStorage({key:'key',data:'value'});// 存uni.getStorage({key:'key',success:(res)=>{}});// 取
8. 如何使用 Vuex 管理全局状态?
- 步骤:
- 安装 Vuex,创建
store目录。 - 定义状态和 mutations:
conststore=newVuex.Store({state:{count:0},mutations:{increment(state){state.count++}}}); - 在组件中调用:
this.$store.commit('increment');console.log(this.$store.state.count);
- 安装 Vuex,创建
五、性能优化
9. 如何优化 UniApp 应用的性能?
- 减少渲染压力:
- 使用
v-if替代v-show控制显隐。 - 列表渲染时添加唯一
key。
- 使用
- 资源优化:
- 图片懒加载:使用
uni-lazy-load组件。 - 代码分包:减少主包体积,加快加载速度。
- 图片懒加载:使用
- 缓存策略:
- 频繁访问的数据使用本地缓存(如
uni.setStorageSync)。
- 频繁访问的数据使用本地缓存(如
六、高频进阶问题
10. 如何处理不同平台的样式差异?
- 使用
upx/rpx单位:根据屏幕宽度自适应(750rpx = 屏幕宽度)。 - 条件编译样式:
/* 仅在小程序生效 */#ifdef MP-WEIXIN .header{color:red;}#endif
11. 如何调用原生功能(如摄像头)?
- 使用 UniApp API:
// 调用摄像头uni.chooseImage({success:(res)=>{console.log(res.tempFilePaths);}}); - 原生插件:通过插件市场集成(如支付、地图)。
总结
以上问题覆盖了 UniApp 的核心知识点,建议结合官方文档和实际项目加深理解。如需更完整题目,可参考:CSDN-UniApp面试题 或 掘金-UniApp面试题汇总。
编程学习
技术分享
实战经验