Подтвердить что ты не робот

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

Нет путей для/компонентов, поэтому http://my.project/components/jquery/jquery.js возвращается с Cannot GET /components/jquery/jquyery.js

Может кто-нибудь, пожалуйста, сообщите мне, что лучший способ добавить маршрутизацию для всех компонентов под/компонентами?

4b9b3361

Ответ 1

Вероятно, вы захотите использовать статическое промежуточное ПО для этого. Я не знаком с 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>

Ответ 2

Если вы используете connect-assets, что-то вроде этого хорошо работает:

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