如何在金字塔/塔中返回 JavaScript

how to return javascript in Pyramid/Pylon

本文关键字:返回 JavaScript 金字塔      更新时间:2023-09-26

如何在金字塔/pylon框架中返回一些javascript代码或带有视图可调用的javascript文件?

您可以像使用任何可调用的模板/视图一样执行此操作。这并没有什么不同。 我仍然建议这样设置内容类型。

from pyramid.view import view_config
@view_config(name='javascript', renderer='templates/javascript.mako')
def my_js_view(request):
    request.response.content_type = 'application/javascript'
    return {... params ...}

它与其他观点并没有真正的区别。

什么样的JavaScript?动态生成,还是静态生成?

静态

时,只需使用静态视图像 CSS 和图像一样提供它。

如果是动态的,请使用模板生成 javascript 文件并使用正确的内容类型提供服务;下面是使用 Chameleon 文本渲染器的示例,但您当然可以使用自己喜欢的模板引擎:

@view_config(name='generated_javascript', renderer='templates/generated_javascript.txt')
def generated_javascript(request):
    request.response.content_type = 'text/javascript'
    # The returned dict holds items your template can access when
    # generating the javascript.
    return dict(foo='bar', spam='eggs')

请注意,我在 Response 对象上设置了 content_type 属性,以确保浏览器识别您生成的 JavaScript。

然后,您的模板可以访问您返回的dict中的值以及一些额外的系统值,就像任何其他模板一样。

请注意,最佳做法是尽量减少动态 JavaScript 的使用,并尽可能多地静态提供动态 JavaScript。任何(动态)上下文信息都应该包含在您生成的 HTML 中,然后您的静态 JavaScript 可以加载和使用。然后,您的静态JavaScript可以被所有访问者缓存,从而大大提高性能。请参阅JavaScript文件的变色龙模板?以获取有关如何实现这一目标的一些提示。