当我构建第一个 React Native 应用程序时,我之前有一些 Web 开发经验。在 iOS 和 Android 上使用 React 似乎是我技能的自然延伸。
但我很快发现——这是一个艰难的过程——网络开发人员的思维方式并不总是能很好地转化为原生应用程序开发。
以导航为例。在网络上,每个网站通常都会制作自己独特的页面布局。页眉、侧边栏和页脚都是定制的。您可能从一个简单的元素开始,但它只是一个空白画布。您必须使用 JavaScript 和 CSS 来使其具有功能性和视觉吸引力。
这种定制成为您品牌标识的一部分。如果您的标题看起来像另一个网站的标题,那就感觉很普通。
当我转向本机应用程序开发时,我也带着同样的心态。
我为一切精心设计了自定义组件。我用后退按钮和标题构建了自己的标题。我创建了自定义屏幕转换和动画。我什至自己管理安全区域并跟踪屏幕方向以动画过渡。我精心制作了自定义底部选项卡 - 任何确保我的应用程序看起来与其他人的不同的东西。
没过多久就意识到这是一个错误。
本机应用程序用户期望跨应用程序保持一致的模式。他们对导航等基本 UI 元素的质量也抱有很高的期望。例如,在 iOS 上,用户希望长按后退按钮以返回多个屏幕。如果缺少这一点,体验就会感觉不完整。
那么为什么要重新发明轮子呢?本机组件已经针对该平台进行了优化。我可以简单地使用本机并调整其颜色,而不是从头开始构建自定义标头。更好的是,我可以完全跳过自定义并直接使用 UIKit 组件。用户不会感觉“基本”,而是会欣赏该应用程序如何自然地融入 iOS 生态系统。
以 Apollo for Reddit 等应用程序的成功为例。人们喜欢它,因为它采用了 iOS 的原生设计语言,让人感觉像是该平台的自然扩展。
这与 Web 开发形成鲜明对比。在网络上,您从空白画布开始,自己构建一切。开箱即用的基元通常笨重且没有吸引力。按钮是灰色的。输入具有粗糙的轮廓。您甚至需要重置 CSS 才能获得一致的基线。
Web UI 库的存在就是为了缓解这些挫败感,但它们是一个拼凑的解决方案。相比之下,像 iOS 这样的原生平台具有凝聚力强、制作精美的设计原语。导航、动画、菜单、版式、颜色和图标均由专家精心设计,以创造无缝的用户体验。这些不仅仅是工具——它们是经过数十年完善而形成的设计系统。
我花了太长时间才意识到这一点。最初我什至都懒得去读苹果的人机界面指南。
早在 2019 年,React Native 应用程序常常让人感觉像是对原生应用程序的高质量模仿。他们看起来很像,但并没有完全感觉到。 React Native 的理念一直是匹配底层平台,但在实践中,许多库依赖于基于 JavaScript 的组件来模仿本机组件,而不是使用真实的组件。
例如,Android 上的 React Native 应用程序经常使用 Material Design 标头,但它们是用 JavaScript 实现的,而不是利用实际的本机标头组件。
作为一名 Web 开发人员,我发现这种抽象很有吸引力。它让我可以完全控制定制。但这种方法常常会导致微妙的不一致,从而降低用户体验。
React Native 开发者并不完全是罪魁祸首。当时,使用本机代码很麻烦,尤其是在使用 Expo 的情况下。添加本机功能通常需要放弃 Expo 并重新配置整个堆栈。具有本机代码的库经常与 React Native 更新不同步,导致开发人员不得不处理他们不完全理解的 Objective-C 或 Java 文件。
“基于 JS”甚至成为库的一个卖点,向开发人员承诺他们不必处理原生依赖关系。
JavaScript 和本机代码之间的这种分歧强化了我的网络优先心态。为什么不坚持使用 JavaScript 来完成所有事情?
值得庆幸的是,React Native 生态系统已经发展。如今,您可以使用 Swift 和 Kotlin 编写原生模块,而配置要少得多。更好的是,Expo 现在支持本机代码。这些改进使得原生优先开发变得更容易,鼓励库接受原生原语。
例如,React Navigation 已转向使用本机组件,优先考虑无缝的用户体验而不是广泛的开发人员定制。
这一转变标志着 React Native 的未来更加光明。随着原生工具变得更易于使用,我们可以构建看起来和感觉都属于其平台的应用程序。
所以,从我的错误中吸取教训。使用该平台的工具并接受其设计理念。最重要的是,在决定打破规则之前先掌握规则。
以上是我的 Web 开发思维方式如何让我在 React Native 中误入歧途的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript核心数据类型在浏览器和Node.js中一致,但处理方式和额外类型有所不同。1)全局对象在浏览器中为window,在Node.js中为global。2)Node.js独有Buffer对象,用于处理二进制数据。3)性能和时间处理在两者间也有差异,需根据环境调整代码。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版
好用的JavaScript开发工具