全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS中如何实现Laravel的route函数详解

大家应该都知道在Laravel的路由模块里,我们可以给每一个路由设定一个名字,比如:

Route::get('/blog/{blog}', 'BlogController@show')->name('blog.show')

然后就可以通过

route('blog.show', ['blog' => 1])

来获取到这个路由的访问地址,后端跳转可以用

return redirect()->route('blog.show', ['blog' => 1]);

这样做的好处是如果发生url变更,比如我想把 '/blog/{blog}'改成 '/boke/{blog}' ,只需要改路由文件,别的地方都不用调整。

但这个仅限于后端,以及blade模板可以使用,稍微上点规模的网站都会把js文件单独拎出来,不会直接写在blade模板中,这样就导致js里发ajax请求时或者页面跳转时只能将请求地址写死,比如

location.href = '/blog/' + id;

这样万一路由发生变更,还得去修改js文件,如果同一个路由被多个js调用,漏改一两个还是很容易发生的。所以我就考虑能不能在js中实现一个类似后端的route函数。

最终的解决方案很简单,两个函数就搞定。

后端部分需要实现一个函数

function route_uri($name)
{
 return app('router')->getRoutes()->getByName($name)->getUri();
}

这个函数的作用是根据路由名称返回原始的路由地址,比如:

echo route_uri('blog.show'); // 会输出/blog/{blog}

前端也只需要一个函数:

let route = (routeUrl, param) => {
 let append = [];
 for (let x in param) {
  let search = '{' + x + '}';
  if (routeUrl.indexOf(search) >= 0) {
   routeUrl = routeUrl.replace('{' + x + '}', param[x]);
  } else {
   append.push(x + '=' + param[x]);
  }
 }
 let url = '/' + _.trimStart(routeUrl, '/');
 if (append.length == 0) {
  return url;
 }
 if (url.indexOf('?') >= 0) {
  url += '&';
 } else {
  url += '?';
 }
 url += append.join('&');
 return url;
}

注:这里引用了lodash

这个函数的作用是:

route('/blog/{blog}', {blog: 1}); //返回 /blog/1
route('/blog/{blog}', {blog: 1, preview: 1}); //返回 /blog/1?preview=1

然后就很简单了,在blade模板中定义:

var routes = {
 blog: {
  show: '{{ route_uri('blog.show') }}',
  update: '{{ route_uri('blog.update') }}',
  destroy: '{{ route_uri('blog.destroy') }}'
 }
};

在js文件里就可以:

$.post(route(routes.blog.update, {blog: 1}), {title: 'xxx', content: 'xxx'})

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# laravel  # route函数  # route  # Laravel中前端js上传图片到七牛云的示例代码  # vuejs+element-ui+laravel5.4上传文件的示例代码  # Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作  # 详解用vue.js和laravel实现微信支付  # 详解用vue.js和laravel实现微信授权登陆  # 使用JS手写一个类似 Laravel 验证器的表单验证器  # 后端  # 很简单  # 只需要  # 跳转  # 一个函数  # 我就  # 多个  # 然后就  # 可以用  # 很容易  # 能在  # 我们可以  # 可以通过  # 这样做  # 还得  # 可以使用  # 会把  # 这篇文章  # 想把  # 能将 


相关文章: css网站制作参考文献有哪些,易聊怎么注册?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何在IIS中配置站点IP、端口及主机头?  如何获取免费开源的自助建站系统源码?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  常州自助建站工具推荐:低成本搭建与模板选择技巧  javascript中对象的定义、使用以及对象和原型链操作小结  网站制作公司排行榜,抖音怎样做个人官方网站  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  ,石家庄四十八中学官网?  如何快速查询网址的建站时间与历史轨迹?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何通过云梦建站系统实现SEO快速优化?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  西安大型网站制作公司,西安招聘网站最好的是哪个?  宿州网站制作公司兴策,安徽省低保查询网站?  建站主机选虚拟主机还是云服务器更好?  智能起名网站制作软件有哪些,制作logo的软件?  如何在阿里云完成域名注册与建站?  建站之星3.0如何解决常见操作问题?  SQL查询语句优化的实用方法总结  ,怎么在广州志愿者网站注册?  如何选择高效可靠的多用户建站源码资源?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  西安专业网站制作公司有哪些,陕西省建行官方网站?  建站主机选哪家性价比最高?  大同网页,大同瑞慈医院官网?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  油猴 教程,油猴搜脚本为什么会网页无法显示?  C++如何编写函数模板?(泛型编程入门)  免费网站制作appp,免费制作app哪个平台好?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  安云自助建站系统如何快速提升SEO排名?  高端企业智能建站程序:SEO优化与响应式模板定制开发  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  ,网站推广常用方法?  建站之星如何配置系统实现高效建站?  如何用PHP工具快速搭建高效网站?  如何快速登录WAP自助建站平台?  如何快速搭建高效香港服务器网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。