2014-04-13 6 views
1

Jade와 Mongoose를 기본 도구 상자로 사용하여 Express를 사용하여 Node.js를 배우기 시작합니다. 필자는 PHP로 개발하고 Python으로 마이그레이션하며 장고를 통해 MVC를 배웠습니다. 대규모 클라이언트 측 JS 게임과 Mozilla.org에서 영감을 얻은 저는 멀티 플레이어 게임을 기꺼이 만들었습니다. 그리고 이것을 비공식적 인 기회로 보았습니다. Node : 나는 그것으로 시간을 할애 할 수 있습니다.Node.js를 사용하여 URL 문자열을 다른 스크립트로 보냅니다.

그러나 문제가 발생했습니다. 나는 MVC 시스템을 독자적으로 작성하려고하지 않고 단지 대부분의 MVC처럼 내 사이트의 "앱"을 분리하려고합니다. 문제는 아마 기본적인 - 코드의 덩어리 갖는

app.get(/^blog/, function(req, res) { 
    require("./blog")(); 
}); 

을 ... 내가 그러나 나는 URL 문자열의 나머지 부분을 통과해야, 노드/특급 'URL 마스킹의 기초를 이해 (모든 그 후 mysite.com/blog)을 blog 앱 내부의 다른 URL 구문 분석 스크립트로 보내십시오.

잠시 동안 인터넷 검색을 시도했지만 좋은 해결책을 찾을 수 없었습니다. Node와 Express에서 MVC 스키마를 작성하는 방법에 대한 전체 자습서를 찾았지만, 구 버전의 Express 용으로 작성되었지만, 지금은 정상입니다. 간단한 솔루션을 제공해 줄 수 있습니까?

나는 blog/index.js은 다음과 비슷한 모습이 될 것입니다 생각 :

module.exports = function(urlstring) { 
    if(urlstring.indexOf('post') != -1) { 
     // do stuff... 
    } 
    else if(urlstring === '/') { 
     // return home.jade or something 
    } 
}; 

내가 분명히 존재하고있어 바랍니다. 미리 감사드립니다!

+0

그렇게하지 마십시오. 대신, 마운트 된 Express 응용 프로그램을 사용하십시오. – SLaks

+0

무슨 소리 야? 너도 알다시피, 나는 노드 외의 새로운 ... – gchiconi

+0

http://stackoverflow.com/q/19306084/34397 – SLaks

답변

1

명시 적으로 URL을 직접 구문 분석 할 필요가 없습니다. 나는 당신이 ID로이

이/블로그 블로그 게시물의 목록을 표시 /블로그/후/1보기 블로그 게시물처럼 어떻게 든 블로그 URL을 구축 할 것 같아 '1'특급 4

을 수행 할 수 있습니다 블로그 경로 또는 탑재 된 앱을위한 라우터를 설정하십시오. 마운트 된 앱을 사용하면 앱이 기본 URL 경로의 모든 하위 URL을 처리하도록 할 수 있습니다. See the express documentation for more detail.

express의 마운팅 기능과 함께 express 4 라우터를 사용하여 블로그 경로를 빌드하는 방법을 보여 드리고 싶습니다.

// Set up express app 
var app = express(); 

// Set up a router 
var router = express.Router(); 

router.get('/', function(req, res) { 
    // Show a list of blog posts 
} 

router.get('/post/:id', function(req, res) { 
    // Show a single blog post 
} 

// Mount router 
app.use('/blog', router); 

이 솔루션의 장점은 라우터에 등록 된 사용자의 경로는 항상 /companyblog 같은 URL에서 다른 프로젝트에 블로그 경로를 다시 사용할 수 있도록 /blog 접두사 밖으로 상대 URL을 얻을 수 있다는 것입니다.

+0

고마워! 'app.use'를 사용하여 외부 앱을 요구하는 것과 다른 점이 있습니까? 외부 파일은 새로운'app = express()'를 가질 것이고, 모든 상대 URL 검사 코드는 주 모듈에'module.exports = app'가됩니다. – gchiconi

관련 문제