compoundjs route学习

</pre>1. 基本路由方法。<p></p><p>(1) get  post put   del   all(适合所有的http方法。)</p><p>(2) 所有方法有以下特征:</p><p><strong>map.get(path,handler, middleware, options);    可用这个方法一条一条设置路由。其参数如下:</strong></p><p></p><ul><li>path中可能包含参数——以冒号“:”开始的。参数是可选的当它放在“?”之后。然后用req.params对象接收这个参数。</li><li>handler 指定控制器名和action名并用#分隔。但是路由内置控制器名时,控制器将被指定。</li><li>middleware 是函数或者一组函数</li><li>options包含路径参数的对象</li></ul><p></p><p>最常用的是path和handler.用path指定路径,hander中指定其控制器和Action用#号分开。例如:</p><p></p><pre name="code" class="javascript">map.get('/users', 'users#index');

map.get('/users/:user_id', 'users#get')         //users控制器   get Action

说明:按照官方文档,path和handler应该没有严格的对应关系。例如:

map.get('/view/users', 'students#list');
用vie/users路径访问时,它应该会走到students控制器,list Action。但是在我测试的时候,它会报错提示 Undefined action view#users。这说明它要走到vie控制器,users Action. 而不是我们上面给指定的控制器和方法。


2.      URL helper(URL助手)

它给我们提供方便的方法处理路径。

(1)

map.get('bunny','bunny#show');

 pathTo.bunny()   =>  /bunny 

当然我们也可以使用上面的  as 设置一个名字。例如:

map.get('/some/action','some#action', {as: 'myAction'});

pathTo.myAction()=> '/some/action'

as是上面 map.get(path,handler, middleware, options);的options的一个可用参数。用来设置URL helper name


(2)如果有参数,URL helper将会接收参数。

map.get('profile/:user','users#show');
map.get('posts/:post_id/comments/:comment_id','comments#show');

pathTo.profile('Bugs_Bunny','users#show');            //这是官方文档的写法,看着两个例子对比着看  特别奇怪。可能有出入。

>'/profile/Bugs_Bunny'

pathTo.post_comment(2,2383);                                   //注意这里的写法用 _   但是这里的s为什么不用写  奇怪

>'/posts/2/comments/2383'

下面的方法是从官方文档上看到的,设置路由方法简单,但是不清晰,我自己并没有使用过。

3.先进的路由方法。

(1)namespaces: (将一组控制器放在admin 命名空间,就应该将一组控制器放进app/controllers/admin)

Eg:

  map.namespace('admin', function (admin) {
    admin.resources('users');
});

然后我们使用compoundroutes命令查看:



(2)resources

    Eg:   

map.resources('posts');

说明:

  • 如果想改变resources默认指定的helper和path。可以使用两个参数。as和path.(就是改变上面第一列,或者第三列)例如

map.resources('posts', { path: 'articles', as: 'stories' });

  • 如果你只需要几个action(例如:index,show)你可以使用only参数指定, except参数:指定除了创建哪些路由。

map.resources('users', { only: ['index', 'show'] });

 

注意:

  • 这些内置的resource创建的路由只能创建出上面指定的action(index,create,new,update,destroy,show)。例如使用map.resources('users', { only: ['index', 'newindex'] }); 则newindex这个是不起作用的。
  •  但是我们可以通过如下方法添加:

map.resource('users',function (user) {
    user.get('avatar', 'users#avatar');                  // /users/:user_id/avatar
    user.get('top', 'users#top', {collection:true});     // /users/top
});


4.  路由对象可用compound 对象定义。

Eg:

compound.on('routes', function(map, compound) {
    map.get('auth','session#auth');
});

It could be useful when you want to define some routesbefore application initialization. When app initializeduse compound.map object.


5.调试路由。

(1)使用compound routes命令打印出所有路由

(2)可以简写并加参数过滤。Compound r GET/new/posts 

     如上所示:过滤时可以指定以请求方式过滤   以action名过滤   以helper名过滤等。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值