随着 Web 技术的成熟,诸如 Ruby on Rails, CakePHP, CodeIgniter 等 Web 应用开发框架已经很常见了, 如果你曾经使用或者了解过他们,你就你明白这些框架能在多大程度上帮助我们加速 Web 应用开发了,WordPress 不是基于框架开发的,和通常的 Web 开发框架也不太一样,在本文中,我们将总结一下在常用 Web 开发框架中的常见功能,同时和 WordPress 做一个对比,找出这些功能在 WordPress 中的实现方法。
什么是 Web 应用开发框架?
从字面意思上看,应用开发框架是一个可重用的代码库,框架可以帮助设计师和开发者把注意力集中在他们的设计和业务逻辑上,而不是重复写一些已经实现过的常用的功能,如用户管理、数据库连接、错误处理、缓存等,这对减少开发周期有很大帮助。我们比较常见的 Web 开发框架有 Ruby on Rails, CodeIgniter, CakePHP 和 Zend,这些框架基于 MVC 架构,把一个应用分割成了若干组件。 本文的目的是对比 Web 开发框架和 WordPress,所以我们我们只讨论 PHP Web 开发框架。
使用 Web 开发框架的优势
PHP 是一门广泛使用的程序语言,同时也是一门广受争议的语言。PHP 学习曲线比较平缓,可以快速入门、上手使用,这通常造就了很多水平很初级的PHP 程序员,这些程序员开发出了安全性较低的程序。使用框架可以帮助我们解决一些常见的安全性错误。
每个程序员都有自己的代码风格,使用框架可以帮助团队成员保持相同的代码风格,遵循相同的标准和约定,使团队协作更加顺畅。
在一个 Web 开发框架中,我们通常会见到以下一些功能组件:
- 用户管理
- 模板引擎
- 错误日志
- localization
- 表单和数据验证
- 文件上传和媒体管理
- 图像处理
- 对搜索引擎友好的 URL 处理
- Session 管理
- Trackback, XML-RPC 和 APIs
- 通过 hook 和 类扩展框架
- 定时任务
- (computing) cache
WordPress 内置了上面的大多数功能,那么问题来了:为什么不能把 WordPress 作为一个 Web 开发框架来使用呢?下面是把 WordPress 作为一个 Web 开发框架使用的一些优势。即便你不打算使用 WordPress开发应用程序,也可以稍微了解一下。
WordPress 作为框架使用的一些功能特性
1. 管理后台和仪表盘
WordPress 无疑拥有最方便易用的管理后台,这可能也是 WordPress 发展如此之快的原因吧,组织合理的菜单、仪表盘小工具、自适应设计等诸多特性使 WordPress 在后台用着体验上相比其他框架占有绝对优势。同时,我们可以很方便地添加自定义菜单,在后台为不同的数据创建相互分离的数据管理界面(基于自定义文章类型)。
仪表盘默认提供了一些使用小工具帮助我们概览网站的内容,根据需要,我们也可以创建自定义的仪表盘小工具,只需要几行代码就可以实现,如下:
// 输出内容到仪表盘小工具
function dashboard_widget_function() {
echo "你好世界,这是我的第一个自定义仪表盘小工具。";
}
// 在 hook 中使用的功能
function add_dashboard_widgets() {
wp_add_dashboard_widget('dashboard_widget', 'Example Dashboard Widget', 'dashboard_widget_function');
}
// 注册新仪表盘小工具到 'wp_dashboard_setup' 动作
add_action('wp_dashboard_setup', 'add_dashboard_widgets' );
2. 用户管理和访问控制
用户管理是每一个应用程序必不可少的一部分,WordPress 提供了基于角色和权限的用户管理和访问控制系统,并提供了很方便的 API 帮助我们扩展用户角色和权限。默认情况下,WordPress 提供了几个不同的角色:管理员 (可以完全访问), 编辑, 贡献者和订阅者,通过给用户指定不同的角色,我们可以很方便的控制用户访问网站的不同部分。
3. 模板引擎
除了后端功能,前端样式也是一个项目的重要组成部分,WordPress 提供了大量调用数据和逻辑判断的函数,让我们可以直接使用 PHP 处理模板,开发者可以直接使用 PHP 函数展示数据,除了易上手之外,速度也不会受影响。这种方式不是标准的 MVC 开发模式,却和 MVC 有异曲同工之妙。
如果你想用一些如 Blade,Twig之类的模板引擎来开发模板,也有对应的第三方库来帮我们实现。
4. 本地化
WordPress 内置了多语言的支持,同时也提供了动态的 CSS 类来帮助主题开发者很方便的设置网站语言阅读方向。对于有多语言站点需求的用户,有不少多语言插件来帮助我们把 WordPress开发为多语言站点。
5. 插件
目前,WordPress 官方插件目录中有两万多个免费插件,同时也有数千个付费高级插件供有需要的开发者选用,插件扩展了 WordPress 的默认功能,这些功能包括缓存处理、sitemap 生成、集成第三方服务、多语言网站等等。
6. 缓存
缓存是任何一个基于 Web 的应用必不可少的一个重要组成部分,适当的缓存可以帮助我们减少服务器负载,加快网站访问速度。WordPress 默认提供了基于数据库的缓存方案,我们可以通过简单的设置开启,如果默认的缓存不够用,还有很多缓存插件来帮助我们实现更高级的缓存控制功能,甚至可以通过 CDN 插件帮助我们部署静态文件到 CDN 网络上。
7. 对搜索引擎友好的 URL 处理
WordPress 默认支持基于 URL Rewite 的静态 URL 生成,我们只需要做后台简单的设置一下,就可以开启这个功能,把我们的 URL 转换成对 SEO 友好的 URL。
8. 文件上传和媒体管理
WordPress 的文件上传功能可能是所有开源 Web 程序中最好用并且是功能最强大的了,她并没有提供花哨的图片效果处理功能,而是提供了Web 开发中最常用的如:拖拽上传、缩略图生成、附加到文章、自动生成相册等等,同时还有管理所有已上传图片的功能。
9. Hooks, Actions 和 Filters
WordPress 提供了很多 hooks 帮助开发者在适当的时机调用自定义功能,比如插入 CSS 和 JavaScript 文件到页面 head 标签中,添加 Banner 广告到文章底部等。
除了默认的Hooks,我们还可以根据需要插入自定义 Hook 到代码执行流程,方便把一些附加的操作从主流程中解耦。
10. 错误日志
PHP 有一个标准的错误日志系统,我们可以在 wp-config.php 中加入以下几行配置来激活:
@ini_set('log_errors','On');
@ini_set('display_errors','Off');
@ini_set('error_log','/home/example.com/logs/php_error.log');
11. XML-RPC 和 API
WordPress 支持 XML-RPC,可以让我们使用其他客户端远程发布网站数据,比如我们可以通过 Windows Live Write 或其他博客客户端发布或更新文章到 WordPress 站点。
12. 多实例
WordPress 还为我们提供了多站点模式,可以让我们在一个 WordPress 核心的基础上建立多个站点,我们可以使用这个功能建设多语言站点、基于国家的站点、或者开设之前站点的子站点。
虽然 WordPress 是作为一个博客程序诞生的,但是经过几年的快速发展,越来越多的功能被添加到 WordPress 核心,越来越多的用户开始使用 WordPress 建设杂志站点、企业网站、论坛、问答网站等各种类型的站点,从事实上,WordPress 已经被作为一个应用开发框架使用了。
summarize
虽然把 WordPress 作为 Web 开发框架来使用有很多优势,但是并不是所有需求都适合使用 WordPress 来开发。当我们需要开发的应用程序是以内容为主的时候,可以直接使用 WordPress,让 WordPress 强大的功能帮助我们加快开发速度,缩短开发周期。如果我们需要开发的应用程序需要较多的自定义功能,或者需要处理很多相互独立的数据,使用 WordPress 可能不是一个好选择,这时候,使用一个 Web 开发框架可能会更加合适。
1 thoughts on “使用 WordPress 做为 Web 应用开发框架的优势”
最近也正在研究这种用法 挺好的