node.js 강좌




Bower 구성 요소를위한 Express.js 라우팅 (2)

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 http://my.project/components/jquery/jquery.js 와 함께 다시 나타납니다.

누군가가 / 구성 요소 아래의 모든 구성 요소에 대한 라우팅을 추가하는 가장 좋은 방법을 알려주십시오.


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

이 작업을 수행하려면 정적 미들웨어를 사용하는 것이 좋습니다. 나는 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>




bower