javascript - JavaScript 文件的变色龙模板?

标签 javascript python pyramid chameleon

我正在开发一个简单的 Pyramid 应用程序,我在其中使用 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 文件分离到它们自己的模板中并为它们提供路由和 View ,或者我只是将我的 javascript 保留在我的页面模板中?

最佳答案

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

根据喜好,可以通过多种方式包含上下文信息:

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

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

    然后,您在静态 JS 代码中加载 jQuery .data() 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 进行引用。

关于javascript - JavaScript 文件的变色龙模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11155947/

相关文章:

javascript - jQuery:我的下拉菜单的 getPos

Javascript clearInterval 不清除

python - Tkinter 文本标签选择/用户高亮颜色

java - 寻找没有 GIL 的强/显式语言

javascript - Pyramid json View ajax调用

python - 为什么在单个服务器上的应用程序的多个实例之间进行负载平衡?

python - 如何在 Pyramid 休息框架中添加您的应用程序特定设置?

javascript - 如何查询 MongoDB 的 2 个范围和文本搜索?

javascript - 防止在按Enter键时提交表单

python - py.test 未正确从 conftest 导入模块 - 失败并显示 ConftestImportFailure : ModuleNotFound