[html] Express에서 HTML을 뷰 엔진으로 사용하려면 어떻게합니까?

나는 씨앗 에서이 간단한 변경을 시도하고 해당 .html 파일 (예 : index.html)을 만들었습니다.

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

이 파일은 동일하게 유지되었습니다.

exports.index = function(req, res){
  res.render('index');
};

그러나 달리는 동안 나는 얻는다

500 오류 : ‘html’모듈을 찾을 수 없습니다

‘ejs’를 사용하는 유일한 옵션입니까? 내 의도는 AngularJS와 함께 일반 HTML을 사용하는 것이 었습니다.



답변

다른 링크의 답변은 효과가 있지만 HTML을 제공하기 위해 펑키 라우팅을 설정하지 않는 한 뷰 엔진을 전혀 사용할 필요가 없습니다. 대신 정적 미들웨어를 사용하십시오.

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


답변

렌더 엔진이 jade 대신 html을 허용하도록하려면 다음 단계를 수행하십시오.

  1. 디렉토리에 콘솔통합 하고 설치 하십시오.

     npm install consolidate
     npm install swig
  2. app.js 파일에 다음 줄을 추가하십시오.

    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. “views”폴더 안에 .html로 뷰 템플릿을 추가하십시오. 노드 서버를 다시 시작하고 브라우저에서 앱을 시작하십시오.

이것이 아무런 문제없이 html을 렌더링하지만 JADE를 배우는 것이 좋습니다. Jade는 놀라운 템플릿 엔진이며이를 배우면 더 나은 디자인 및 확장 성을 달성하는 데 도움이됩니다.


답변

apps.js에 추가하십시오.

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

이제 뷰 파일을 .html로 유지하면서 ejs 뷰 엔진을 사용할 수 있습니다

출처 : http://www.makebetterthings.com/node-js/how-to-use-html-with-express-node-js/

이 두 패키지를 설치해야합니다.

`npm install ejs --save`
`npm install path --save`

그런 다음 필요한 패키지를 가져옵니다.

`var path = require('path');`

이렇게하면 뷰 를 .ejs 대신 .html 로 저장할 수 있습니다 .
html을 지원하지만 ej를 인식하지 못하는 IDE로 작업하는 동안 매우 유용합니다.


답변

서버 구성에 이것을 시도하십시오

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'));
});

경로에 대한 콜백 함수는 다음과 같습니다.

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


답변

간단한 일반 HTML 파일로 각도를 사용하려는 경우 뷰 엔진이 필요하지 않습니다. 방법은 다음과 같습니다. route.js파일에서 :

router.get('/', (req, res) => {
   res.sendFile('index.html', {
     root: 'yourPathToIndexDirectory'
   });
});


답변

https://www.npmjs.com/package/express-es6-template-engine- 매우 가볍고 놀랍도록 빠른 템플릿 엔진을 사용하는 것이 좋습니다 . expressjs 없이도 작동 할 수 있으므로 이름이 약간 오도됩니다.

express-es6-template-engine앱 에 통합 하는 데 필요한 기본 사항 은 매우 간단하고 구현하기가 매우 쉽습니다.

const express = require('express'),
  es6Renderer = require('express-es6-template-engine'),
  app = express();

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

app.get('/', function(req, res) {
  res.render('index', {locals: {title: 'Welcome!'}});
});

app.listen(3000);

index.html파일

의 내용은 ‘views’디렉토리 안에 있습니다.

<!DOCTYPE html>
<html>
<body>
    <h1>${title}</h1>
</body>
</html>


답변

대답은 매우 간단합니다. * .html 페이지를 렌더링하려면 app.engine ( ‘html’)을 사용해야합니다. 문제를 해결해야합니다.

app.set('views', path.join(__dirname, 'views'));
**// Set EJS View Engine**
app.set('view engine','ejs');
**// Set HTML engine**
app.engine('html', require('ejs').renderFile);

.html 파일이 작동합니다