mustafarefaey / laravel-hybrid-spa
此包已被废弃且不再维护。未建议替代包。
Laravel 混合 SPA 响应助手。
v1.0.3
2021-01-10 21:29 UTC
Requires
- php: ^7.3|^7.4
- artesaos/seotools: ^0.19.1
- illuminate/contracts: ^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0
- phpunit/phpunit: ^9.3
- vimeo/psalm: ^3.11
This package is auto-updated.
Last update: 2021-03-10 22:00:11 UTC
README
Laravel HTTP 响应类,帮助你构建混合 SPA!
内容表
安装
您可以通过 composer 安装此包
composer require mustafarefaey/laravel-hybrid-spa
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="MustafaRefaey\LaravelHybridSpa\LaravelHybridSpaServiceProvider" --tag="config"
这是发布配置文件的内容
return [ /** * This should be a full HTTP/HTTPS URL to your JS app. * Example: 'https://example.com/app.js' */ 'js-app-url' => '', /** * This should be an array of full HTTP/HTTPS URLs to your stylesheets. * Example: ['https://example.com/app.css'] */ 'stylesheets' => [], /** * This should be the ID of the element that mounts the JS app. * Example: 'app' */ 'js-app-id' => '', /** * This must be a full qualified class path, that implements * `MustafaRefaey\LaravelHybridSpa\RetrievesSharedState` interface */ 'shared-state-handler' => '\\MustafaRefaey\\LaravelHybridSpa\\SharedState', /** * This is the name of the global JS variable, that will be injected with the shared state * Example: '__SHARED_STATE__', will be exposed as `window.__SHARED_STATE__` */ 'shared-state-variable' => '__SHARED_STATE__', /** * This is the name of the global JS variable, that will be injected with the page state * Example: '__PAGE_STATE__', will be exposed as `window.__PAGE_STATE__` */ 'page-state-variable' => '__PAGE_STATE__', /** * This is an array of arrays, to describe favicons * Must be in this format: * [ * ['href' => '', 'sizes' => '', 'type' => ''], * ['href' => '', 'sizes' => '', 'type' => ''], * ] * */ 'favicons' => [], ];
artesaos/seotools
包用于设置元标签。请查看他们的 配置文档。
ApiResponse
在控制器动作中使用此类以返回一致的 JSON 响应。
use MustafaRefaey\LaravelHybridSpa\ApiResponse;
成功响应
返回成功响应时使用 success
方法。
return ApiResponse::success();
成功响应可选参数
data
:任何数据的数组,这将被 json 编码。
messages
:任何消息的数组,这将被 json 编码。
HTTP 状态码
:默认为 200,除非你指定。
return ApiResponse::success(array $data = [], array $messages = [], int $code = 200);
成功响应格式
{ "status": true, "data": [], "success_messages": [] }
失败响应
返回失败响应时使用 fail
方法。
return ApiResponse::fail();
失败响应可选参数
data
:任何数据的数组,这将被 json 编码。
messages
:任何消息的数组,这将被 json 编码。
HTTP 状态码
:默认为 400,除非你指定。
return ApiResponse::fail(array $data = [], array $messages = [], int $code = 400);
失败响应格式
{ "status": false, "data": [], "error_messages": [] }
HybridResponse
在控制器动作中使用此类以返回一个加载 js 应用并传递初始页面状态的 HTML 页面。
如果请求期望 JSON 响应,它将以 ApiResponse
的形式返回页面的状态。
use MustafaRefaey\LaravelHybridSpa\HybridResponse;
return HybridResponse::make(array $pageState = []);
HTML 响应内容
- 在 head 标签内
- 通常需要的元标签:
<meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="csrf-token" content="{{ csrf_token() }}" />
- favicon:您可以在配置文件中设置它们。
- SEO 元标签:此包使用
artesaos/seotools
包来设置元标签。请查看他们的 文档。
- 通常需要的元标签:
- 在 body 标签内
- 将要挂载JS应用的Div元素:您可以在配置文件中设置其ID。
- 5个全局JS变量:
window.__SHARED_STATE__
:共享状态注入的位置。- 您可以在配置文件中重命名此变量。
- 要控制其值,您可以创建一个扩展
MustafaRefaey\LaravelHybridSpa\RetrievesSharedState
接口的类,然后根据需要更新配置文件中的shared-state-handler
。
window.__PAGE_STATE__
:页面状态注入的位置。- 您可以在配置文件中重命名此变量。
window.__SKIP_LOADING_PAGE_STATE_ONCE__
:此变量用于帮助JS应用跳过调用后端进行页面状态,并直接使用window.__PAGE_STATE__
。其初始值为true
,您一旦使用window.__PAGE_STATE__
,就应该将其设置为false
。window.__SESSION_SUCCESS_MESSAGES__
:会话成功消息注入的位置。window.__SESSION_ERROR_MESSAGES__
:会话错误消息注入的位置。
- JS应用脚本:您可以在配置文件中设置其URL。
测试
composer test
变更日志
请参阅CHANGELOG以获取最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
鸣谢
此包使用artesaos/seotools包来设置元标签。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。