gpt4 book ai didi

javascript - Laravel 路由的 Javascript 中的全局变量 - 这是个好主意吗?

转载 作者:行者123 更新时间:2023-12-02 14:23:38 24 4
gpt4 key购买 nike

我使用 View Composer 创建了一些代码,将我的路线集合传递到所有 View 的前端,这样我就可以通过与它们关联的命名路线来访问 Vuejs 中的所有 Laravel 路线。

例如,要使用 vue 组件上传图像,不要将我的上传路由传递到 Vue 组件,而是将其列为全局变量的一部分:

var uploadRoute     = _.find(globalRoutes, function(route) { return route.name == 'route-name.image.upload' });
$.post(uploadRoute, data) ... etc

我的问题是......这合理吗?我正在公开发布我的整个应用程序的路线。

谢谢

最佳答案

我认为您关于公开整个应用程序路线的预感是合理的。 IMO 你应该明确选择你需要的路线。因此,在这种情况下,您应该只公开 route-name.image.upload。您可以创建一个小型辅助函数来查找路由并将其与 URL 一起输出为 JSON。

function json_routes(array $routes)
{
$return = [];

foreach($routes as $route)
{
$return[$route] = route($route);
}

return new \Illuminate\Support\HtmlString(json_encode($return));

}

在你的主视图中:

var routes = {{ json_routes(["route-name.image.upload"]) }};

获取路线很简单:

routes['route-name.image.upload']; 

这是我能想到的最基本的例子。您可以对其进行相当多的优化。只是一些想法:

  • 将路线放在中心位置,fx。配置元素:json_routes(config('app.json_routes'))
  • 构建一个生成静态 .json 文件的命令,这样您就不会在每个页面加载时迭代路由。添加更多路线时请记住重新生成。
  • 创建一个函数而不是一个对象来获取路线。这允许您构建逻辑并在 js 中提供更像 Laravel 的感觉: function route(path){ return window.routes.hasOwnProperty(path) ? window.routes[path] : null ;}

  • (高级) 重写 Laravels 路由器逻辑并 Hook 到选项数组,允许您执行类似 Route::get('dashboard', '.. .', ['as'=>'dashboard', 'expose'=>true]);,然后使用 expose 选项在所有路由上动态生成前面提到的 json 文件.

关于javascript - Laravel 路由的 Javascript 中的全局变量 - 这是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com