gpt4 book ai didi

javascript - [交响乐+ Twig ]

转载 作者:行者123 更新时间:2023-11-28 05:13:36 28 4
gpt4 key购买 nike

我有基本模板(base.html.twig),其中包含动态生成的 js 链接:

<script type="text/javascript">
<script type="text/javascript" src="{{ path('renderJs') }}"></script>
</script>

以及呈现此 JS 的 Action:

/**
* @Route("/scripts.js",
* name="renderJs")
*/
public function renderJsAction(Request $request)
{
return new Response(
$this->renderView(
"AcmeBundle:Default:renderJs.js.twig",
array('foo' => 'bar')
),
200,
array('Content-Type' => 'text/javascript')
);
}

但我希望渲染 JS 具有与基本模板相同的 Twig 上下文(在 renderJs.js.twig 中具有与 base.html.twig 中相同的变量)。那可能吗?有什么想法可以解决这个问题吗?

最佳答案

这就是一切的运作方式(据我所知):

  1. base.html.twig 进行渲染,将 renderJS 操作路由的 URL 放入脚本标记的源中
  2. 用户浏览器加载生成的页面,并在脚本标记中查找 renderJS 操作的 URL,然后向服务器发出另一个请求以获取该 URL。

因此,在这种情况下有两个请求:一个请求获取 base.html.twig 渲染,另一个请求获取 renderJS URL 提供的脚本文件。当服务器收到第二个请求时,第一个请求的上下文就消失了。

我可以想到两个选择。选项 1 是重新生成上下文(理想情况下通过设置一些类或方法来在两个地方执行此操作)。如果您想对 javascript 文件进行第二次请求(例如它是否可以缓存)并且生成上下文不是非常消耗资源,那么这很好。

选项 2 是跳过该操作的需要,并将 render.js.twig 模板作为内联 JavaScript 包含在 base.html.twig 模板中。如果创建上下文的成本确实很高并且 javascript 很轻且永远不会被缓存,那么这可能只是一个好主意(但最好让文件尽可能多地缓存)。

让我知道它们听起来如何以及它们如何适用于您,我可以深入了解更多细节。

关于javascript - [交响乐+ Twig ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168447/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com