Tengo una aplicación de nodo llamada index.js que se ejecuta express. Hace un tiempo, decidí fusionar una plantilla de sitio web y mi aplicación de nodo y todo funciona bien hasta aquí. Puedo cargar otras rutas en la aplicación de nodo ( index.js ) usando el siguiente código.
var express = require('express'); var app = express(); app.use('/assets', express.static(path.join(__dirname, '/assets'))); app.use(express.static(path.join(__dirname, '/'))); Ahora, puedo servir diferentes páginas html usando express, lo que significa que mi aplicación puede acceder a la carpeta de assets y al contenido dentro de la carpeta.
Ahora, la carpeta de activos contiene otras carpetas llamadas js, css y... La plantilla HTML está cargando todos sus códigos javascript de la carpeta js en assets . Tenga en cuenta que los códigos javascript no están escritos en el archivo HTML. Aquí hay un ejemplo de cómo se activa un script en mi código HTML:
<script src="../../assets/js/test.js"></script> <script type="text/javascript"> $(document).ready(function(){ test.theFunction(); }); </script>Y aquí está el código javascript en el siguiente directorio:
// assets/js/test.js test = { theFunction: function() { res.send("finally..."); console.log("sup?"); } } Estoy tratando de llamar a la siguiente función dentro de index.js desde test.js :
// /index.js app.get("/hey", function(req, res) { res.send("wassaaa!!"); });Hasta ahora, he probado el siguiente código, pero no llama a la función:
$.get('/hey').success(function(response) { $scope.final = response; console.log(response); }); También probé module.exports en index.js , pero cuando lo requiero en test.js un error que dice que no puedo requerir cosas en el lado del cliente.
También he visto algunos ejemplos relacionados con require.js, pero los ejemplos explican principalmente cómo cargar require.js en el archivo HTML en lugar de hacerlo directamente en un archivo js.
Para resumir, esto es lo que quiero que suceda: el archivo HTML activa las funciones en test.js , luego test.js obtiene algunos datos de index.js y los pasa al archivo HTML nuevamente... Estoy tratando de evitar escribir los códigos javascript en el archivo HTML.
También estoy abierto a sugerencias si alguien sabe cómo lograr lo que estoy tratando de hacer de una manera más fácil. Gracias por adelantado...
Debe escribir la función en test.js e importarla a index.js . Por ejemplo, una función getResponse() que devuelve "wassaaa!!" en test.js, y en index.js use res.send(test.getResponse())
Necesita usar la URL para lograr eso. Este es un ejemplo de su entorno de desarrollo, suponiendo que su aplicación está escuchando en el puerto 8800:
$.get('http://localhost:8800/hey').success(function(response) { $scope.final = response; console.log(response); });