如何在一个晚上根据一个文件中的业务逻辑规则为静态站点编写快速CMS

不单是Wordpress



不单是Wordpress


CMS市场一直是Wordpress,Joomla和Drupal排名前三的地方。这些美好的时代已经逐渐过去,尽管WP仍在引领,但随着新网站的出现而放缓。难怪:活跃的社区,大量的插件。但是,本文完全不会专门介绍内容管理系统市场的“后起之秀”(您好,基于Laravel的解决方案)。相反,即使我们关注的对象也将是“黑色物质”,这在侧面有些偏离。即-鼓卷...



静态网站



静态网站的CMS



谁需要2k20中的静力学?



理性的问题!电话互联网和Windows95的时代似乎已经过去,但是对静态生成html代码的需求又开始增长。当然,好的公司也应该受到指责。谷歌PageSpeed就是伟大而强大的Urfi ...总的来说,正是这个网页性能指标已成为全球互联网发展的引擎和所有Web开发人员的头痛,对于自由职业者而言更是如此。该工具的测量结果基于Google标准,众所周知,这些是排名的基础。客观地,将页面加载超过三秒钟会自动增加跳出次数。因此,通过任何CMS,框架或自行编写的选项的功能,静态方法已成为替代或替代页面动态组装的替代解决方案之一。



,



在值班期间,我从事为许多项目提供服务的工作,其中包括解析器,还涉及电子商务领域的解决方案。我并不是在抱怨生活,但问题并非来自“小学二年级”类别。我作为开发人员和经理(要管理自己的小企业,也需要这方面的技能),就像波兰语“dostałemsiędo martwegokąta”(简而言之,是一个偏僻的角落)一样。条件如下:您需要在几天内编写一个解决方案,该解决方案应该易于安装并可以提供任意数量的静态页面。而且,管理员应该能够通过FTP / SFTP连接快速删除或添加这样的解决方案到任何项目,即使他无权访问FTP / SFTP。另一方面,条件是最低版本为PHP 5。6,并且应该像每个较新版本一样受到很好的支持。



管理员应



  1. 使用管理面板删除/添加/更改页面;
  2. 在全球范围内快速搜索页面内容(考虑到不同的编码,语言;
  3. 按文件名搜索;
  4. 从管理面板中一键删除/插入/更改所有页面上的必要元素;
  5. 该解决方案应该易于安装和卸载。


安全性不应允许使用SQL注入或任何其他尝试来干扰工作。



另一个义务是能够通过API使用管理面板及其所有功能。粗略地说,如果在50多个域中都有这样的管理面板,则应该可以发出请求来远程访问它们。



捷克共和国,傍晚,夏天,咖啡



巨人山脉极其平静的夜晚只会造成懒惰。但是,正如古老的谚语所说,谁不起作用...



因此,在收集了我的思想并激发了我的精神和果断性之后,我开始设计。很清楚,在这种情况下,过程解决方案的创建不可能获得最大的成功。将来有可能支持该系统已经不是什么秘密了,但是与此同时,您也不想改变太多。



是的,该死,我决定将大多数框架中已经建立的方法-OOP和MVC概念转移到一个文件中。



从性能的角度来看,过程主义可能是最好的选择,但是:



  • 让我们不要忘记不断增长的客户端需求以及为我们的Web应用程序的界面添加新功能的并行需求。
  • — , , ;
  • — , “ ” , - -, -.


由于没有任何需要,现在决定放弃这些基础,因此以上内容中的“模型”一词在我的体系结构中是一个未实现的概念。缺少实现在这里做得很好,因为原则上不再可以进行SQL注入。



结构化



从我们拥有一个文件并且有一条主要规则的事实出发-仅应添加一个文件,然后您可以立即工作并维护已添加文件的目录,很明显,即使是类也无法将您从“魔鬼腿”中救出来。



有什么解决办法?



直观地:我们将文件分为视图的结构部分:基本系统类位于最顶层,控制器位于较低的位置,视图甚至位于较低的位置,但是整个芭蕾舞被路线封闭。每个部分都收到了注释的标头,并附有解释,以免过一会儿忘记这里:



/*
* This is the part for routing
*Additional information...
*/


功能命名-类方法是根据camelCase的实践命名的,并且与功能角色相对应,例如,“ checkAdminCredentials”是一种方法,其含义不言而喻。



试图描述所有可能的东西-在开发结束之前,我不会说我符合这个意图,最后,我在代码的速度和可读性之间进行了调整,但是我设法在关键决策中加入了类似//的注释,以获取静态html。



路由如何完成?



我几乎接受了对接口进行或多或少清晰分离的需要,这是一个关键需求。如果不正确地实现此组件,则可能会混淆哪个路由正在调用哪个控制器,从而可能成为应用程序的“尖刺点”。



基于上面提到的问题,我使路由类变得相当原始,但是功能丰富。路由使用GET请求进行工作-当然,这在美学上并不完全令人满意,但是快速实现的迫切需求是100%可以解决的。路由器已成为Web应用程序(即管理面板)的唯一入口点,我认为,这是易于开发的理想解决方案。在此类中,将组装Web应用程序的前端和后端,并通过返回输出生成的HTML。



问题:我写过自行车吗?



我倾向于怀疑过去已经写过类似的解决方案,但是截至2020年7月,英语,波兰语,捷克语,俄语和乌克兰语都没有帮助我找到有价值和适用于我的案子的东西。这就是为什么创建者对我“开放”的原因,并且我从心底里设计了紧急业务问题的解决方案。毕竟,如果有问题,则必须尽快,经济地解决,而且质量也不能忘记。



明确的表现范例



一个非常著名的CMS,其名称通常不被称为:







我的解决方案:







显然,获得第一个字节的速度稍高,与所有其他与下载速度有关的指标一样,我什至不展示经典CMS和这个迷你解决方案。



会有续集吗?



现在,该系统主要是编写的,并且已经进行了几次更新。在不久的将来,我计划以一种或另一种形式准备文档,但是要在公开航行中发布此解决方案,尽管我必须说他每天都在完美地解决内部问题。在html文件中的文件搜索和内容搜索部分,还有一些更有趣和有趣的时刻,它们绕过了PHP功能,从而使这些请求的执行速度大大提高。我保证会在不久的将来写这些话题。



All Articles