Zend框架2通过RdnRequireJs模块require.js

时间:2014-11-08 12:11:17

标签: zend-framework2 requirejs

我想进入require.js以更清洁的方式构建我的js文件。所以我偶然发现了require.js,经过一些挖掘和了解require.js的工作方式后,我意识到让它做我想要的开箱即用是一项相当艰巨的任务,因为它使用它& #39;自己的范围,什么不是。所以我认为它不适合zf2因为它的工作方式。

经过一次小小的搜索后,我偶然发现了一个2岁的zf2模块SxRequireJs。但是我不得不玩我的vhosts和mod重写我决定反对它并发现这个RdnRequireJs。现在我按照所有安装步骤进行了以下设置。

//application.config.php
//After successfully installing it trough composer I added the namespace
'modules' => array(
    'Application',
    'ZfcBase',
    'ZfcUser',
    'RdnRequireJS',
),

之后我在Bar.js目录中创建了一个/public文件,并在其中添加了这些定义。

  

//剥离.min的文件名以简化此处的调用

     

define([' ./ html5shiv'],function(shiv){       shiv.log(' Hello World!'); });

     

define([' ./ response'],function(resp){       resp.log(' Hello World!'); });

     

define([' ./ jquery'],function(jq){       jq.log(' Hello World!'); });

     

define([' ./ bootstrap'],function(twboot){       twboot.log(' Hello World!'); });

之后,我在我的global.php中覆盖了RdnRequireJS配置,如下所示:

return array(
'rdn_require_js' => array(
        'library' => '//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js',

        'config' => array(
            'baseUrl' => '/modules',

            'paths' => array(
                'App' => 'app/js'
            ),

            'packages' => array(
                'App'
            ),

            'shim' => array(),

            'deps' => array(),
        ),
    ),
);

现在我尝试使用viewHelper来获取我的内联脚本,就像在RdnRequireJS文档中建议的那样。

我在<?php $this->requireJS('Bar') ?>内和layout.phtml模块中调用了index.phtml但没有成功。 viewHelper返回&#39; NULL&#39;什么都没有任何错误消息。我将配置更改为本地require.js文件,但没有任何成功。然后将rdn_require_js configs baseUrl重命名为模块,而不是模块,但这并没有把我带到任何地方。

github似乎没有太多的贡献,也没有维基或任何问题。所以,我想知道你们中间是否有人真正开始运作?帮助会很有帮助。

感谢您的时间。

编辑:我忘了提到我还添加了文件夹app/js,它将我当前的js文件存储在我的项目根目录中。

1 个答案:

答案 0 :(得分:1)

尝试让它工作我确实得到它加载Bar.js和Foo.js文件。它尝试从config

中定义的public中的/ modules子文件夹加载它们
'config' => array(
        'baseUrl' => '/modules',

viewhelper本身不会返回任何输出。它只是添加了文件&#34; Bar&#34;给你的朋友。哪个requireJs会尝试从&#34; baseUrl&#34;

加载 然后

RdnRequireJS在你的html末尾添加脚本。看起来像这样的东西

var require = {"baseUrl":"\/modules","paths":{"App":"app\/js"},"packages":["App"],"shim":[],"deps":["Bar"]};

将加载哪个requireJs。

我希望这会对你有所帮助。