2013-05-16 4 views
26
나는 현재 내 app.js에 내 모든 HTML 권리를 제공하고

/server.js 파일 :이 그들에게 전화 할 수있는 가장 좋은 방법은 아마입니다 15 + HTML 페이지가있는 경우express.js로 node.js에서 html을 제공하는 가장 좋은 방법은 무엇입니까? 이 같은

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

내가 상상 . 다른 파일이나 위치에서 서비스를 제공하고 app.js에서 하나의 함수 또는 다른 것을 호출 할 수 있도록 내보내기 또는 다른 것을 사용하는 더 좋은 방법이 있습니까? 그것은 라우팅에 대한 것이지만 어쩌면 내가 너무 잘 이해하지 못할 수도 있습니다.

app.use("/", express.static(__dirname)); 

서버 예제 :

var express = require('express'); 
var app = express(); 
app.use('/', express.static(__dirname + '/public')); 
app.listen(3000, function() { console.log('listening')}); 

이것은이다

(동일한 파일에 추가 더 많은 코드)

app.set('port', process.env.PORT || 3000); 
app.set('views', __dirname + '/public'); 

// used below code to render html files 
app.engine('html', require('ejs').renderFile); 

app.set('view engine', 'ejs'); 
app.use(express.favicon("public/img/favicon.ico")); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 
+1

이 Node.js를보다 express.js 질문 더, 태그를 추가하고 질문을 바꿔입니다. – Vicary

답변

73

당신은 static 미들웨어를 사용할 수 있습니다 파일 구조 :

. 
├── public 
│   ├── a.html 
│   ├── b.html 
│   └── c.html 
└── server.js 

문서 :

+0

그 페이지의 나머지 부분에 대한 호출을 호출하거나 여전히 app.use ("/ about"...) 등을 사용해야합니까? 그렇지 않다면 페이지의 나머지 부분을 얻으려면 한 줄에서 어떻게 알 수 있습니까? –

+0

예를 들어'app.use ("/", express.static (__ dirname + '/ public'));을 쓰면'public' 폴더의 모든 파일이 server가됩니다. –

+0

또한 이미 비슷한 것을 가지고있는 위의 파일을 추가했습니다. (정적 호출을 사용하고 있습니다.) –

6

하나의 아이디어는 다음과 같이 마지막 경로로 경로의 포괄 종류를 사용하는 것입니다 :

app.get('/:page', function(req, res) { 
    res.sendfile(path.join(__dirname, 'public', 'pages', path.basename(req.params.page) + '.html')); 
}); 

이렇게하면 .html 파일을 public/pages/about.html 등에 넣어야합니다.

정적 파일 라우터의 순서를 전환하여 정적 파일이 경로보다 우선 적용되도록 할 수 있습니다 ,이 같은 공용 폴더에 물건을 잡는 그 길,하지 않으려면 :

응용 프로그램

app.set('view engine', 'ejs'); 
app.use(express.favicon("public/img/favicon.ico")); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(app.router); 
관련 문제