1

I'm generating a javascript on the server like and would like to run Google Clousure Compiler to be ran on the php source code of the script.

var jsvar = <?=$var ? true : false ?>;

Just wandering if there is any way in telling the compiler to skip optimazation of ? Like a regexp skip:

/<\?=.*?\?>/

Best regards,

Niclas

Niclas
  • 1,306
  • 5
  • 15
  • 28

2 Answers2

6

I have found that my code is much easier to maintain when I separate my client-side JavaScript from my server-side logic. Now I write my scripts such that my server-side processing emits initialization variables.

Example - Server Side:

<?php echo 'var mynamespace = {}; mynamespace.jsvar = "' . $var . '";'; ?>

And in my client-side javascript:

var mynamespace = window['mynamespace'] || {};
function MyFunction() {
  alert(mynamespace['jsvar']);
}
MyFunction();

Using this style, my client-side javascript compiles easily with Closure-compiler.

Chad Killingsworth
  • 14,360
  • 2
  • 34
  • 57
4

You can do this:

var jsvar = eval("<?=$var ? true : false ?>");

The compiler won't touch the contents of the string.

John
  • 5,443
  • 15
  • 21