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