Comunidad de diseño web y desarrollo en internet online

Como importar un archivo js dentro de otro js

Citar            
MensajeEscrito el 11 May 2014 10:12 pm

Código :

Para incluir un script de javascript externo a una pagina web tenemos a disposicion la etiqueta <script> pero dentro del archivo script no tenemos la opción de importar como se puede hacer en css con @import  o en php con include o require.

Por eso les traigo una solución simple para que podamos importar archivos desde nuestros scripts.

Digamos que tenemos un archivo principal javascript y varios archivos externos que contiene diferentes funciones.

Primero vamos a crear el archivo html principal donde se mostraran los scripts.

index.html

Código :

<!DOCTYPE html>
<html>
<head></head>
<body>
<script id="myscript" type="text/javascript" src="js/myscript.js" >
</body>
</html>


Creamos nuestra etiqueta script y le asignamos un id (Valido en html5 - Compatible con IE7+).

myscript.js

Dentro del archivo myscript.js agregamos estas lineas.

Código :

function import(url){
  var script = document.createElement('script');
  var parentScript = document.getElementById('myscript');
  parentScript = parentScript.src;
  parentScript = parentScript.split('/');
  parentScript.pop();
  parentScript = parentScript.join();
  parentScript = parentScript.replace(/,/gi, '/');
  script.src = parentScript+url;
  var body = document.body;
  body.appendChild(script);
}

import('script1.js');
import('script2.js');
import('script3.js');
import('script4.js');



Creamos una función llamada import con parametro url.
Declaramos la variable script la cual crearemos un nuevo elemento script

Código :

 var script = document.createElement('script');


Seleccionamos el id de nuestra etiqueta script

Código :

var parentScript = document.getElementById('myscript');


Seleccionamos la ruta de nuestro script

Código :

parentScript = parentScript.src;


Lo convertimos en array y eliminamos el ultimo valor.

Código :

parentScript = parentScript.split('/');
parentScript.pop();


Convertimos nuestro array en string y remplazamos las "," por "/"

Código :

parentScript = parentScript.join();
parentScript = parentScript.replace(/,/gi, '/');


Asignamos a nuestro nuevo elemento la ruta+url y lo creamos en nuestro body

Código :

script.src = parentScript+url;
var body = document.body;
return body.appendChild(script);


Llamamos a la función con la url de nuestro script a importar

Código :

import('script1.js');
import('script2.js');
import('script3.js');
import('script4.js');


- Nota los archivos a importar deben estar en el mismo directorio o en un subdirectorio no funcionara en un directorio padre.

Por jonathanxx

3 de clabLevel



Genero:Masculino  

Desarrollo y diseño web

chrome
Citar            
MensajeEscrito el 13 May 2014 01:14 pm
O al final cuando vayamos a colocar nuestro código en producción, utilizar esta herramienta http://closure-compiler.appspot.com/home

Para fines de desarrollo es mejor tener todo separado para modificaciones agiles.

Gracias por el aporte Jonathan, si son aportes tipo tutorial hay un topico especifico para estos temas, los seleccionados se publican en la principal.

Saludos

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 13 May 2014 04:05 pm

elporfirio escribió:

O al final cuando vayamos a colocar nuestro código en producción, utilizar esta herramienta http://closure-compiler.appspot.com/home

Para fines de desarrollo es mejor tener todo separado para modificaciones agiles.

Gracias por el aporte Jonathan, si son aportes tipo tutorial hay un topico especifico para estos temas, los seleccionados se publican en la principal.

Saludos


Oh no conocía esta herramienta pero esto te une varios archivos y los compila en un solo, Bueno para producción. Gracias por el aporte. Saludos.

Por jonathanxx

3 de clabLevel



Genero:Masculino  

Desarrollo y diseño web

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.