articus/zf2-bower-module

方便使用Bower JavaScript包的Zend Framework 2。

1.0.2 2015-09-15 10:31 UTC

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.mousewheeljquery.scrollpane之间)。

准备包内容

接下来您需要为打包文件夹和调试文件夹生成内容。这可以通过本模块提供的控制台命令 bower prepare-packs 完成(因此您需要执行类似 php ./public/index.php bower prepare-packs 的命令,这显然取决于您 ZF2 应用的结构)或者您也可以手动操作,如果您更喜欢使用更复杂的工具,如 gruntgulp。在后一种情况下,您只需为打包文件夹中声明的每个打包准备文件 <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');

享受吧!

希望这个模块能对其他人有所帮助,除了我之外 :) 欢迎报告问题或建议新功能。