<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marcos Fernández &#187; javascript</title>
	<atom:link href="http://www.marcosdev.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcosdev.com</link>
	<description>Programación de páginas web</description>
	<lastBuildDate>Mon, 28 Sep 2009 07:59:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cargar Google Maps de forma asíncrona</title>
		<link>http://www.marcosdev.com/cargar-google-maps-de-forma-asincrona/</link>
		<comments>http://www.marcosdev.com/cargar-google-maps-de-forma-asincrona/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 18:07:20 +0000</pubDate>
		<dc:creator>Marcos Fernández</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[asíncrona]]></category>
		<category><![CDATA[carga]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://www.marcosdev.com/?p=31</guid>
		<description><![CDATA[Google Maps ha sido uno de los grandes inventos que se sacó Google de la manga. Normalmente para cargar Google Maps situamos una etiqueta &#60;script&#62; dentro de nuestra página con nuestra id del api de Google Maps. Luego modificamos la etiqueta &#60;body&#62; para que cuando se cargue el documento, ejecute una función para inicializar el [...]]]></description>
			<content:encoded><![CDATA[<p>Google Maps ha sido uno de los grandes inventos que se sacó Google de la manga. Normalmente para cargar Google Maps situamos una etiqueta &lt;script&gt; dentro de nuestra página con nuestra id del api de Google Maps. Luego modificamos la etiqueta &lt;body&gt; para que cuando se cargue el documento, ejecute una función para inicializar el mapa.</p>
<p>El problema que ya comenté en un post anterior (Cargar Google Analytics una vez se haya cargado la página), es que esto, en según que momentos, puede enlentecer de una forma muy grave nuestra página, o por ejemplo, el mapa lo tenemos en una pestaña que por defecto no es visible. Por ello, podemos obtar por una solución que incrementará sustancialmente la velocidad de carga de nuestra página y que se encargará de que, una vez se haya cargado la página, proceder a la descarga y la inicialización del nuestro Google Map.</p>
<p>Esta no es la única utilidad, también podríamos cargar nuestro Google Map a voluntad mediante la pulsación de cualquier elemento. Esto nos permitiría que en una página no cargásemos el Google Map hasta que el usuario decidiese utilizaro, aliviando la carga de nuestra página.</p>
<p><span id="more-31"></span></p>
<p>Veamos un ejemplo práctico llamando a Google Maps una vez se ha terminado la carga de nuestra página:<br />
<a title="Cargar Google Maps al finalizar la carga del resto de la página" href="http://www.marcosdev.com/ejemplos/googlemaps_async/">http://www.marcosdev.com/ejemplos/googlemaps_async/</a></p>
<p>Lo primero de todo, veamos la estructura de nuestros ficheros:</p>
<p><a href="http://www.marcosdev.com/wp-content/imagen-1.png"><img class="aligncenter size-full wp-image-32" title="Estructura de ficheros" src="http://www.marcosdev.com/wp-content/imagen-1.png" alt="" width="160" height="77" /></a></p>
<p>Por un lado tenemos un fichero html en el cual hay una capa que utilizaremos para insertar nuestro Google Maps y las llamadas a los ficheros googleMaps.js y jquery.js.</p>
<pre>
<pre class="brush: html">
&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
   &lt;title&gt;Ejemplo de carga de forma asíncrona de Google Maps&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
   &lt;div id=&quot;mapa&quot; style=&quot;width:300px;height: 300px&quot;&gt;
      &lt;p style=&quot;text-align:center&quot;&gt;&lt;strong&gt;Cargando&lt;/strong&gt;&lt;/p&gt;
   &lt;/div&gt;
   &lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
   &lt;script type=&quot;text/javascript&quot; src=&quot;googleMaps.js&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</pre>
<p>Cómo podemos ver, el div con id &#8220;<em>mapa</em>&#8221; tiene un texto interior que pone &#8220;Cargando&#8221;. Esto es para que mientras se carga nuestro Google Maps el visitante pueda saber que el navegador está trabajando. Después del div, insertamos las dos llamadas a nuestros ficheros javascript. El primero es la librería jQuery que nos ayudará realizar la petición de carga del conjunto de ficheros necesarios para cargar Google Maps.</p>
<p>En el fichero googleMaps.js tenemos el código necesario para realizar la carga del mapa:</p>
<pre>
<pre class="brush: jscript">
function cargarMapa(){
   if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById(&quot;mapa&quot;));
      map.setCenter(new GLatLng(39.578678,2.646021), 16);
   }
};

$(document).ready(function(){
   var api=&#039;ABQIAAAAOxTvdJxbyGuGB8_UUEe52xRHT0E5MDpBZnfhvo0jhLIefK70hRTYIol4_Lr75EWTtT9VjcaZzY2QWg&#039;;
   $.getScript(&#039;http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=&#039;+api+&#039;&amp;async=2&amp;callback=cargarMapa&#039;);
});
</pre>
</pre>
<p>Lo primero que vemos es una función llamada &#8220;<em>cargarMapa</em>&#8221; la cual será llamada una vez tengamos cargada la librería de Google Maps. Esta función únicamente se encarga de mostrar nuestro Google Maps en un determinado div (en nuestro caso el div llamado &#8220;<em>mapa</em>&#8220;) y situarlo en una coordenada (<em>new GLatLng(39.578678,2.646021)</em>) con un determinado zoom (<em>16</em>).</p>
<p>La parte interesante viene justo después. Vemos el comienzo típico de cualquier fichero js que jQuery ( <em>$(document).ready(function(){</em> ) y justo después dos líneas de código; la primera es una variable en la cual, por cuestiones de tener un código más legible, guardo el clave del api de Google Maps. Y en el segundo realizo la petición, que a simple vista, es la misma url que normalmente nos da google para poner en las etiquetas <em>&lt;script&gt;</em>. Pero si nos fijamos, existe dos diferencias. Justo al final de la línea vemos que hay dos parámetros de url nuevos: <em>&amp;asyn=2&amp;callback=cargarMapa</em>. El primero (<em>async=2</em>) permite llamara de forma asíncrona (cuando nosotros queramos y no siempre cuando se carga el documento al completo), y el segundo (<em>callback=cargarMapa</em>) es el parámetro que le dice a Google Maps que función debe ejecutar una vez tenga todo lo necesario cargado para ser ejecutado.</p>
<p>Ponerlo en práctica es tremendamente sencillo y podemos sacarle mucha utilidad al tema, como por ejemplo, la siguiente demostración dónde cargamos el mapa cuando alguien hace clic sobre un botón:</p>
<p><a title="Cargar Google Maps al hacer clic" href="http://www.marcosdev.com/ejemplos/googlemaps_async/index2.html">http://www.marcosdev.com/ejemplos/googlemaps_async/index2.html</a></p>
<p>La diferencia entre el primer ejemplo y este segundo, reside en que la capa &#8220;mapa&#8221; la tengo escondida y que en vez de cargar el mapa directamente, le agrego una funcionalidad al botón para que este lo carge cuando hagan clic sobre él, y además, haga visible la capa:</p>
<pre>
<pre class="brush: html">
&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
   &lt;title&gt;Ejemplo de carga de forma asíncrona de Google Maps&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
   &lt;div id=&quot;mapa&quot; style=&quot;width:300px;height:300px;display:none;&quot;&gt;
      &lt;p style=&quot;text-align:center&quot;&gt;&lt;strong&gt;Cargando&lt;/strong&gt;&lt;/p&gt;
   &lt;/div&gt;
   &lt;input type=&quot;button&quot; name=&quot;bCargar&quot; id=&quot;bCargar&quot; value=&quot;Cargar Mapa&quot; /&gt;
   &lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
   &lt;script type=&quot;text/javascript&quot; src=&quot;googleMaps.js&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</pre>
<pre>
<pre class="brush: jscript">
function cargarMapa(){
   if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById(&quot;mapa&quot;));
      map.setCenter(new GLatLng(39.578678,2.646021), 16);
  }
};

$(document).ready(function(){

   //Agregamos evento click al botón
   $(&#039;#bCargar&#039;).click(function(){
      //Mostramos la capa mapa
      $(&#039;#mapa&#039;).show();
      var api=&#039;ABQIAAAAOxTvdJxbyGuGB8_UUEe52xRHT0E5MDpBZnfhvo0jhLIefK70hRTYIol4_Lr75EWTtT9VjcaZzY2QWg&#039;;
      $.getScript(&#039;http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=&#039;+api+&#039;&amp;async=2&amp;callback=cargarMapa&#039;);
   });
});
</pre>
</pre>
<p>Espero que les sea útil</p>
<p>P.D.: Los estilos de la capa &#8220;mapa&#8221; están escritos utilizando el atributo style. Esto no es una buena práctica; hay que utilizar ficheros CSS de estilos. Lo he hecho así para hacerlo más visible para todos.</p>
<p>P.D2.: En el segundo ejemplo se podría insertar la capa &#8220;mapa&#8221; en tiempo real sin necesidad de que esté en el código, pero sería menos didácticos para aquellas personas que tengan un nivel bajo de Javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcosdev.com/cargar-google-maps-de-forma-asincrona/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cargar Google Analytics una vez se haya cargado la página</title>
		<link>http://www.marcosdev.com/cargar-google-analytics-una-vez-se-haya-cargado-la-pagina/</link>
		<comments>http://www.marcosdev.com/cargar-google-analytics-una-vez-se-haya-cargado-la-pagina/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 07:31:05 +0000</pubDate>
		<dc:creator>Marcos Fernández</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[google analytics]]></category>

		<guid isPermaLink="false">http://www.marcosdev.com/?p=27</guid>
		<description><![CDATA[Muchas veces nos encontramos con la situación de que a una página le cuesta terminar de cargar por culpa del Google Analytics. Yo lo he sufrido en mis propias carnes con proyectos de cierto tamaño. A pesar de la granja inmensa y poderosísima de servidores de Google, muchas veces por razones varias, este caso se [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces nos encontramos con la situación de que a una página le cuesta terminar de cargar por culpa del Google Analytics. Yo lo he sufrido en mis propias carnes con proyectos de cierto tamaño. A pesar de la granja inmensa y poderosísima de servidores de Google, muchas veces por razones varias, este caso se da. También afecta a la situación de que si utilizas frameworks de Javascript como jQuery, el Google Analytics te para la carga del resto de elementos hasta que él no haya terminado su carga. El problema es que no podemos guardar en nuestro servidor el fichero ga.js o el fichero urchin.js que solicitamos a Google.</p>
<p>Podemos solventar el problema de una manera muy sencilla, cargar Google Analytics una vez se haya cargado el resto de las páginas. Esta situación tiene una ventaja muy grande, si Google Analytics se pone tontito, el resto de la página puede vivir en paz. A pesar de que lo voy a explicar a continuación se puede realizar de otras formas, voy a utilizar el framework jQuery por su sencillez y potencia.</p>
<p><span id="more-27"></span></p>
<p>Lo primero que debemos hacer es incluir la librería jquery. Yo todas las inclusiones de ficheros js las hago al final, justo antes de la etiqueta de cierre de body (Norma de aceleración de velocidad de carga de páginas web de YSlow).</p>
<pre id="line255">
<pre class="brush: html">
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
</pre>
</pre>
<p>Y justo debajo introducimos el siguiente código</p>
<pre id="line255">
<pre class="brush: html">
&lt;script type=&quot;text/javascript&quot;&gt;
   $(document).ready(function(){
      $.getScript(&#039;http://www.google-analytics.com/ga.js&#039;,function(){
         if (typeof(_gat) == &#039;object&#039;){
            var pageTracker = _gat._getTracker(&#039;UA-1806963-8&#039;);
            pageTracker._initData();
            pageTracker._trackPageView();
         }
      });
   });
&lt;/script&gt;
</pre>
</pre>
<p>Dentro del segundo bloque de código debes substituir UA-1806963-8 por tu ID de Google Analytics. Si queréis ver un ejemplo funcionando podéis visitar la siguiente página: <a title="Página de oferta turística complementaria" href="http://www.holjoy.com">http://www.holjoy.com</a></p>
<p>Un saludo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcosdev.com/cargar-google-analytics-una-vez-se-haya-cargado-la-pagina/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Videotutorial &#8211; Reducir javascript con PHP</title>
		<link>http://www.marcosdev.com/videotutorial-reducir-javascript-con-php/</link>
		<comments>http://www.marcosdev.com/videotutorial-reducir-javascript-con-php/#comments</comments>
		<pubDate>Fri, 02 May 2008 19:34:50 +0000</pubDate>
		<dc:creator>Marcos Fernández</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[videotutoriales]]></category>
		<category><![CDATA[optimizar]]></category>
		<category><![CDATA[reducir]]></category>
		<category><![CDATA[screecast]]></category>
		<category><![CDATA[videotutorial]]></category>

		<guid isPermaLink="false">http://www.marcosdev.com/?p=8</guid>
		<description><![CDATA[Videotutorial  sobre el tutorial para reducir ficheros javascript con PHP.
Duración: 13:03


Descarga en formato QuickTime 
]]></description>
			<content:encoded><![CDATA[<p>Videotutorial  sobre el tutorial para reducir ficheros javascript con PHP.</p>
<p>Duración: 13:03</p>
<p><span id="more-8"></span></p>
<p><code><img src="http://www.marcosdev.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></code></p>
<p><a href="http://www.marcosdev.com/videos/reducir-js-php.mov">Descarga en formato QuickTime </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcosdev.com/videotutorial-reducir-javascript-con-php/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://www.marcosdev.com/videos/reducir-js-php.mov" length="19057131" type="video/quicktime" />
<enclosure url="http://www.marcosdev.com/videos/reducir-js-php.flv" length="49532051" type="video/x-flv" />
		</item>
		<item>
		<title>Reducir ficheros javascript con PHP</title>
		<link>http://www.marcosdev.com/reducir-ficheros-javascript-con-php/</link>
		<comments>http://www.marcosdev.com/reducir-ficheros-javascript-con-php/#comments</comments>
		<pubDate>Fri, 02 May 2008 14:01:46 +0000</pubDate>
		<dc:creator>Marcos Fernández</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[optimizar]]></category>
		<category><![CDATA[reducir]]></category>

		<guid isPermaLink="false">http://www.marcosdev.com/?p=5</guid>
		<description><![CDATA[Uno de los problemas más habituales hoy en día en el desarrollo de páginas web es la utilización de múltiples ficheros Javascript. Estos ficheros a la mínima que la página sea algo grande, toman un peso muy significativo. Una de las premisas que siempre debemos tener en la cabeza es hacer que nuestra página cargue [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los problemas más habituales hoy en día en el desarrollo de páginas web es la utilización de múltiples ficheros Javascript. Estos ficheros a la mínima que la página sea algo grande, toman un peso muy significativo. Una de las premisas que siempre debemos tener en la cabeza es hacer que nuestra página cargue lo más rápido posible. (El addon para <a title="Página oficial de navegador Firefox" href="http://www.mozilla-europe.org/es/products/firefox/">Firefox</a> llamado <a title="Página oficial de YSlow" href="http://developer.yahoo.com/yslow/">YSlow</a> que se integra con <a title="Página oficial del addon Firebug" href="http://www.getfirebug.com/">Firebug</a> es muy útil para optimizar nuestra página).</p>
<p>Como toda buena práctica de programación, nuestro código incluye sangrías y comentarios. Si no ponemos sangrías nuestro código se hace incomprensible, y si le quitamos los comentarios, dentro de unos meses nos acordaremos de aquel día que decidimos no escribir una frase aclaratoria de que hacía aquella función.</p>
<p><span id="more-5"></span></p>
<p>Por ello, existen multitud de herramientas que permite que a partir de un fichero javascript nuestro, se genere un fichero javascript reducido, es decir, sin espacios, sin comentarios, e incluso ofuscado (cambia nombre a las variables por letras o números y trata de reducir la comprensión del código por alguien que quiera copiarnos o analizarnos para un ataque).</p>
<p>Estas herramientas el problema que tienen es que debes tener un fichero para el desarrollo y luego de haber hecho los cambios oportunos, debes generar el fichero reducido.</p>
<p>En este tutorial veremos como podemos reducir en tiempo real los ficheros Javascript que precise nuestro documento mediante PHP (es necesario tener la versión 5). Además, si nuestra página utiliza más de un fichero js (javascript), lograremos reducir las peticiones al mínimo. Por ejemplo, nuestra página utiliza tres ficheros js nuestros, son tres peticiones. Lograremos reducirlo a únicamente una petición. Caso aparte es cuando debes realizar la inclusión de un fichero js como el de Google Maps, con el cual no puedes utilizar esta técnica.</p>
<p>Vamos manos a la obra.</p>
<p>Lo primero que necesitamos es descargar una librería llamada Jsmin-php. Podéis encontrarlo en su <a title="Página web Jsmin-php" href="http://code.google.com/p/jsmin-php/">página web</a>, y justo en la derecha hay un botón para accionar la <a title="Descarga directa de Jsmin-php" href="http://jsmin-php.googlecode.com/files/jsmin-1.1.1.php">descarga</a>.</p>
<p>Descargamos el dichero jsmin-1.1.1.php (esta era la versión al momento de hacer este tutorial).</p>
<p>Supongamos que tenemos la siguiente estructura de ficheros:</p>
<p style="text-align: center;"><a href="http://www.marcosdev.com/wp-content/imagen-2.png"><img class="alignnone size-medium wp-image-6 aligncenter" title="Estructura de ficheros" src="http://www.marcosdev.com/wp-content/imagen-2.png" alt="" width="143" height="87" /></a></p>
<p style="text-align: left;">En la imagen podemos observar que tenemos un fichero index.php en el cual hay el siguiente código:</p>
<pre class="brush: html">
&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/meta&gt;&lt;/head&gt;
&lt;body&gt;
&lt;p id=&#039;parrafo&#039;&gt;Hola&lt;/p&gt;

&lt;script type=&#039;text/javascript&#039; src=&#039;test.js&#039;&gt;&lt;/script&gt;
&lt;script type=&#039;text/javascript&#039; src=&#039;test2.js&#039;&gt;&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Cómo se puede observar es un documento en blanco con un párrafo en el cual está escrito la palabra Hola. Este párrafo tiene como identificador único el id &#8216;parrafo&#8217;.</p>
<p>Más adelante podemos ver la llamada a dos ficheros js externos al documento. Cómo se puede apreciar, he puesto las inclusiones al final del documento, justo antes del final del body. Esto es una de las pautas a la hora de optimizar el rendimiento de una página web. En otro tutorial trataremos de una manera más profunda este tema.</p>
<p>El contenido de los ficheros js es el siguiente</p>
<p>Fichero test.js</p>
<pre class="brush: jscript">
/*
Esto es un fichero de prueba js
Conjunto de comentarios que explican el funcionamiento de este js
El código siguiente sustuirá el texto interior del párrafo identificado con el id parrafo
*/

document.getElementById(&#039;parrafo&#039;).innerHTML=&#039;esto funciona&#039;;
</pre>
<p>Fichero test2.js</p>
<pre class="brush: jscript">
//Comentario: esto va a mostrar un mensaje de alerta
alert(&#039;hola mundo&#039;);
</pre>
<p>El código del fichero test.js lo que hace es buscar dentro del documento un elemento que tenga como identificador &#8216;parrafo&#8217; y le sustituye su contenido por un texto &#8216;esto funciona&#8217;.</p>
<p>El código del fichero test2.js lo que hace es mostrar un mensaje.</p>
<p>En ambos documentos se pueden ver muchos comentarios. Estos comentarios están bien para nosotros pero  lo que hacen es hacer más lenta la carga de la página ya que el fichero tiene un mayor fichero.</p>
<p>Vamos a comenzar a solucionar este problema.</p>
<p>Para ello, lo primero que debemos hacer es crear un fichero php al cual le podemos llamar scripts.php. Este fichero tiene la función de solicitar los ficheros js que necesitemos, reducirlos y generar un documento único.</p>
<p>Para que el contenido final del documento sea entendido por el navegador como código javascript y no otro tipo de lenguaje debemos incluir como primera línea de nuestro fichero scripts.php el siguiente código:</p>
<pre class="brush: php">

header(&quot;content-type: application/x-javascript&#039;);
</pre>
<p>Ahora debemos incluir la librería jsmin que hemos descargado y la cual se encargará de optimizar el código:</p>
<pre class="brush: php">

require_once &#039;jsmin-1.1.1php&#039;;
</pre>
<p>La parte que viene ahora es muy sencilla. Debemos ejecutar la siguiente línea por cada fichero js que queramos llamar. En nuestro caso será dos veces:</p>
<pre class="brush: php">

echo JSMin::minify(file_get_contents(&#039;test.js&#039;));

echo JSMin::minify(file_get_contents(&#039;test2.js&#039;));
</pre>
<p><em><strong>JSMin:minify</strong></em> es la orden que se encarga de reducir un determinado código. <em><strong>file_get_contents</strong></em> lo que hace es obtener el contenido de un determinado fichero. Por lo tanto esta orden lo que hace es obtiene el código de nuestros ficheros js, lo reduce y mediante la orden echo lo vuelca en pantalla, en nuestro caso, produciendo un nuevo fichero js.</p>
<p>El resultado es el siguiente:</p>
<pre class="brush: jscript">

document.getElementById(&#039;parrafo&#039;).innerHTML=&#039;esto funciona&#039;;
alert(&#039;hola mundo&#039;);
</pre>
<p>Cómo se puede observar ya no hay comentarios. Si el código tuviese sangrías o fuera más complejo, se podría observar muchas más diferencias.</p>
<p>Ahora ya sólo nos queda retocar el fichero index.php. Vamos a decirle que en vez de utilizar los dos ficheros js, utilice únicamente el fichero php que hemos generado. Con ello matamos dos pájaros de un tiro: reducimos las peticiones de 2 ficheros a 1, y generamos código reducido. Para ello sustituimos las siguientes líneas:</p>
<pre class="brush: html">

&lt;script type=&#039;text/javascript&#039; src=&#039;test.js&#039;&gt;&lt;/script&gt;

&lt;script type=&#039;text/javascript&#039; src=&#039;test2.js&#039;&gt;&lt;/script&gt;
</pre>
<p>Por esta</p>
<pre class="brush: html">

&lt;script type=&#039;text/javascript&#039; src=&#039;scripts.php&#039;&gt;&lt;/script&gt;
</pre>
<p>Listo. Ya tenemos nuestra página web con el js reducido y además hemos reducido el número de peticiones.</p>
<p>Espero que esto os pueda ser útil.</p>
<p><a href="http://www.marcosdev.com/wp-content/reducir-js-php.zip">Ficheros del tutorial Reducir Js con PHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcosdev.com/reducir-ficheros-javascript-con-php/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
