angularjs – 单页应用程序应该如何提供永久链接?
为通过单页面应用程序管理的资源提供可公开访问的URL有哪些约定?我认为这是一个建筑设计问题,但我预计会在AngularJS中开发SPA,以防万一.我是SPA的新手.
用户将通过SPA创建,查看和修改各种类型的资源(例如,基于服务器的对象).通过永久链接URL,公众也可以访问这些相同的资源.我很好用SPA在访问资源的永久链接URL时为访问者显示资源. 我只能想到这两种方法: >将所有资源放在http://example.com/resourcetype/resourceID,在此处实现RESTful API(改变HTTP方法). (在/ api下使用永久链接似乎不合理.通过“永久链接”,我只是指资源的公共未登录URL.) 我希望通过SPA导航到资源的用户到达可共享的URL,因为想要共享该页面的用户首先想要共享其URL,而不是首先找到指向永久链接页面的链接.这表明采用第一种方法,但第二种方法更适合通过诸如/ api / v1,/ api / v2等URL进行API版本控制. 避免URL中的哈希是理想的.我知道我可以在AngularJS中使用HTML5模式在支持该模式的浏览器中隐藏它们.这也需要服务器端支持,我已经看到了将深层链接重写为SPA访问URL链接的解决方案. 我想知道人们在做什么,以及人们是否发现自己在实践中限制了SPA的使用.谢谢你的帮助!
在我们的办公室,我们同时使用resourceIds和slug.任何可共享资源都将具有由资源模型的属性生成的slug属性.例如,任何为我们的SPA撰写文章的人都必须给文章一个标题.服务器在保存时验证该标题,以确保没有其他文章包含相同的标题.如果标题是唯一的,则为该资源生成一个slug并保存到我们的DB中,否则服务器会响应一条错误消息,指出标题不是唯一的.
然后在我们的状态声明中,当用户访问http:// example / articles / article-slug时,我们在API中查询与article-slug匹配的文章,如果没有找到文章则返回404. .state('app.articles.article',{ url: '/:slug',views: { articles: { templateUrl: tpl + 'views/frontend/articles.article.html',controller: 'ArticleCtrl',resolve: { article: ['$stateParams',function ($stateParams) { var slug = $stateParams.slug; // query API for slug }] } } } }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |