articus / zf2-bower-module
方便使用Bower JavaScript包的Zend Framework 2。
Requires
- php: >=5.5
- zendframework/zend-mvc: >=2.3
- zendframework/zend-servicemanager: >=2.3
- zendframework/zend-stdlib: >=2.3
This package is auto-updated.
Last update: 2024-09-14 08:50:48 UTC
README
Zend Framework 2的Bower集成模块
本模块提供了一种方便的方法来管理在您的Zend Framework 2应用程序中通过Bower加载的JavaScript依赖项。
如果您的Zend Framework 2应用程序具有复杂的客户端和大量的外部JavaScript依赖项,Bower包管理器可能就是您的救星。但是,当您使用ZF2和Bower一起使用时,有一个主要的不便:通常,您希望在调试时您的JS依赖项位于单独的非混淆文件中,而在部署时您希望它们位于单个混淆文件中。您可以创建两个部分视图并通过模板映射来切换它们,但这感觉有点笨拙。本模块以更优雅的方式解决了这个问题。
获取Bower包
首先,您需要使用Bower本身或其替代品Bowerphp或其他您喜欢的任何方式,找到并获得您的应用程序所需的所有Bower包。然后您需要在您的配置中设置bower.bower_folder.os
设置 - 它应指向包含您刚刚安装的所有包的bower_components
文件夹。默认情况下,它应位于ZF2应用程序根目录内。
声明Bower包的包
接下来,您需要声明您想要使用的Bower包的包。每个包都是一组您希望在组合(用于部署)和分离(用于调试)状态下都有的Bower包。为此,您需要设置
bower.pack_folder.os
- 所有包文件应位于的文件系统文件夹bower.pack_folder.web
- 访问所有包文件的Web路径bower.debug_folder.os
- 所有调试包文件应位于的文件系统文件夹bower.debug_folder.web
- 访问所有调试包文件的Web路径bower.packs.<pack name>.modules
- 形成包的Bower包名称bower.packs.<pack name>.token
- 将附加到包文件路径上的字符串(强制浏览器重新加载)bower.packs.<pack name>.type
- 为脚本视图辅助程序脚本参数预定义的值bower.packs.<pack name>.attributes
- 为脚本视图辅助程序脚本参数预定义的值bower.debug_mode
- 标志,用于确定您是否正在调试应用程序,并希望每个包内容都在单独的文件中
大多数配置选项都有默认值(请参阅config/module.config.php
以获取详细信息),因此您在ZF2应用程序配置中需要声明的内容仅如下所示(示例以YAML格式提供,以便更容易阅读)
bower:
debug_mode: false
packs:
main:
token: 'f22f0d9703c2ef8dc9cc14f6286ee302'
modules:
- jquery-form
- jquery-mousewheel
- jquery.jscrollpane
- angular
- angular-animate
- angular-messages
- angular-ui-router
admin:
type: 'application/javascript'
modules:
- jquery
- angular
- bootstrap
polyfill:
attributes:
conditional: '[if IE 9]'
modules:
- html5shiv
注意包之间的隐藏依赖关系:模块尽力从bower.json
文件中检测包依赖关系,但其中一些并未声明(例如,在jquery.mousewheel
和jquery.scrollpane
之间)。
准备包内容
接下来您需要为打包文件夹和调试文件夹生成内容。这可以通过本模块提供的控制台命令 bower prepare-packs
完成(因此您需要执行类似 php ./public/index.php bower prepare-packs
的命令,这显然取决于您 ZF2 应用的结构)或者您也可以手动操作,如果您更喜欢使用更复杂的工具,如 grunt 或 gulp。在后一种情况下,您只需为打包文件夹中声明的每个打包准备文件 <pack name>.min.js
,并为调试文件夹中使用的每个 Bower 包准备文件 <bower package name>.js
。
在模板中使用打包内容
最后但同样重要的是,您需要使用本模块提供的 'bower' 视图助手将所有必需的 JS 文件添加到模板中的 inlineScript 或 headScript 容器中。例如,如果您声明了 'main' 打包,您可以编写 $this->bower('main');
来将所有主打包所需的 JS 文件追加到 inlineScript 视图助手。或者如果您想要正常的 IDE 自动完成功能
/** @var BowerModule\View\Helper\Bower $bower */
$bower = $this->plugin('bower');
$bower('main');
享受吧!
希望这个模块能对其他人有所帮助,除了我之外 :) 欢迎报告问题或建议新功能。