una tabla obtener dinamica datos crear con attribute agregar javascript html node.js mongodb express

javascript - tabla - title html



¿Hacer vista básica en HTML? (26)

Tengo una aplicación básica de node.js que estoy intentando despegar con Express framework. Tengo una carpeta de views donde tengo un archivo index.html . Pero recibo el siguiente error al cargar el navegador web.

Error: no se puede encontrar el módulo ''html''

A continuación se muestra mi código.

var express = require(''express''); var app = express.createServer(); app.use(express.staticProvider(__dirname + ''/public'')); app.get(''/'', function(req, res) { res.render(''index.html''); }); app.listen(8080, ''127.0.0.1'')

¿Que me estoy perdiendo aqui?


1) La mejor manera es establecer una carpeta estática. En su archivo principal (app.js | server.js | ???):

app.use(express.static(path.join(__dirname, ''public'')));

public / css / form.html
public / css / style.css

Luego tienes un archivo estático de la carpeta "pública":

http://YOUR_DOMAIN/form.html http://YOUR_DOMAIN/css/style.css

2)

Puedes crear tu caché de archivos.
Utilice el método fs.readFileSync

var cache = {}; cache["index.html"] = fs.readFileSync( __dirname + ''/public/form.html''); app.get(''/'', function(req, res){ res.setHeader(''Content-Type'', ''text/html''); res.send( cache["index.html"] ); };);


Añade las siguientes líneas a tu código

  1. Reemplaza "jade" con "ejs" y "XYZ" (versión) con "*" en el archivo package.json

    "dependencies": { "ejs": "*" }

  2. Luego, en su archivo app.js, agregue el siguiente Código:

    app.engine(''html'', require(''ejs'').renderFile);

    app.set(''view engine'', ''html'');

  3. Y recuerde mantener todos los archivos .HTML en la carpeta de vistas

Saludos :)


Agregué debajo de 2 líneas y funcionó para mí.

app.set(''view engine'', ''html''); app.engine(''html'', require(''ejs'').renderFile);


Con Express 4.0.0, lo único que tienes que hacer es comentar 2 líneas en app.js:

/* app.set(''views'', path.join(__dirname, ''views'')); app.set(''view engine'', ''jade''); */ //or whatever the templating engine is.

Y luego suelte su archivo estático en el directorio / public. Ejemplo: /public/index.html


De la Guía Express.js: Ver Rendering

Los nombres de los archivos de vista toman la forma Express.ENGINE , donde ENGINE es el nombre del módulo que se requerirá. Por ejemplo, la vista layout.ejs le dirá al sistema de vista que require(''ejs'') , el módulo que se está cargando debe exportar el método exports.render(str, options) para cumplir con Express, sin embargo, se puede usar app.register() para asignar motores a extensiones de archivo, de modo que, por ejemplo, foo.html pueda representarse en jade.

Entonces, o creas tu propio renderizador simple o simplemente usas jade:

app.register(''.html'', require(''jade''));

More sobre app.register .

Tenga en cuenta que en Express 3, este método cambia de nombre a app.engine


En server.js, por favor incluya

var express = require("express"); var app = express(); var path = require("path"); app.get(''/'',function(req,res){ res.sendFile(path.join(__dirname+''/index.html'')); //__dirname : It will resolve to your project folder. });


Estaba intentando configurar una aplicación angular con una API RESTful expresa y aterricé en esta página varias veces, aunque no fue útil. Esto es lo que encontré que funcionó:

app.configure(function() { app.use(express.static(__dirname + ''/public'')); // set the static files location app.use(express.logger(''dev'')); // log every request to the console app.use(express.bodyParser()); // pull information from html in POST app.use(express.methodOverride()); // simulate DELETE and PUT app.use(express.favicon(__dirname + ''/public/img/favicon.ico'')); });

Luego, en la devolución de llamada para sus rutas de api se ve como: res.jsonp(users);

Su marco del lado del cliente puede manejar el enrutamiento. Express es para servir a la API.

Mi ruta de inicio se ve así:

app.get(''/*'', function(req, res) { res.sendfile(''./public/index.html''); // load the single view file (angular will handle the page changes on the front-end) });


No quería depender de ejs para entregar simplemente un archivo HTML, así que simplemente escribí el pequeño renderizador:

const Promise = require( "bluebird" ); const fs = Promise.promisifyAll( require( "fs" ) ); app.set( "view engine", "html" ); app.engine( ".html", ( filename, request, done ) => { fs.readFileAsync( filename, "utf-8" ) .then( html => done( null, html ) ) .catch( done ); } );


Normalmente uso este

app.configure(function() { app.use(express.static(__dirname + ''/web'')); });

Solo ten cuidado porque eso compartirá cualquier cosa en el directorio / web.

Espero que ayude


Para mi proyecto he creado esta estructura:

index.js css/ reset.css html/ index.html

Este código sirve index.html para / solicitudes, y reset.css para solicitudes /css/reset.css . Bastante simple, y la mejor parte es que agrega automáticamente encabezados de caché .

var express = require(''express''), server = express(); server.configure(function () { server.use(''/css'', express.static(__dirname + ''/css'')); server.use(express.static(__dirname + ''/html'')); }); server.listen(1337);


Para representar la página HTML en el nodo, intente lo siguiente:

app.set(''views'', __dirname + ''/views''); app.engine(''html'', require(''ejs'').renderFile);

  • Necesitas instalar el módulo ejs través de npm como:

    npm install ejs --save


Pruebe la función res.sendFile () en las rutas Express.

var express = require("express"); var app = express(); var path = require("path"); app.get(''/'',function(req,res){ res.sendFile(path.join(__dirname+''/index.html'')); //__dirname : It will resolve to your project folder. }); app.get(''/about'',function(req,res){ res.sendFile(path.join(__dirname+''/about.html'')); }); app.get(''/sitemap'',function(req,res){ res.sendFile(path.join(__dirname+''/sitemap.html'')); }); app.listen(3000); console.log("Running at Port 3000");

Lea aquí: http://codeforgeek.com/2015/01/render-html-file-expressjs/


Puedes hacer que jade incluya una página HTML simple:

en views / index.jade

include plain.html

en views / plain.html

<!DOCTYPE html> ...

y app.js todavía puede procesar jade:

res.render(index)


Quería permitir que las solicitudes a "/" fueran manejadas por una ruta Express donde anteriormente habían sido manejadas por el middleware estático. Esto me permitiría renderizar la versión regular de index.html o una versión que cargó JS y CSS concatenados y minimizados, dependiendo de la configuración de la aplicación. Inspirado por la respuesta de Andrew Homeyer , decidí arrastrar mis archivos HTML, sin modificar, a una carpeta de vistas, configurar Express como tal

app.engine(''html'', swig.renderFile); app.set(''view engine'', ''html''); app.set(''views'', __dirname + ''/views'');

Y creó un controlador de ruta como tal.

app.route(''/'') .get(function(req, res){ if(config.useConcatendatedFiles){ return res.render(''index-dist''); } res.render(''index''); });

Esto funcionó bastante bien.


Si está utilizando express@~3.0.0, cambie la línea a continuación de su ejemplo:

app.use(express.staticProvider(__dirname + ''/public''));

a algo como esto:

app.set("view options", {layout: false}); app.use(express.static(__dirname + ''/public''));

Lo hice como se describe en la página de api express y funciona como encanto. Con esa configuración, no tiene que escribir código adicional para que sea lo suficientemente fácil de usar para su microproducción o prueba.

Código completo enumerado a continuación:

var express = require(''express''); var app = express.createServer(); app.set("view options", {layout: false}); app.use(express.static(__dirname + ''/public'')); app.get(''/'', function(req, res) { res.render(''index.html''); }); app.listen(8080, ''127.0.0.1'')


Si está utilizando Express Framework para node.js

instalar npm ejs

luego agrega el archivo de configuración

app.set(''port'', process.env.PORT || 3000); app.set(''views'', __dirname + ''/views''); app.set(''view engine'', ''ejs''); app.set(''view engine'', ''jade''); app.use(express.favicon()); app.use(express.logger(''dev'')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router)

;

haga que la página del módulo export.form.js tenga el archivo html en el directorio de vistas con la extensión del nombre del archivo ejs como form.html.ejs

luego crea el form.js

res.render(''form.html.ejs'');


Si no tiene que usar el directorio de vistas , simplemente mueva los archivos html al directorio público a continuación.

y luego, agregue esta línea en app.configure en lugar de ''/ views''.

server.use(express.static(__dirname + ''/public''));


También enfrenté el mismo problema en express 3.X y el node 0.6.16 . La solución anterior no funcionará para la última versión de express 3.x app.register método app.register y agregaron el método app.engine . Si probó la solución anterior, puede terminar con el siguiente error.

node.js:201 throw e; // process.nextTick error, or ''error'' event on first tick ^ TypeError: Object function app(req, res){ app.handle(req, res); } has no method ''register'' at Function.<anonymous> (/home/user1/ArunKumar/firstExpress/app.js:37:5) at Function.configure (/home/user1/ArunKumar/firstExpress/node_modules/express/lib/application.js:399:61) at Object.<anonymous> (/home/user1/ArunKumar/firstExpress/app.js:22:5) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) at Function._load (module.js:308:12) at Array.0 (module.js:479:10) at EventEmitter._tickCallback (node.js:192:40)

Para deshacerse del mensaje de error. Agregue la siguiente línea a su app.configure function

app.engine(''html'', require(''ejs'').renderFile);

Nota: tienes que instalar el motor de plantillas ejs

npm install -g ejs

Ejemplo:

app.configure(function(){ ..... // disable layout app.set("view options", {layout: false}); app.engine(''html'', require(''ejs'').renderFile); .... app.get(''/'', function(req, res){ res.render("index.html"); });

Nota: la solución más sencilla es usar la plantilla ejs como motor de visualización. Allí puede escribir código HTML en * .ejs ver archivos.


También puedes leer el archivo html y enviarlo.

app.get(''/'', function(req, res) { fs.readFile(__dirname + ''/public/index.html'', ''utf8'', function(err, text){ res.send(text); }); });


prueba esto. esto funciona para mi.

app.configure(function(){ ..... // disable layout app.set("view options", {layout: false}); // make a custom html template app.register(''.html'', { compile: function(str, options){ return function(locals){ return str; }; } }); }); .... app.get(''/'', function(req, res){ res.render("index.html"); });


Aquí hay una demo completa del servidor Express!

https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906

Espero que te ayude!

// simple express server for HTML pages! // ES6 style const express = require(''express''); const fs = require(''fs''); const hostname = ''127.0.0.1''; const port = 3000; const app = express(); let cache = [];// Array is OK! cache[0] = fs.readFileSync( __dirname + ''/index.html''); cache[1] = fs.readFileSync( __dirname + ''/views/testview.html''); app.get(''/'', (req, res) => { res.setHeader(''Content-Type'', ''text/html''); res.send( cache[0] ); }); app.get(''/test'', (req, res) => { res.setHeader(''Content-Type'', ''text/html''); res.send( cache[1] ); }); app.listen(port, () => { console.log(` Server is running at http://${hostname}:${port}/ Server hostname ${hostname} is listening on port ${port}! `); });


Muchas de estas respuestas están desactualizadas.

Usando Express 3.0.0 y 3.1.0, los siguientes trabajos:

app.set(''views'', __dirname + ''/views''); app.engine(''html'', require(''ejs'').renderFile);

Consulte los comentarios a continuación para conocer la sintaxis alternativa y las advertencias para Express 3.4+:

app.set(''view engine'', ''ejs'');

Entonces puedes hacer algo como:

app.get(''/about'', function (req, res) { res.render(''about.html''); });

Esto supone que tiene sus vistas en la subcarpeta de views y que ha instalado el módulo de nodo ejs . Si no, ejecuta lo siguiente en una consola Node:

npm install ejs --save


estructura de carpetas:

. ├── index.html ├── node_modules │   ├──{...} └── server.js

server.js

var express = require(''express''); var app = express(); app.use(express.static(''./'')); app.get(''/'', function(req, res) { res.render(''index.html''); }); app.listen(8882, ''127.0.0.1'')

index.html

<!DOCTYPE html> <html> <body> <div> hello world </div> </body> </html>

salida:

Hola Mundo


app.get(''/'', function (req, res) { res.sendfile(__dirname + ''/public/index.html''); });


app.get(''/'', function(req, res, next) { res.send(`<html><body><h1>My Server</h1></body></html>'') });


res.sendFile(__dirname + ''/public/login.html'');