2013-08-20 61 views
20

我已將Express.js項目更改爲使用涼亭來安裝組件。所有組件都安裝在/ components(/components/jquery/jquery.js ...等)下。用於涼亭組件的Express.js路由

我創造我自己的路由器,以及看起來像這樣:

app.get('/', routes.index); // main page 
app.get('/p/:name', routes.p); //redirect routes 

app.get('/api/contacts', api.contacts); //look at all 
app.get('/api/contact/:id', api.contact); //look at one 
app.post('/api/contact', api.add); //add contact 
app.put('/api/contact/:id', api.edit); //edit&update contact 
app.delete('/api/contact/:id', api.delete); //delete contact 

有因爲沒有路/組件因此http://my.project/components/jquery/jquery.js回來了Cannot GET /components/jquery/jquyery.js

可有人請讓我知道什麼是爲/ components下的所有組件添加路由的最佳方法是什麼?

回答

53

您可能想要使用靜態中間件來執行此操作。我不熟悉的亭子,但如果所有組件都在/components安裝,那麼你可以做到以下幾點:

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

這意味着,如果你有/components/jquery/jquery.js你可以

<script src='/jquery/jquery.js'></script> 

如果你更包括它與/components前綴它,你可以這樣做:

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

這樣,你可以要求腳本:

<script src='/components/jquery/jquery.js'></script> 
5

如果您使用連接的資產,這樣的效果很好:

app.use require("connect-assets")(paths: ['assets/js', 'assets/css', 'bower_components']) 

然後在你的js表現,你可以簡單地包括涼亭的部件像其他JS資產。 資產/ application.js中:

// bower components: 
//= require jquery/dist/jquery 
//= require underscore/underscore 
//= require backbone/backbone 
// local assets: 
//= require my_app 
+0

我一直在尋找的涼亭支持添加到基於黑客馬拉松,啓動項目,這是完美的! – DigitalDesignDj