代码之家  ›  专栏  ›  技术社区  ›  geoB

如何使用Symfony的AssetMapper将jQuery作为全局变量导入?

  •  -1
  • geoB  · 技术社区  · 1 年前

    具有 webpack-encore 可以将脚本文件无错误地添加到具有的模板中 {{ encore_entry_script_tags('add-food') }} 在正确形成的JavaScript块内。完全不清楚的是如何使用AssetMapper实现相同的效果。我在浏览器控制台上得到的最接近的东西是这样的: $ is not defined at add-food-81afe070e8be2f50bb5e13fa8d7573cf.js:1:1 .

    我尝试了各种各样的选择,但都没有成功。我错过了什么?

    当前环境:

    ../assets/vendor/installed.php :

    // ...
      'jquery' => 
      array (
        'version' => '3.7.1',
        'dependencies' => 
    //...
    

    ../assets/app.js :

    import './bootstrap.js';
    
    import './styles/app.css'
    import './styles/jquery-ui.min.css'
    import 'bootstrap/dist/css/bootstrap.min.css';
    import './add-food.js';
    
    import jquery from 'jquery';
    const $ = jquery;
    window.$ = $;
    

    base.html.twig 包括:

    {# ... #}
    {% block javascripts %}
        {% block importmap %}{{ importmap('app') }}{% endblock %}
    {% endblock %}
    {# ... #}
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   yivi SilverLink    1 年前

    在问题中显示的错误中,您的问题不一定是关于创建全局变量。

    错误来自 add-food.js ,是导入的 之前 你创造了全球 $ 中的变量 app.js .

    你可以尝试导入 add-food.js 在创建全局变量之后,但在这种情况下,您应该做的不是创建全局变量 import $ from 'jquery' 在每个需要它的脚本上。

    该文件仍然只会被请求一次,并且不会创建不必要的全局变量。(无论如何,在您的示例中,应该创建全局变量,尽管我可能会像在文档中那样做