javascript文件的变色龙模板?

javascript文件的变色龙模板?,javascript,python,pyramid,chameleon,Javascript,Python,Pyramid,Chameleon,我正在开发一个简单的金字塔应用程序,其中我使用JQuery来处理AJAX请求。到目前为止,我的javascript代码都在变色龙模板中。现在我想将javascript提取到另一个位置(例如,作为静态资源) 我的问题是,我发现我的javascript代码依赖于动态生成的内容,如下所示: $.post("${request.route_url('my_view')}",{'data': 'some data'}, function(html){ $("#destination").html(

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

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

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

"${request.route_url('my_view')}"
调用模板中请求对象的route_url方法


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

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

根据口味的不同,可以通过多种方式包含上下文信息:

  • 您可以在生成的HTML中的标记上使用数据属性:

    
    ...
    
    然后,在静态JS代码加载中:

    var viewurl=$('body')。数据('viewurl');
    
  • 使用组合关系在文档头中包含链接:

    
    ...
    
    可以使用
    $('link#viewurl').attr('href')
    $('link[rel=ajax数据源]).attr('href')
    检索。这只适用于URL信息

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

    
    ...
    window.contextVariables={
    viewurl=”http://www.example.com/route/to/view",
    ...
    };
    
    这些变量可以通过
    contextVariables.viewurl
    直接引用


  • 我选择了选项2,因为它似乎最适合我正在做的事情。