web-dev-qa-db-ja.com

BowerコンポーネントのExpress.jsルーティング

Express.jsプロジェクトを変更して、bowerを使用してコンポーネントをインストールしました。すべてのコンポーネントは/components(/components/jquery/jquery.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

/ componentsのルートがないため、http://my.project/components/jquery/jquery.jsCannot GET /components/jquery/jquyery.jsで返されます

/ componentsの下にあるすべてのコンポーネントにルーティングを追加するための最良の方法を教えてもらえますか?

20
Tamas

これを行うには、静的ミドルウェアを使用することをお勧めします。私はbowerに精通していませんが、すべてのコンポーネントが/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>
53
Pickels

Connect-assetsを使用する場合、次のようなものが適切に機能します。

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

次に、jsマニフェストに、他のjsアセットと同様にbowerコンポーネントを含めることができます。 Assets/application.js:

// bower components:
//= require jquery/dist/jquery
//= require underscore/underscore
//= require backbone/backbone
// local assets:
//= require my_app
5
Duke