2

如何在 Pyramid/Pylon 框架中返回一些 javascript 代码或带有视图可调用对象的 javascript 文件?

4

2 回答 2

7

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

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 ...}

它与其他观点并没有真正的不同。

于 2012-06-29T08:03:07.963 回答
3

什么的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')

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

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

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

于 2012-06-29T10:02:27.320 回答