2014-11-19 4 views
0

"web.html"및 "mobile.html"정적 파일을 제공하지만 사용자가 web/mobile에서 연결되어있는 경우에만 보내고 싶습니다.노드 js express 앱은 정적 파일을 제공합니다.

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
app.use(express.static(__dirname + '/public', {index: false})); 

app.get('/', function (req, res) { 
console.log("user connected"); 

if (req.headers['user-agent'].match('mobile')) { 

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

} else { 

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

하지만이 코드가 작동하지 않습니다

내가이 작업을 수행이 코드가 있다고 생각했다. 에서 express.static은 '/'를 요청할 때 index.html 만 제공합니다. '/'를 요청할 때 특정 파일을 제공하는 방법이 있습니까?

감사합니다.

답변

0

express-device을 확인하십시오. 그것은 당신이하려고하는 것 (모바일 버전과 데스크탑 버전 만들기)을 완성합니다.

0

기본 논리가 정확합니다. 문제는 모바일 탐지입니다. 많은 모바일 브라우저 (방금 iPhone에서이 도구를 사용해 보았습니다)에서 UA 문자열에 "Mobile"(대문자 "M")이 있고 소문자로 일치합니다. 이 번호를 다음으로 변경했습니다.

if (req.headers['user-agent'].match(/\bmob/i)) { 

/\bmob/i 휴대 기기 감지에 주로 사용되는 항목입니다. 나는 그것이 정말로 단단한 것을 알았다. 더 나은 선택은 UA 파싱의 지저분한 세부 사항에 대해 걱정할 필요가 없도록하는 @ user3229720의 대답 일지 모르지만, 여기에서 무슨 일이 일어나고 있는지 더 자세히 알고 싶을 것이라고 생각했습니다.

1
<script src="/scripts/script.js"></script> 

위의 줄을 색인 파일이나 HTML 파일에서 사용하십시오.

var app=express(); 
app.use(express.static(__dirname + '/assets')); 

이 정보는 app.js 또는 노드 js 응용 프로그램의 시작 지점에서 사용하십시오. 루트 수준에서 에셋 폴더를 만듭니다. 내부 자산 폴더에는 이미지, CSS 및 스크립트와 같은 하위 폴더가 있습니다.

관련 문제