JS中如何实现Laravel的route函数详解
发布时间 - 2026-01-10 23:00:04 点击率:次大家应该都知道在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 验证器的表单验证器
# 后端
# 很简单
# 只需要
# 跳转
# 一个函数
# 我就
# 多个
# 然后就
# 可以用
# 很容易
# 能在
# 我们可以
# 可以通过
# 这样做
# 还得
# 可以使用
# 会把
# 这篇文章
# 想把
# 能将
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何在腾讯云服务器上快速搭建个人网站?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
在线制作视频的网站有哪些,电脑如何制作视频短片?
SQL查询语句优化的实用方法总结
百度浏览器如何管理插件 百度浏览器插件管理方法
Python高阶函数应用_函数作为参数说明【指导】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
🚀拖拽式CMS建站能否实现高效与个性化并存?
googleplay官方入口在哪里_Google Play官方商店快速入口指南
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
如何基于云服务器快速搭建个人网站?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
如何在IIS中新建站点并解决端口绑定冲突?
Python文件操作最佳实践_稳定性说明【指导】
Laravel如何实现数据库事务?(DB Facade示例)
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
使用Dockerfile构建java web环境
如何在阿里云通过域名搭建网站?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
如何用PHP工具快速搭建高效网站?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何用搬瓦工VPS快速搭建个人网站?
大连 网站制作,大连天途有线官网?
linux写shell需要注意的问题(必看)
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何在景安云服务器上绑定域名并配置虚拟主机?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel如何使用Eloquent进行子查询
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】

