将jQuery包含在Symfony2中

Ale*_*tau 5 php jquery symfony

我是Symfony2框架的新手,并不完全了解如何使用javascripts以及如何以最佳方式包含它们.

我需要的:将jQuery脚本包含在每个页面中.

我拥有:我有这样的共同布局:

<!DOCTYPE html>
<html>
    <head>
        {% block javascripts %}{% endblock %}
    </head>
    <body>
        {% block body %}{% endblock %}

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

应该放置jquery.js.那么web/bundles/jquery呢?或者有一些特殊的官方jquery捆绑?我应该使用asset()以及如何使用?

Tou*_*uki 13

假设您的jquery.min.js位于 src/Acme/FooBundle/Resources/public/js/

你可以使用其中之一

<script type="text/javascript" src="{{ asset('bundles/acmefoo/js/jquery.min.js') }}"></script>
Run Code Online (Sandbox Code Playgroud)

要么

{% javascripts
    '@AcmeFooBundle/Resources/public/js/jquery.min.js'
%}
    <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Run Code Online (Sandbox Code Playgroud)

进入你的树枝模板.

确保之后安装了资产或运行此命令

php app/console assets:install web --symlink
Run Code Online (Sandbox Code Playgroud)


Kwa*_*adz 8

有几种方法可以在Symfony项目中包含jQuery.您可以:

1.使用前端程序包管理器(Bower)安装jQuery

Symfony的文件中指出:

Bower是前端依赖的依赖管理工具,如Bootstrap或jQuery.

如果尚未安装Bower,则可以使用npm(require node)全局安装它:

npm install -g bower
Run Code Online (Sandbox Code Playgroud)

根据Symfony文档:

捆绑包不应嵌入用JavaScript,CSS或任何其他语言编写的第三方库.

因此,我们将jQuery直接存储在web/可公开访问的目录中.要告诉Bower在哪里安装软件包,请在Symfony项目根目录中使用以下内容创建一个.bowerrc文件:

{
    "directory": "web/assets/vendor/"
}
Run Code Online (Sandbox Code Playgroud)

bower init在项目根目录中执行以创建将定义已安装包的bower.json.为每个问题键入enter以回答默认值(为模块类型选择'globals').

Bower已准备好在您的项目中安装jQuery:

bower install --save jquery
Run Code Online (Sandbox Code Playgroud)

现在,您可以在模板中包含jQuery:

<script src="{{ asset('assets/vendor/jquery/dist/jquery.min.js') }}"></script>
Run Code Online (Sandbox Code Playgroud)

目前Bower没有像Composer那样"锁定"功能.这就是为什么你应该提交Bower下载的资产,而不是将目录添加到.gitignore文件中.这可能在未来发生变化:凉亭/凉亭#1748.

2.使用Composer安装jQuery

即使Composer是PHP的依赖管理器,您也可以使用它来安装jQuery.

要使Composer能够安装组件/ jquery组件,首先需要添加组件安装程序:

composer require robloach/component-installer
Run Code Online (Sandbox Code Playgroud)

然后修改您的composer.json文件以包含:

"require": {
    "components/jquery": "3.1.1"
},
"config": {
    "component-dir": "web/assets/vendor"
},
Run Code Online (Sandbox Code Playgroud)

并执行composer install.这将在web/assets/vendor目录中安装jQuery .

然后,您可以在模板中包含jQuery:

<script src="{{ asset('assets/vendor/jquery/jquery.min.js') }}"></script>
Run Code Online (Sandbox Code Playgroud)

3.包含来自CDN的jQuery

例如,使用Google CDN:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

关于使用CDN的优缺点,建议您阅读本页.

在所有情况下:

为了确保你的脚本(需要jQuery)能够工作,必须首先加载jQuery.因此,根据您的页面加载要求,您应该:

  • 在你需要它之​​前包括jQuery,或者
  • 把它包括在<HEAD>,或
  • 在脚本中使用defer