2012-01-28 2 views
1

나는 웹 애플 리케이션을위한 툴셋으로 아이언을 사용하여 설정하는 것을 시작하고있다.Flatiron js - director - 테이블에서 비동기식 라우팅을 수행하는 방법은 무엇입니까?

나는 app.plugins.http와 함께 디렉터를 사용하고 있으며 정적 파일 "캐치 올"경로를 만드는 방법을 알아낼 수 없습니다. & 404s - .get("<RegEx>")은 첫 번째 폴더 위치와 일치하므로 <RegEx>/.* 인 경우 /foo과 일치하지만 /foo/bar은 일치하지 않습니다.

여기 내 코드는 더 나은 예를 들어, 다음과 같습니다

routes.js에서 :

var routes = { 
    /* home 
    * This is the main route, hit by queries to "/" 
    */ 
    "/" : { 
    get: function(){ 
     getStatic("html/index.html",_.bind(function(err,content){ 
     if(err) throw err; 
     renderContent(this,content); 
     },this)); 
    } 
    }, 
    /* static files 
    * Last rule, if no other routes are hit, it's either a static resource 
    * or a 404. Check for the file then return 404 if it doesn't exist. 
    */ 
    '/(.*)' : { 
    get : function(){ 
     getStatic(this.req.url,_.bind(function(err,content){ 
     if(!err){ 
      renderContent(this,content); 
     } else { 
      this.res.writeHead(404); 
      // TODO: fancier 404 page (blank currently) 
      this.res.end(); 
     } 
     },this)) 
    } 
    } 
} 

내 주요 응용 프로그램 파일 : 내가 좋아하는 것

/* Define the routes this app will respond to. */ 
var routes = require('./lib/routes'); 
/* set up app to use the flatiron http plugin */ 
app.use(flatiron.plugins.http); 
/* loop through routes and add ad-hoc routes for each one */ 
for(var r in routes){ 
    var route = routes[r]; 
    if(!routes.hasOwnProperty(r)) continue; 
    for(var method in route){ 
     if(!route.hasOwnProperty(method)) continue; 
     app.router[method](r,route[method]); 
    } 
} 
/* Start the server */ 
app.listen(8080); 

유지 할 수 있도록 별도의 모듈에있는 내 경로와 가져 오기 -이 방법이나 디렉터와 바닐라 http 서버를 사용하는 것이 더 좋을지에 대해서는 꽤 잘 모르겠지만 행운없이 두 가지 방법을 모두 시도했습니다.

는 여기에 내가 무엇을 얻을 : 그래서

localhost:8080/ 
>> (content of index file - this works) 
localhost:8080/foo 
>> (blank page, 404 header) 
localhost:8080/foo/bar 
>> (no static file for this - I get a 404 header, but the body is now "undefined" - where is this coming from??) 
localhost:8080/css/min.css 
>> (this file should exist, but the route is never called. I do however still get a 404 header, and get the "undefined" body) 

, 나는 "정의되지 않은"몸이 정의되지 않은 경로의 기본 동작입니다 있으리라 믿고있어.

각 깊이에 규칙을 추가하지 않고 캐치 올 경로를 만드는 방법이 있습니까?

답변

2

아이언 (eyeiron)에 대한 애드온 서비스를 제공하는 정적 파일 인 node-ecstatic를 사용해 볼 수 있습니다. 그것은 나를 위해 잘 작동하고 당신이 그것을 찾을 수 있습니다

https://github.com/colinf/node-ecstatic

2

의 OnError 사용해보십시오 :

app.use(flatiron.plugins.http,{ 
    onError: function (err) { 
     this.res.end('Nope'); 
    } 
}); 

난 당신이 아이언을 사용하는 것이 좋습니다 정적 파일을 관리하려면/연합 + connect.static