HTML gebruiken in Express in plaats van Jade

Hoe kom ik van Jade af terwijl ik Express gebruik met Node.JS? Ik wil gewoon gewone html gebruiken. In andere artikelen heb ik gezien dat mensen app.register() aanbeveelden, wat nu is verouderd in de nieuwste versie.


Antwoord 1, autoriteit 100%

Je kunt het op deze manier doen:

  1. Installeer ejs:

    npm install ejs
    
  2. Stel uw sjabloonengine in app.js in als ejs

    // app.js
    app.engine('html', require('ejs').renderFile);
    app.set('view engine', 'html');
    
  3. Nu kun je in je routebestand sjabloonvariabelen toewijzen

    // ./routes/index.js
    exports.index = function(req, res){
    res.render('index', { title: 'ejs' });};
    
  4. Vervolgens kunt u uw html-weergave maken in de directory /views.


Antwoord 2, autoriteit 77%

Jade accepteert ook html-invoer.
Voeg gewoon een punt toe aan het einde van de regel om te beginnen met het indienen van pure html.
Als dat de truc voor je is, probeer dan:

doctype html              
html. // THAT DOT
    <body>     
        <div>Hello, yes this is dog</div>
    </body>

PS – HTML hoeft niet te worden afgesloten – dat wordt automatisch gedaan door Jade.


Antwoord 3, autoriteit 23%

Vanaf express 3 kunt u eenvoudig response.sendFile

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

Van de officiële express api-referentie:

res.sendfile(path, [options], [fn]])

Verplaats het bestand op het opgegeven pad.

Standaard automatisch het veld Content-Type responsheader op basis van
de extensie van de bestandsnaam. De callback fn(err)wordt aangeroepen wanneer de
overdracht is voltooid of wanneer er een fout optreedt.

Waarschuwing

res.sendFilebiedt cache aan de clientzijde via http-cacheheaders, maar slaat de bestandsinhoud niet op de server in de cache op. De bovenstaande code komt bij elk verzoek op de schijf.


Antwoord 4, autoriteit 20%

Naar mijn mening is het een beetje hardhandig om zoiets groots als ejs te gebruiken om alleen html-bestanden te lezen. Ik heb zojuist mijn eigen sjabloon-engine voor html-bestanden geschreven die opmerkelijk eenvoudig is. Het bestand ziet er als volgt uit:

var fs = require('fs');
module.exports = function(path, options, fn){
    var cacheLocation = path + ':html';
    if(typeof module.exports.cache[cacheLocation] === "string"){
        return fn(null, module.exports.cache[cacheLocation]);
    }
    fs.readFile(path, 'utf8', function(err, data){
        if(err) { return fn(err); }
        return fn(null, module.exports.cache[cacheLocation] = data);
    });
}
module.exports.cache = {};

Ik heb de mijne htmlEngine genoemd, en de manier waarop je het gebruikt is simpelweg door te zeggen:

app.engine('html', require('./htmlEngine'));
app.set('view engine', 'html');

Antwoord 5, autoriteit 12%

app.register()is niet afgeschreven, het is zojuist hernoemd naar app.engine()sinds Express 3 verandert de manier waarop met template-engines wordt omgegaan.

Voor compatibiliteit van Express 2.x-sjabloonengine was de volgende module vereist:
exporteren:

exports.compile = function(templateString, options) {
    return a Function;
};

Express 3.x-sjabloonengines moeten het volgende exporteren:

exports.__express = function(filename, options, callback) {
  callback(err, string);
};

Als een sjabloonengine dit niet blootlegt
methode, heb je geen pech, met de app.engine()methode kun je
wijs elke functie toe aan een extensie. Stel dat je een markdown-bibliotheek had
en wilde .md-bestanden weergeven, maar deze bibliotheek ondersteunde niet
Express, uw app.engine()-aanroep kan er ongeveer zo uitzien:

var markdown = require('some-markdown-library');
var fs = require('fs');
app.engine('md', function(path, options, fn){
  fs.readFile(path, 'utf8', function(err, str){
    if (err) return fn(err);
    str = markdown.parse(str).toString();
    fn(null, str);
  });
});

Als je op zoek bent naar een template-engine waarmee je ‘gewone’ HTML kunt gebruiken, raad ik doTaan omdat het extreem snel.

Houd er natuurlijk rekening mee dat het weergavemodel van Express 3 de cache aan u (of uw sjabloonengine) overlaat. In een productieomgeving wilt u waarschijnlijk uw weergaven in het geheugen opslaan, zodat u niet bij elk verzoek schijf-I/O uitvoert.


Antwoord 6, autoriteit 5%

Je kunt EJS gebruiken om uit te drukken welke sjablonen HTML zijn maar variabelen ondersteunen.
Hier is een goede tutorial over het gebruik van EJS in express.

http://robdodson.me /blog/2012/05/31/hoe-te-gebruiken-ejs-in-express/


Antwoord 7, autoriteit 5%

Om ervoor te zorgen dat de render-engine html accepteert in plaats van jade, kun je de volgende stappen volgen;

  1. Installeer consoliderenen swignaar je directory.

    npm install consolidate
     npm install swig
    
  2. voeg de volgende regels toe aan uw app.js-bestand

    var cons = require('consolidate');
    // view engine setup
    app.engine('html', cons.swig)
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', ‘html');
    
  3. voeg uw weergavesjablonen toe als .html in de map “views”. Start je node-server opnieuw en start de app in de browser.

Hoewel dit zonder enig probleem html weergeeft, raad ik je aan om JADE te gebruiken door het te leren. Jade is een geweldige sjabloon-engine en als je dit leert, kun je een beter ontwerp & schaalbaarheid.


Antwoord 8, autoriteit 5%

controleer eerst de compatibiliteitsversie van de sjabloonengine door de onderstaande regel te gebruiken

express -h

dan moet je geen weergave uit de lijst gebruiken.selecteer geen weergave

express --no-view myapp

u kunt nu al uw html,css,js en afbeeldingen in de openbare map gebruiken.


Antwoord 9, autoriteit 4%

Nou, het klinkt alsof je statische bestanden wilt aanbieden. En daar is een pagina voor
http://expressjs.com/en/starter/static-files.html

Bizar dat niemand naar de documentatie linkt.


Antwoord 10

Aangezien u uw routes al heeft gedefinieerd of weet hoe u dit moet doen.

app.get('*', function(req, res){
    res.sendfile('path/to/your/html/file.html');
});

LET OP: deze route moet achter alle andere worden geplaatst aangezien * alles accepteert.


Antwoord 11

aangezien Jade HTML ondersteunt, kunt u dit doen als u alleen .html ext wilt hebben

// app.js
app.engine('html', require('jade').renderFile);
app.set('view engine', 'html');

dan verander je gewoon het bestand in views van jade naar html.


Antwoord 12

U kunt uw html-bestand ook rechtstreeks in uw jade-bestand opnemen

include ../../public/index.html

Originele antwoord: Express Generator zonder Jade


Antwoord 13

Als je plain htmlin nodeJS wilt gebruiken, zonder jade.. of wat dan ook:

var html = '<div>'
    + 'hello'
  + '</div>';

Persoonlijk vind ik dat prima.

Het voordeel is eenvoud bij de besturing.
Je kunt wat trucjes gebruiken, zoals '<p>' + (name || '') + '</p>', ternair .. etc

Als u een ingesprongen code in de browser wilt, kunt u het volgende doen:

+ 'ok \
  my friend \
  sldkfjlsdkjf';

en gebruik \t of \n naar believen. Maar ik heb liever zonder, en het is sneller.

Other episodes