¿Plantillas de camaleón para archivos javascript?

Estoy desarrollando una aplicación piramidal simple donde estoy usando JQuery para hacer solicitudes AJAX. Hasta ahora he tenido mi código javascript dentro de mis plantillas de camaleón. Ahora quiero extraer mi javascript en otra ubicación (por ejemplo, como recursos estáticos).

Mi problema es que encuentro que mi código javascript se basa en contenido generado dinámicamente como:

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

El elemento dynamic es:

 "${request.route_url('my_view')}" 

Que llama al método route_url del objeto de solicitud dentro de la plantilla.

¿Existe un patrón reconocido para separar dichos archivos javascript en sus propias plantillas y proporcionarles rutas y vistas o simplemente guardo mi javascript en la plantilla de mi página?

Sí; por lo general, coloca información específica del contexto como rutas expandidas en las plantillas y accede a esta información desde sus bibliotecas de JavaScript (estáticas).

La inclusión de la información de contexto se puede hacer de varias maneras, según el gusto:

  1. Podría usar un atributo de datos en una etiqueta en su HTML generado:

      ...  

    que luego, en su código estático JS carga con la función jQuery .data() :

     var viewurl = $('body').data('viewurl'); 
  2. Utilice una relación de etiqueta LINK creada para incluir enlaces en el encabezado del documento:

       ...  

    que se puede recuperar usando $('link#viewurl').attr('href') , o $('link[rel=ajax-datasource]').attr('href') . Esto solo funciona para la información de URL.

  3. Genere variables JS directamente en su plantilla, a las que se hará referencia desde su código estático:

      ...   

    y estas variables son referibles directamente con contextVariables.viewurl .