IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 由ARouter引发的思考,到底什么是组件化和模块化? -> 正文阅读

[游戏开发]由ARouter引发的思考,到底什么是组件化和模块化?

这篇文章可能会饱受争议,大佬们可能会有不同的见解,以下内容仅个人观点,如果不妥请及时指出。

起因是最近想温习一下ARouter,只看不写,早晚荒废,于是开始写了一个demo,不写不要紧,一写就暴露了很多问题。

说到ARouter,肯定就是跨模块跳转,既然如此就建立两个模块呗,让这两个模块之间的界面进行跳转,这么简单的demo不一会就完成了吗
在这里插入图片描述
由app模块跳转到 im模块,写好之后发现报 There is no route match the path 的错误,没有找到匹配路径。

这里先整理出为了解决这个问题都经历了哪些坎坷(解决没有找到匹配路径的办法)

  1. 注解格式是否正确 类似 @Route(path = “/qqq/test1/second1”) 最少两条路径
  2. 不同模块下的第一个路径名字是否相同,不同模块的第一个路径不要一样
  3. 每个模块下是否引入了注解器
    Java:  annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
    Kotlin:  kapt  'com.alibaba:arouter-compiler:1.2.2'
  1. 每个模块下是否都进行获取模块名操作,这里需要注意,Java与Kotlin写法有出入
    android – defaultConfig 内
     JAVA
     javaCompileOptions {
            annotationProcessorOptions {
                //注解处理器需要的模块名,作为路径映射的前缀
                arguments = [AROUTER_MODULE_NAME: project.getName()]
            }
        }
     Kotlin
     android上方添加:
     apply plugin: 'kotlin-android'
     apply plugin: 'kotlin-kapt'
     apply plugin: 'kotlin-android-extensions'
     
     kapt {
            arguments {
                arg("AROUTER_MODULE_NAME", project.getName())
            }
        }

如果以上没有中招还有一个检验办法,看run日志里面搜索

LogisticsCenter has already been loaded
LogisticsCenter has already been loaded, GroupIndex[4], InterceptorIndex[0], ProviderIndex[2][ ] 

GroupIndex[ ] 大于1说明有注册成功,不出意外的话:如果报没有找到路径此时 GroupIndex[1]

此时也不要慌,既然没有注册成功肯定是有原因的,有很大的可能性就是我们遇到了一个相同的问题 - 项目架构出现了问题

同标题,这里我遇到的是对跨模块跳转有了“误解”,既然是跨模块跳转,我创建了两个模块进行跳转,没毛病呀。通过疑问句的手法承上启下,引出下文 ->

什么是组件?什么是组件化?什么是模块?什么是模块化?

写这篇文章之前,我进行了大量的百度此类问题

好多博主都是将模块化作为标题,但是其中的项目框架中都是将所谓的“模块“以组件的形式引用的,当然这也没什么问题,只是会给人一种恍恍惚惚的错觉

这里我将以自己的理解进行一次梳理,仅供参考

组件、模块是两个实体化的东西,而组件化、模块化是两种虚化的东西

我们建立项目之后默认的的app 就是一个模块,新建的 module 也是一个模块,模块是可以作为一个独立的项目运行的,相当于两个 app ,就我创建的项目架构来看,相当于你想通过QQ的好友空间图标跳转到微信的朋友圈界面,这是不可能的,所以ARouter报出了未找到相关路径

而组件就如字面意思,组成该项目的零件,上面刚说了一个模块(module)相当于一个独立的项目,就可以转化为 组件是组成moudle的零件

总结:组件是组成一个项目的零件,模块是一个单独的项目

模块化是一种抽象的概念,实际与模块(module)没有必然联系,可以理解为重名了

模块化:我将一个项目分成 首页模块,我的模块相当于我将一盘瓜子分成 原味在左半盘与红枣味在右半盘

模块:我将一个项目分成两个项目 首页项目,我的项目相当于我将一盘瓜子分成两盘 原味一盘与红枣味一盘

此时Arouter就如盘内的一条虫子,想从一颗坏瓜子跑到另一条坏瓜子里面,当你把瓜子分成两盘之后,虫子就到不了另一个盘子里面去了

组件化:我家里有一辆兰博尼基,朋友想借几天开,太远了开过去不方便,那我发邮政吧,整体发不划算,我拆成几份分开发吧,能用优惠券,我拆成了车头,车屁股,车身子,我把我的爱车给组件化了

组件:车头,车身子和车屁股

那来到项目里就是将一个项目按模块分类(模块化),然后将这些模块以组件的形式(组件化)应用到项目里来 而不是以 module的形式,这就是为什么我们要将 com.android.application 改成 com.android.library

那Arouter 的跨模块跳转其实是跨组件跳转(因为一个组件就是一个模块),所以将我的项目架构修改成了

在这里插入图片描述
此时 im 和 library 作为 app的两个组件,他们两个之间的界面就能通过ARouter正常跳转了,Intent是跳不过去的,找不到相关界面。

以上如果看不明白,不要紧,来图解!
在这里插入图片描述
在这里插入图片描述

我在这两个组件内分别放这个项目的首页模块和我的模块,这样是不是也可以说成 模块之间的跳转呢?

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:42:53  更:2022-04-04 12:46:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 19:01:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码