Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否考虑将halo不同的功能拆分成模块化? #458

Open
NGLSL opened this issue Jan 1, 2020 · 28 comments
Open

是否考虑将halo不同的功能拆分成模块化? #458

NGLSL opened this issue Jan 1, 2020 · 28 comments

Comments

@NGLSL
Copy link
Contributor

@NGLSL NGLSL commented Jan 1, 2020

我确定我已经查看了 (标注[ ][x])


我要申请 (标注[ ][x])

  • BUG 反馈
  • 添加新的特性或者功能
  • 请求技术支持

我发现halo的代码好像不少了,有很多功能很多包。有些功能可能暂时用不上。是否考虑将其拆分成不同的模块,也好方便扩展,要新增什么功能添加什么模块即可。就像使用的依赖一样,我不需要这个功能,那就不添加这个依赖,新增什么功能就在对应的模块上开发功能即可。

其二,我不清楚gradle是否能像maven一样,设置parent,统一管理依赖的版本。这样拆分成模块化之后,也不会出现版本依赖混乱的问题。

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

@NGLSL 我也是这么想的,不过难度太大。

@ruibaby ruibaby added the question label Jan 1, 2020
@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

所以我们现在在研究插件系统,如果可以,那么你所说的那样都可以实现。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

@NGLSL 我也是这么想的,不过难度太大。

或许不用拆分的那么细致,基础功能保留在固定的模块。像一些core、model、plugin、security这些我感觉是可以拆分出来。不过工作量还是很大的,可以说是一次重构了。

当然,我只是有这么一个想法,是考虑到方便更多的开发者进行开发或者维护。

我今天想看看代码,看看其中是否有优化的地方,却不知道该去怎么下手。

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

@NGLSL 我也是这么想的,不过难度太大。

或许不用拆分的那么细致,基础功能保留在固定的模块。像一些core、model、plugin、security这些我感觉是可以拆分出来。不过工作量还是很大的,可以说是一次重构了。

当然,我只是有这么一个想法,是考虑到方便更多的开发者进行开发或者维护。

我今天想看看代码,看看其中是否有优化的地方,却不知道该去怎么下手。

可是这样对小白不友好啊。

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

没有做到开箱即用那一步的话,不会拆开。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

@NGLSL 我也是这么想的,不过难度太大。

或许不用拆分的那么细致,基础功能保留在固定的模块。像一些core、model、plugin、security这些我感觉是可以拆分出来。不过工作量还是很大的,可以说是一次重构了。
当然,我只是有这么一个想法,是考虑到方便更多的开发者进行开发或者维护。
我今天想看看代码,看看其中是否有优化的地方,却不知道该去怎么下手。

可是这样对小白不友好啊。

打的包包含了基础功能,其他的功能就是Plugin,要使用直接添加进去即可。

> halo
 > common-core
 > common-model
 > common-util
 > admin
  > 包含了基础功能
 > front-end
   > 包含了基础功能
 > plugin
   > background-plugin
   > black-list-plugin
   > ...
@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

@NGLSL 那就是我说的插件的概念了。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

没有做到开箱即用那一步的话,不会拆开。

把功能拆分后,并不会影响到开箱即用的问题

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

@NGLSL 那就是我说的插件的概念了。

差不多是这么个意思,可以考虑一下

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

@NGLSL 那就是我说的插件的概念了。

无论是开发起来还是用起来,都会灵活很多,有助于开发者快速了解项目

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

很早就有这些想法了,也做了一些常识,效果都不是很理想。#125

你有好的想法可以试试。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

很早就有这些想法了,也做了一些常识,效果都不是很理想。#125

你有好的想法可以试试。

of course!

但具体细节和注意事项,还需要讨论。

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

很早就有这些想法了,也做了一些常识,效果都不是很理想。#125
你有好的想法可以试试。

of course!

但具体细节和注意事项,还需要讨论。

Flarum 其实就是这种模式,所有功能点都是一个插件。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

很早就有这些想法了,也做了一些常识,效果都不是很理想。#125
你有好的想法可以试试。

of course!
但具体细节和注意事项,还需要讨论。

Flarum 其实就是这种模式,所有功能点都是一个插件。

这种方式够灵活!项目大了就要拆分,我在工作中有多次从零开始的项目和重构的经验。也许我可以写一篇拆分项目的文章,分享出来大家可以提出一些自己的意见与建议。

共同讨论halo的plugin功能该怎么去实现会更灵活。

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

@NGLSL 嗯 好的。

@JohnNiang

This comment has been minimized.

Copy link
Member

@JohnNiang JohnNiang commented Jan 1, 2020

我回答一下第二个问题:

Gradle 也是支持模块化管理的。重要的配置在于 settings.gradle,不过多模块搞起来总觉的怪怪的,不如微服务来得舒坦。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

我回答一下第二个问题:

Gradle 也是支持模块化管理的。重要的配置在于 settings.gradle,不过多模块搞起来总觉的怪怪的,不如微服务来得舒坦。

我拆分项目的经验,就是因为来自于微服务。但,把halo弄成微服务,就有些成本过高了,不如单体应用好——拆分后的单体应用,我更喜欢叫这种为模块化。

@JohnNiang

This comment has been minimized.

Copy link
Member

@JohnNiang JohnNiang commented Jan 1, 2020

等 halo 这次版本发布且稳定了之后,可以考虑模块化 @ruibaby @NGLSL

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

等 halo 这次版本发布且稳定了之后,可以考虑模块化 @ruibaby @NGLSL

👍

@JohnNiang

This comment has been minimized.

Copy link
Member

@JohnNiang JohnNiang commented Jan 1, 2020

需要 @NGLSL 您的支持 :P

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

需要 @NGLSL 您的支持 :P

能帮助开发,当然最好啦:D

@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 1, 2020

需要 @NGLSL 您的支持 :P

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 1, 2020

需要 @NGLSL 您的支持 :P

当然乐意,参与开源项目,有助于美化我的RESUME!😁

@ruibaby ruibaby added the enhancement label Jan 2, 2020
@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 3, 2020

@pencilso

This comment has been minimized.

Copy link

@pencilso pencilso commented Jan 10, 2020

我之前也做过一些重构方面的工作

core (核心)
     core-app  //公共Controller
     core-common 
              base   //一些base类
              bridge //以供各个服务之间调用
              cache  //缓存
             ......
     core-service  //公共接口实现
     .....
           
//子模块示例   还可以再加 file子模块  comment子模块 等等
user
    每个模块下有四个moudle
     app  //controller
     common //user下的 model service接口 ....
     service  //user模块自己的实现类
     bride2core //user 向其他服务所提供的调用实现
@ruibaby

This comment has been minimized.

Copy link
Member

@ruibaby ruibaby commented Jan 10, 2020

@pencilso 我们也可以这么做,主要是用户端,如何让用户方便的安装和卸载。也就是可插拔设计。

@pencilso

This comment has been minimized.

Copy link

@pencilso pencilso commented Jan 10, 2020

@ruibaby 可插拔就比较困难了,在Android的领域中是有一个插件化的概念,也比较成熟,它可以加载apk包然后run。
如果只是加载jar包的话 还是有方案的 用Classload加载jar,但是涉及到配置文件等等就比较复杂了。
后续我也查一些文献看看。

@NGLSL

This comment has been minimized.

Copy link
Contributor Author

@NGLSL NGLSL commented Jan 10, 2020

@ruibaby 可插拔就比较困难了,在Android的领域中是有一个插件化的概念,也比较成熟,它可以加载apk包然后run。
如果只是加载jar包的话 还是有方案的 用Classload加载jar,但是涉及到配置文件等等就比较复杂了。
后续我也查一些文献看看。

挺好,把halo实现成热拔插就爽了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.