基本上,我希望拥有一个需要模块化但使用单页应用技术的PHP开发工作流程。
我知道建议将后端与前端分开。单独开发它们。但有没有办法将所有相关代码分组到一个模块(或文件夹)中,这意味着所有后端代码在同一文件夹中都有自己的视图呈现?
它就像MVC,但是" V"包含vuejs(或角度)文件的片段,它们从项目中的某个主文件扩展而来。
例如
假设我们正在构建一个模块化CMS,您可以在其中上传"插件" (实际上,PHP模块),扩展了CMS'功能性:
-project[root-folder]
----core[folder] # contains all infrastracture code, api routes, master view file, magic, etc.
----modules[folder] # uploadable modules goes here
--------User[folder] # sample module; follows the MVC pattern
------------Controllers[folder] # contains files, e.g. UserController.php
------------Models[folder] # contains User.php
------------views[folder] # where vue components is housed
----------------users/index.php # contains vue code
----------------users/create.php # etc...
----------------users/js/user.js
----------------users/css/user.css
--------Blog[folder] # another module
----index.php # the master view or just the bootstrap file
----gulpfile.js
然后在core /文件夹中,有一个主布局将所有视图绑定在一起。
这样的文件夹结构是否可行?
明显的问题是你无法使用.vue文件(因为这意味着,每次上传新模块时,都需要运行gulp或重新编译)。
希望得到您的反馈。感谢。
答案 0 :(得分:0)
这个问题会让很多人感到奇怪和扭曲。这是我在.net mvc上下文I asked it时得到的反应。我和你在一起100%。
对于js前端开发(并且过于无知PHP)来说,我有太多新建议。这会很棘手。对PHP代码的Ajax调用需要转到src目录下的路径。但是,您希望停止从这些相同路径提供服务的前端资源。 PHP和gulp都希望使用URL的文件路径,但至少对于Gulp this can be controlled。
我会兴趣地关注这一点。我的目标是将您可能想要一起删除的内容保存在同一个文件夹中,并使这些内容能够通过短的相对路径相互调用。理想情况是能够独立于磁盘上的路径指定模块路由,并使此路由适用于前端捆绑资源和服务。祝你好运!
答案 1 :(得分:0)
我在寻找解决同一问题的方法时遇到了这个问题。我正在构建一个“平台”,而不是像Wordpress那样使用带有插件系统的应用程序。我还有一个额外的问题,即平台本身也是一个“多租户”环境-因此,任何插件都不会干扰将这些东西结合在一起的核心“仪表板”。
所以;出于某些原因,发布了两年...
https://blog.antsand.com/singlepost/index/5619/How-to-integrate-php-(Phalcon)-and-Vue.js-components
该系列中有一行写着:“作为经验法则。基于应用程序而不是编程语言和框架来构造代码。”我不确定这是否明智,但这肯定给了我一些挑战。
现在,我有一个类似于以下的模块文件夹:
/mymodule
/Controller
/Model/
/Template
thing.vue
/Assets
/js
/css
MyModule.php
仍处于概念验证阶段,但对还是错,它似乎已经足够好了!