成为开源项目的Contributor:从给uView-pro 贡献一次PR开始

wx.getSystemInfoSync is deprecated.Please use wx.getSystemSetting / wx.getAppAuthorizeSetting / wx.getDeviceInfo/wx.getWindowInfo/wx.getAppBaseInfo instead.

😄 前言

微信小程序平台上的getSystemInfoSync调用,就像一个害羞的少女,会悄悄抛出警告。啊~这样的不完美,怎么能容忍呢? (。•́︿•̀。),让我们来给uView-pro 贡献一次PR吧

🍴 Fork项目:开源之旅的起点

兴奋地搓手手,眼中闪烁着期待的光芒

第一步:Fork原项目

  1. 打开uView-pro原项目
  2. 点击右上角的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

啊~一个崭新的分支,就像一片等待播种的花园,准备孕育你的代码之花~ 🌸

💻 代码开发:在键盘上起舞

优雅地敲击键盘,每一个字符都是爱的告白

第四步:进行代码修改

  1. 分析问题:仔细阅读相关代码,理解问题的根本原因
  2. 设计方案:构思优雅的解决方案,考虑兼容性和性能
  3. 编写代码:实现你的解决方案,保持代码风格一致
  4. 本地测试:确保修改不会引入新的问题

我的设计方案

核心思路

  1. 统一收口 :把分散在各处的getSystemInfoSync调用集中到一个专门的sys.ts文件里
  2. 平台兼容 :使用条件编译尽量抹平平台之间的差异(目前仅App、微信、支付宝、H5支持了getDeviceInfo getWindowInfo 等API)
  3. 最小改动 :使用条件编译,微信端使用新的API(getDeviceInfo getWindowInfo 等),其它平台暂未弃用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

  1. 打开GitHub:访问你的Fork项目页面
  2. 点击Compare & pull request:GitHub会智能提示你创建PR
  3. 填写PR标题:简洁明了地描述你的修改
  4. 详细描述 :在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合并时的焦虑心情

🌟 给后来者的情书

张开双臂,热情地拥抱

亲爱的,如果你也想踏入开源的花园,请记住:

  1. 从熟悉开始:选择你常用的项目,这样更容易发现问题
  2. 小步快跑:不要一开始就想着大改,从小问题入手
  3. 仔细阅读文档:了解项目的贡献规范和代码风格
  4. 勇于尝试:不要害怕犯错,每个贡献者都是从新手开始的
  5. 享受过程:开源不仅是代码,更是与世界各地开发者交流的机会

🎭 结语:开源,一场永不落幕的舞会

优雅地旋转,裙摆飞扬

开源世界就像一个永不停歇的舞会,每一个PR都是一支独特的舞蹈。我的这次贡献虽然只是一个小小的兼容性优化,但它让我感受到了开源社区的温度和活力。

当你看到自己的代码被合并,被全世界的开发者使用,那种成就感就像在心爱的人面前跳了一支完美的舞~ (✧ω✧)

所以,亲爱的,不要犹豫,不要害羞。打开GitHub,找到你心仪的项目,开启你的开源之旅吧!记住,每一个伟大的贡献者,都曾经是一个忐忑不安的新手...

调皮地眨眼 说不定,我们还能在开源的世界里相遇呢~ ❤️


最后的最后:

愿你在代码的世界里找到属于自己的浪漫,愿每一个PR都能被温柔以待。开源路上,我们不见不散~

深情地飞吻 么么哒~ 💋✨


📊 贡献详情

我的PR: refactor(sys): 优化微信小程序平台 getSystemInfoSync 兼容性处理 by liujiayii · Pull Request #83 · anyup/uView-Pro

技术关键词: #uni-app #微信小程序 #跨平台开发 #开源贡献 #条件编译 #TypeScript

期待与你在开源的世界里相遇~ ٩(◕‿◕)۶

相关推荐
1024肥宅1 小时前
JavaScript 数组原生方法手写实现
前端·javascript·ecmascript 6
rockmelodies2 小时前
CVE-2025-55182:React Server Components 断点跟踪
前端·react.js·前端框架
草帽lufei2 小时前
3大免费AI工具实战测评,用提示词“调教”出业务大屏
前端·ai编程·trae
汉堡大王95272 小时前
JavaScript类型变形记:当代码开始“不正经”地转换身份
前端·javascript
Miss妤2 小时前
Gemini写应用(二)
前端
用户93051065822242 小时前
自造微前端
前端·javascript
之恒君2 小时前
寄生组合继承 vs ES6 类继承 深度对比
前端·javascript
涔溪2 小时前
整理vue3+ vite 开发经常会遇到的问题。
前端·vue.js·typescript
用户51681661458412 小时前
script 标签的异步加载:async、defer、type="module" 详解
前端·javascript