对于JavaScript文件变色龙模板?(Chameleon templates for javas

2019-06-25 16:30发布

我开发我在哪里使用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在我的网页模板识别的模式?

Answer 1:

是; 你一般把像扩大航线具体情况的信息转换成模板,并访问您的(静态)JavaScript库信息。

包括上下文信息可以通过多种方式来完成,依口味:

  1. 你可以在你生成的HTML使用在标签的数据属性:

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

    然后您可以在与你的静态JS代码负荷的jQuery .data()函数 :

     var viewurl = $('body').data('viewurl'); 
  2. 用一个虚构的LINK标签的关系,包括在文档头部链接:

     <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



文章来源: Chameleon templates for javascript files?