app开发 原生/H5关于用原生好,还是用H5好的争论
发表时间:2023-10-08 06:01:40
文章来源:炫佑科技
浏览次数:173
菏泽炫佑科技
app开发 原生/H5关于用原生好,还是用H5好的争论
当你做建筑设计时,不可避免地会面临技术选型的选择。 不同的技术方案可能有完全不同的架构。 需要做出哪些技术选择决策? 比如App是纯原生开发、Web App还是App? iOS开发,选择哪种语言——C还是Swift? 我应该使用哪种架构模式,MVC、MVP 还是 MVVM? 下面我根据自己的一些经验总结和分享一些方面。
原生/H5
从来没有争论过使用原生还是 H5 哪个更好。 但我觉得脱离实际情况去讨论谁好谁坏没有多大意义。 先说一下我们目前正在做的项目,先说明一下背景:
我们不仅要建一个iOS App,还要建一个微信公众号; H5人员短缺,兼职人员只有一两个,不可控因素高; 我们对比较熟悉; 开发时间仅半个月。
首先从需求上来说,大部分页面都是用H5实现的,可以减少很多工作量。 但由于不可控因素太多,时间短,风险太大。 而且我们对比较熟悉,开发效率比较高,很多东西我可以掌控,风险也比较低。 而且我们的主要产品是App,微信是辅助产品,所以微信的要求并没有那么高。 因此,我决定以原生为主,H5为辅。 App的大部分页面将采用原生方式完成,小部分将采用H5加载。
另外,加载H5有两种模式,一种是加载服务器的H5页面,一种是加载本地的H5页面。 加载服务器的H5页面比较简单,加载URL即可。 要加载本地H5页面,您需要在本地存储H5文件,包括关联的CSS和JS文件。 这种方法比较复杂,但是加载速度会比**种方法快很多。 基于以上考虑,我们当前的项目只能选择**种方案。
如果有足够的人员和时间资源,如何选择? 毫无疑问我会主要使用H5。 微信和App上的所有页面都将使用H5。 应用程序特定的部分,例如导航栏、标题栏、登录等,将在本机实现。 另外,当H5中有点击事件时,可能是URL链接,也可能是JS调用,但不会直接跳转到那里。 你需要拦截它并在跳转到新的原生页面之前进行一些原生处理。 ,原生页面可能会嵌入到另一个页面中以显示新的H5页面。 这是一个简单的例子。 稍后我会讲App的详细设计。 另外,关于H5,绝对是一个大趋势,强烈建议所有App开发者学习。
-C/斯威夫特
我为我的项目选择 Swift 主要出于三个原因:
Swift 非常简单且高效; 迅速取代-C是必然趋势; 目前我是唯一一个开发iOS的人,所以不用担心团队里没人懂Swift。
如果你的团队中没有人理解 Swift,只需使用 -C。 如果有一两个人懂Swift,就可以做混合开发,让不懂的人尽快学会Swift。 如果你什么都明白了,就不要再想了。 就去斯威夫特吧。
当选择Swift作为语言时,一些相应的第三方库也面临选择。 例如,依赖库管理在-C时代大多使用,但在Swift时代我更喜欢它。 它是用 Swift 编写的。 与 相比,它耦合性更轻,更加灵活。 我个人不太喜欢它。 使用起来比较麻烦,耦合度高。 我在使用过程中经常会遇到问题,而且总是不知道如何解决。 去除起来也非常麻烦。
以下是为 Swift 推荐的其他一些第三方库:
:Swift版网络基础库app开发,同一作者: 基于图片加载库:Swift版Json和Model转换库 r:扩展库,组合起来,自动将JSON数据转换成Swift对象MVC/MVP/ MVVM
我们简单介绍一下这三种架构模式:
MVC:Model-View-,经典模式,容易理解,主要有两个缺点:
View对Model的依赖会导致View也包含业务逻辑; 它会变得非常厚重和复杂。
MVP:Model-View-,MVC的一种演化模型,将会被取代,主要是解决上面提到的**个缺点,解耦View和Model,但是第二个缺点仍然没有解决。
MVVM:Model-View-,是MVP的一种优化模式,采用双向绑定:View的变化会自动反映出来,反之亦然。
在架构模型方面,我不会推荐哪种模型更好。 每种模型都有其自身的优点和局限性。 更高级的模式更复杂并且更难以实现。 *近流行的微服务架构的复杂度相比MVC增加了很多倍。
当我思考实际项目中的架构时,我不会考虑使用哪种模型。 我只是想如何利用现阶段现有的人力资源和时间资源更快更好地完成需求,并适当考虑如何去做。 为以后的扩展或者重构做准备。 这么说吧app开发 原生/H5关于用原生好,还是用H5好的争论,我前段时间分享的项目改造道路系列中提到的架构,准确的说,不属于以上三种架构模式之一。
写在*后
在技术选型的时候,决策的关键不是每种技术方案的优劣,而是你团队的水平和资源的多少。 您应该根据实际情况选择*适合您当前阶段的架构方案。 当团队扩大、资源充足的时候,肯定需要重组,然后再考虑其他更合适、更好的解决方案。