6

我正在构建一个简单的sails.js 项目并使用主干实现前端。

理想情况下,我想要一条路由到我的主干应用程序所在的一个索引页面。

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

这很棒,所以现在任何 URL 都会转到主页。除了现在,任何资产(.js、.css、.html、.jpg)的所有路由都不再起作用。

我可以在下面看到这条评论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'

但这对我来说没有任何意义。如何忽略带有文件扩展名的路由。

我还在我所有的 CRUD url 前面加上了“api”,localhost:1337/api/controller/因此还需要一个排除转发这些的正则表达式路由。我在任何地方都找不到有关如何执行此操作的任何信息。

我必须在这里遗漏一些基本的东西。

谢谢!

4

2 回答 2

9

您可以使用 skipAssets 和 skipRegex 标志。这不会踩到您的静态资产,也不会阻止您以 /api 开头的 api url。我在 html5Mode 中将它与sails.js 和angular 一起使用。

  "get *":{
    controller:"PagesController",
    action:"index",
    skipAssets: true,
    skipRegex: /^\/api\/.*$/
  }
于 2015-02-11T10:47:36.663 回答
2

我认为这是一个错误,但我找到了解决方法。

'get /[^.?]+?': 'UserController.profile'

或者你可以使用其他的。只有/user并且/profile会执行UserController.profile。静态目录仍然很好用。

'get /:action( user | profile)': 'UserController.profile'

于 2013-11-09T16:14:09.693 回答