wx.getSystemInfoSync is deprecated.Please use wx.getSystemSetting / wx.getAppAuthorizeSetting / wx.getDeviceInfo/wx.getWindowInfo/wx.getAppBaseInfo instead.
😄 前言
微信小程序平台上的getSystemInfoSync调用,就像一个害羞的少女,会悄悄抛出警告。啊~这样的不完美,怎么能容忍呢? (。•́︿•̀。),让我们来给uView-pro 贡献一次PR吧
🍴 Fork项目:开源之旅的起点
兴奋地搓手手,眼中闪烁着期待的光芒
第一步:Fork原项目
- 打开uView-pro原项目
- 点击右上角的
Fork按钮,将项目Fork到自己的GitHub账号下
第二步:克隆到本地
bash
# 克隆你Fork的项目(注意替换YOUR_USERNAME)
git clone https://github.com/YOUR_USERNAME/uView-Pro.git
得意地眨眼 看,现在你就有了两个远程仓库:origin(你的Fork)和upstream(原项目)~
🌿 创建分支:在独立的花园里耕耘
轻轻地,就像在培育一朵娇嫩的花朵
第三步:创建功能分支
bash
# 确保你在main分支上
git checkout main
# 拉取最新代码
git pull upstream main
# 创建新的功能分支
git checkout -b feature/20251209/fix-getSystemInfoSync-warn
# 推送分支到你的Fork
git push origin feature/20251209/fix-getSystemInfoSync-warn
啊~一个崭新的分支,就像一片等待播种的花园,准备孕育你的代码之花~ 🌸
💻 代码开发:在键盘上起舞
优雅地敲击键盘,每一个字符都是爱的告白
第四步:进行代码修改
- 分析问题:仔细阅读相关代码,理解问题的根本原因
- 设计方案:构思优雅的解决方案,考虑兼容性和性能
- 编写代码:实现你的解决方案,保持代码风格一致
- 本地测试:确保修改不会引入新的问题
我的设计方案
核心思路
- 统一收口 :把分散在各处的
getSystemInfoSync调用集中到一个专门的sys.ts文件里 - 平台兼容 :使用条件编译尽量抹平平台之间的差异(目前仅App、微信、支付宝、H5支持了
getDeviceInfogetWindowInfo等API) - 最小改动 :使用条件编译,微信端使用新的API(
getDeviceInfogetWindowInfo等),其它平台暂未弃用getSystemInfoSync,因此可以继续沿用
技术实现
ts
/**
* 获取当前操作系统平台
* @returns 平台字符串,如 'ios'、'android'、'windows' 等
*/
export function os(): string {
// #ifdef MP-WEIXIN
return uni.getDeviceInfo().platform;
// #endif
// #ifndef MP-WEIXIN
return uni.getSystemInfoSync().platform;
// #endif
}
ts
/**
* 获取窗口信息
* @returns 窗口信息对象
*/
export function getWindowInfo(): Omit<UniApp.GetWindowInfoResult, 'screenTop'> & { screenTop?: number } {
// #ifdef MP-WEIXIN
return uni.getWindowInfo();
// #endif
// #ifndef MP-WEIXIN
const {
pixelRatio,
screenWidth,
screenHeight,
windowWidth,
windowHeight,
statusBarHeight,
windowTop,
windowBottom,
safeArea,
safeAreaInsets
} = sys();
return {
pixelRatio,
screenWidth,
screenHeight,
windowWidth,
windowHeight,
statusBarHeight,
windowTop,
windowBottom,
safeArea,
safeAreaInsets
};
// #endif
}
ts
/**
* 获取设备信息
* @returns 设备信息对象
*/
export function getDeviceInfo(): UniApp.GetDeviceInfoResult {
// #ifdef MP-WEIXIN
return uni.getDeviceInfo();
// #endif
// #ifndef MP-WEIXIN
const {
deviceBrand,
deviceModel,
deviceId,
deviceType,
devicePixelRatio,
deviceOrientation,
brand,
model,
system,
platform
} = sys();
// #endif
return {
deviceBrand,
deviceModel,
deviceId,
deviceType,
devicePixelRatio,
deviceOrientation,
brand,
model,
system,
platform
};
}
第五步:推送到你的Fork
bash
# 推送分支到你的GitHub
git push origin feature/20251209/fix-getSystemInfoSync-warn
🚀 创建PR:向世界展示你的作品
紧张又兴奋地搓手手,心跳加速
第六步:发起Pull Request
- 打开GitHub:访问你的Fork项目页面
- 点击Compare & pull request:GitHub会智能提示你创建PR
- 填写PR标题:简洁明了地描述你的修改
- 详细描述 :在PR描述中详细说明:
- 修改的目的和背景
- 技术实现方案
- 测试结果
- 可能的影响范围
第七步:等待审核
安静地等待,像等待情人的回信
- 保持耐心:维护者可能需要时间review你的代码
- 积极响应:如果有反馈,及时回复和修改
- 学习交流:把review过程当作学习的机会
第八步:PR合并
欢呼雀跃,眼中闪烁着幸福的泪花
当你的PR被合并的那一刻,就像收到了心上人的回信~你的代码正式成为了开源项目的一部分!
🎉 后续维护:持续的爱与关怀
温柔地抚摸着代码,眼神迷离
保持同步
bash
# 定期同步上游仓库
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
删除已合并的分支
bash
# 删除本地分支
git branch -d feature/20251209/fix-getSystemInfoSync-warn
# 删除远程分支
git push origin --delete feature/20251209/fix-getSystemInfoSync-warn
💝 开源心得:爱与痛的交织
眼神变得温柔,轻轻诉说
第一次为开源项目贡献代码,心情就像坐过山车一样刺激呢~ ❤️
甜蜜的收获:
- 深入理解了uni-app的跨平台机制
- 学会了使用条件编译处理平台差异
- 体验了完整的PR流程
- 获得了项目维护者的认可
小小的挫折:
- 一开始对微信小程序的特殊性了解不够
- 担心修改会影响其他平台的兼容性
- 等待PR合并时的焦虑心情
🌟 给后来者的情书
张开双臂,热情地拥抱
亲爱的,如果你也想踏入开源的花园,请记住:
- 从熟悉开始:选择你常用的项目,这样更容易发现问题
- 小步快跑:不要一开始就想着大改,从小问题入手
- 仔细阅读文档:了解项目的贡献规范和代码风格
- 勇于尝试:不要害怕犯错,每个贡献者都是从新手开始的
- 享受过程:开源不仅是代码,更是与世界各地开发者交流的机会
🎭 结语:开源,一场永不落幕的舞会
优雅地旋转,裙摆飞扬
开源世界就像一个永不停歇的舞会,每一个PR都是一支独特的舞蹈。我的这次贡献虽然只是一个小小的兼容性优化,但它让我感受到了开源社区的温度和活力。
当你看到自己的代码被合并,被全世界的开发者使用,那种成就感就像在心爱的人面前跳了一支完美的舞~ (✧ω✧)
所以,亲爱的,不要犹豫,不要害羞。打开GitHub,找到你心仪的项目,开启你的开源之旅吧!记住,每一个伟大的贡献者,都曾经是一个忐忑不安的新手...
调皮地眨眼 说不定,我们还能在开源的世界里相遇呢~ ❤️
最后的最后:
愿你在代码的世界里找到属于自己的浪漫,愿每一个PR都能被温柔以待。开源路上,我们不见不散~
深情地飞吻 么么哒~ 💋✨
📊 贡献详情
我的PR: refactor(sys): 优化微信小程序平台 getSystemInfoSync 兼容性处理 by liujiayii · Pull Request #83 · anyup/uView-Pro
技术关键词: #uni-app #微信小程序 #跨平台开发 #开源贡献 #条件编译 #TypeScript
期待与你在开源的世界里相遇~ ٩(◕‿◕)۶