javascript文件的变色龙模板?

2024-05-16 23:43:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个简单的金字塔应用程序,其中我使用JQuery处理AJAX请求。到目前为止,我的javascript代码都在chameleon模板中。现在我想把我的javascript提取到另一个位置(例如静态资源)。在

我的问题是,我发现我的javascript代码依赖于动态生成的内容,如下所示:

$.post("${request.route_url('my_view')}",{'data': 'some data'}, function(html){
    $("#destination").html(html);
});

动态元素是:

^{pr2}$

调用模板中请求对象的route_url方法。在

有没有一种公认的模式可以将这些javascript文件分离到它们自己的模板中,并为它们提供路由和视图,或者我只是将javascript保存在页面模板中?在


Tags: 代码模板应用程序url内容datahtml静态
1条回答
网友
1楼 · 发布于 2024-05-16 23:43:43

是的;您通常将特定于上下文的信息(如扩展的路由)放入模板中,然后从(静态)JavaScript库访问这些信息。在

包括上下文信息可以通过多种方式完成,具体取决于口味:

  1. 您可以在生成的HTML中对标记使用数据属性:

    <body data-viewurl="http://www.example.com/route/to/view">
        ...
    </body>
    

    然后,在静态JS代码加载中使用jQuery ^{} function

    var viewurl = $('body').data('viewurl');
    
  2. 使用虚构的LINK tag关系在文档头中包括链接:

    <head>
        <link rel="ajax-datasource" id="viewurl"
              href="http://www.example.com/route/to/view" />
        ...
    </head>
    

    可以使用$('link#viewurl').attr('href'),或$('link[rel=ajax-datasource]').attr('href')来检索。这只适用于URL信息。

  3. 直接在模板中生成JS变量,从静态代码中引用:

    <head>
        ...
        <script type="text/javascript">
           window.contextVariables = {
               viewurl = "http://www.example.com/route/to/view",
               ...
           };
        </script>
    </head>
    

    这些变量可以用contextVariables.viewurl直接引用。

相关问题 更多 >