I'm creating a web application. I've written HTML code on the server before and have decided templates are best, because whatever language, writing code that generates HTML is always worse than making a template that has holes you can fill with your data. This is why I now love Perl's Template Toolkit.
Funny thing is, making the code client-side doesn't make it much better. For now, I'm using Mustache.
There are many things you can easily do in JavasScript, but multi-line variables are not pretty in JavaScript, so it's far better to have external templates and import them. This is my current code to import a list of templates, which so far are
Funny thing is, making the code client-side doesn't make it much better. For now, I'm using Mustache.
There are many things you can easily do in JavasScript, but multi-line variables are not pretty in JavaScript, so it's far better to have external templates and import them. This is my current code to import a list of templates, which so far are
div_request.m
, div_sample.m
and div_final.m
.- var accordion_request = {} ;
- accordion_request.m_path = '/dev/dave' ;
- accordion_request.templates = {} ;
- accordion_request.template_fetch = []
- accordion_request.template_fetch.push( 'div_request' ) ;
- accordion_request.template_fetch.push( 'div_sample' ) ;
- accordion_request.template_fetch.push( 'div_final' ) ;
- accordion_request.get_templates = function ( ) {
- for ( var t in accordion_request.template_fetch ) {
- var template = accordion_request.template_fetch[t] ;
- var name = [ template , 'm' ].join( '.' )
- var url = [ accordion_request.m_path , name ].join('/') ;
- console.log( template ) ;
- console.log( name ) ;
- console.log( url ) ;
- $.get( url , function ( data ) {
- console.log( ': ' + url ) ;
- accordion_request.templates[template] = data ;
- } ) ;
- }
- }
Do you see the problem?
JavaScript does not block. So, we convert
div_request
to div_request.m
to /dev/dave/div_request.m
, then we set the jQuery $.get()
off to get that url, then we convert div_sample
to div_sample.m
to /dev/dave/div_sample.m
and set that off to $.get()
, then jump back to div_final
.By the time
$.get()
starts working, url
is "/dev/dave/div_final.m"
, so we get a console log that looks like:- div_sample
- div_sample.m
- /dev/dave/div_sample.m
- div_request
- div_request.m
- /dev/dave/div_request.m
- div_final
- div_final.m
- /dev/dave/div_final.m
- : /dev/dave/div_final.m
- : /dev/dave/div_final.m
- : /dev/dave/div_final.m
I now believe I need to write a function that takes
url
and gets and writes it, so that it has it's own scoped url
rather than using the one in get_templates()
. We will see.
No comments:
Post a Comment