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

von4xj4u  于 2024-01-07  发布在  jQuery
关注(0)|答案(1)|浏览(141)

使用webpack-encore,可以将脚本文件无错误地添加到格式正确的JavaScript块中的{{ encore_entry_script_tags('add-food') }}模板中。不清楚的是如何使用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 %}
{# ... #}

xmakbtuz

xmakbtuz1#

你在这里的问题,在问题中显示的错误,不一定是关于创建一个全局变量。
错误来自add-food.js,它是在app.js中创建全局$变量之前导入的。
您可以尝试在创建全局变量后导入add-food.js,但在这种情况下,您应该做的不是创建全局变量,而是在每个需要它的脚本上导入import $ from 'jquery'
这个文件仍然只被请求一次,而且你不会创建一个不必要的全局变量。(无论如何,在你的例子中,应该创建全局变量,尽管我可能会像文档中那样做

相关问题