Search code examples
javascriptnode.jsbackbone.jssails.js

Sails.js regex routes


I am building a simple sails.js project and implementing the front end with backbone.

Ideally I want a single route to the one index page in which my backbone app is served.

'/*': {
    view: 'home/index'
}

This is great, so any URL now goes to the homepage. Except now, all the routes to any assets (.js, .css, .html, .jpg) do not work anymore.

I can see this comment in the config.routes.js:

// NOTE:
// You'll still want to allow requests through to the static assets,
// so we need to set up this route to ignore URLs that have a trailing ".":
// (e.g. your javascript, CSS, and image files)
'get /*(^.*)': 'UserController.profile'

But it doesn't make any sense to me. How do I ignore routes with a file extensions.

I have also prefixed all my CRUD url's with 'api', localhost:1337/api/controller/ so a regex route to exclude forwarding those would also be required. I cannot find any information on how to do this anywhere.

I must be missing something fundamental here.

Thanks!


Solution

  • You can use the skipAssets and skipRegex flags. This will not step on your static assets and will not block your api urls starting with /api. I use this with sails.js and angular in html5Mode.

      "get *":{
        controller:"PagesController",
        action:"index",
        skipAssets: true,
        skipRegex: /^\/api\/.*$/
      }