检查视图助手中的javascript文件?

时间:2016-09-06 17:30:44

标签: php zend-framework2

我有一个视图助手,需要jquery,jqueryui,knockout和其他一些js文件才能工作。有些页面已经引用了视图助手所需的所有js文件,有些页面并没有。

现在,我正在使用url来确定是否应该在视图助手中引用js文件。

有更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

我不是100%确定我以正确的方式理解您的问题,但我100%确定您需要以更好的方式管理您的javascript依赖项。

我通常使用require.js模块加载器来管理模板中包含的javascript文件。

要使用它,您需要下载require.js file并将其放在项目中的某个位置。我相信您希望将其放在./public/js/vendors目录中,而不是将其与您自己的代码放在一起。此外,您需要为其创建config文件,您可以在其中决定需要哪些javascript模块。

所以,这个概念很清楚:如果你有javascript文件,这些文件与项目的某些部分有关,例如admin panel,你应该创建一个config来加载这些文件。我通常为我的网络应用程序的admin panel部分配置一个配置,为user side设置另一个配置。

这个带有require.js的配置本身包含在模板中,如下所示:

<script data-main="./js/config-admin.js" src="./js/vendor/require.js"></script>

你需要记住,在每个模板上你应该只包含一个javascript - 包含require.js和它的配置。

配置通常如下所示:

require.config({
  baseUrl: '/public/js',
  paths: {
    'bootstrap': './vendor/bootstrap',
    'jquery': './vendor/jquery'
  },
  shim: {
    'bootstrap': ['jquery']
  }                                                                                                                   
});

require(['./app'], function (app) {
    console.log(app); //Here is smth that required module 'public/js/app.js' returns
    //Do some coding here if you wish, for example to start js application.
});

如果您需要更多使用示例,可​​以访问我的github配置文件,我使用它有几个存储库(symfony和zend2应用程序)。

答案 1 :(得分:0)

如果您不通过其他方式管理资产,HeadScript视图帮助程序将用作应在视图中呈现的脚本的集合。

考虑到JS文件中的帮助依赖,将它们放在帮助程序的工厂类中将是一个合理的位置。

class MyViewHelperFactory
{
    public function __invoke(ViewPluginManager $viewHelperManager, $name, $requestedName)
    {
        $headScriptHelper = $viewHelperManager->get('HeadScript');
        $headScriptHelper->appendFile('/js/file.js');

        return new MyViewHelper();
    }
}

当然有更好的方法来做这些事情;我个人喜欢Assetic