guansunyata / laravel-server-side-rendering
在 Laravel 应用中实现服务器端渲染 JavaScript(从 spatie/laravel-server-side-rendering 分支而来)
Requires
- php: ^7.0
- guansunyata/server-side-rendering: ^0.3.0
- illuminate/support: 5.2.*|5.5.*|5.6.*|5.7.*
Requires (Dev)
- orchestra/testbench: ~3.5|~3.6|~3.7
- phpunit/phpunit: ^6.0|^7.0
- dev-master
- 1.1.0.x-dev
- 1.1.0
- 1.0.2
- 1.0.1-patch-1.2
- 1.0.1-patch-1.1
- 1.0.1-patch-1.0
- 1.0.1-patch-0.5
- 1.0.1-patch-0.4
- 1.0.1-patch-0.3
- 1.0.1-patch-0.2
- 1.0.1-patch-0.1
- 1.0.1
- 0.3.x-dev
- 0.3.0
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- dev-dev
- dev-1.0.1-patch-1.1
- dev-1.0.1-patch-1.0
- dev-1.0.1-patch-0.5
- dev-1.0.1-patch-0.4
- dev-1.0.1-patch-0.1
- dev-dev-master
- dev-1.0.1-patch
This package is not auto-updated.
Last update: 2024-09-20 08:27:44 UTC
README
在 Laravel 中让服务器端渲染变得更容易。
<html> <head> <title>My server side rendered app</title> <script defer src="{{ mix('app-client.js') }}"> </head> <body> {!! ssr('js/app-server.js') !!} </body> </html>
此包是 spatie/server-side-rendering 库的 Laravel 桥接器。在开始之前,查看说明文档了解底层概念和注意事项。此说明文档还假设您已经对构建服务器端渲染 JavaScript 应用有一些了解。
Vue 和 React 示例应用可在 spatie/laravel-server-side-rendering-examples 查看。
安装
您可以通过 composer 安装此包
composer require spatie/laravel-server-side-rendering
服务提供者和 Ssr
别名将自动注册。
如果您想调整一些设置,可以可选地发布配置文件。
php artisan vendor:publish --provider="Spatie\Ssr\SsrServiceProvider" --tag="config"
使用
先决条件
首先,您需要选择一个引擎来执行您的脚本。服务器端渲染库附带 V8 和 Node 引擎。默认情况下,该包配置为使用 Node,因为您可能已经在其系统上安装了它。
在您的 .env 文件中设置 NODE_PATH
环境变量以开始
NODE_PATH=/path/to/my/node
您还需要确保存在 storage/app/ssr
文件夹,或更改 ssr.node.temp_path
配置值。
如果您想使用 V8 引擎,可以跳过前面的两个步骤。但是,您需要安装 v8js 扩展。
配置
除此之外,无需其他配置。如果您仍需调整设置,请参阅 config 文件,该文件有很好的文档。
设置您的脚本
您需要构建两个脚本:服务器脚本和客户端脚本。有关如何构建这些脚本,请参考您选择的前端框架的文档。
mix.js('resources/assets/js/app-client.js', 'public/js') .js('resources/assets/js/app-server.js', 'public/js');
服务器脚本应传递给 ssr
函数,客户端脚本应手动加载。该包假定您正在使用 Laravel Mix,并将为您解析路径。您可以在配置文件中将 mix
设置为 false
以取消此行为。
{!! ssr('js/app-server.js) !!} <script src="{{ mix('js/app-client.js') }}">
您的服务器脚本应调用一个 dispatch
函数,将渲染的 HTML 返回到视图。以下是一组用于服务器端渲染应用的 Vue 脚本的快速示例。有关如何将所有内容结合在一起的完整解释,请参阅 spatie/server-side-rendering 的说明文档。
// resources/assets/js/app.js import Vue from 'vue'; import App from './components/App'; export default new Vue({ render: h => h(App), });
// resources/assets/js/app-client.js import app from './app'; app.$mount('#app');
// resources/assets/js/app-server.js import app from './app'; import renderVueComponentToString from 'vue-server-renderer/basic'; renderVueComponentToString(app, (err, html) => { if (err) { throw new Error(err); } dispatch(html); });
在视图中渲染应用
该包提供了一个 ssr
辅助函数来渲染您的应用。
<html> <head> <title>My server side rendered app</title> <script defer src="{{ mix('app-client.js') }}"> </head> <body> {!! ssr('js/app-server.js')->render() !!} </body> </html>
也提供了一个门面。
<html> <head> <title>My server side rendered app</title> <script defer src="{{ mix('app-client.js') }}"> </head> <body> {!! Ssr::entry('js/app-server.js')->render() !!} </body> </html>
渲染选项可以在函数或门面调用之后链式调用。
<html> <head> <title>My server side rendered app</title> <script defer src="{{ mix('app-client.js') }}"> </head> <body> {!! ssr('js/app-server.js')->context('user', $user)->render() !!} </body> </html>
有关可用选项的文档,请参阅 spatie/server-side-rendering。
测试
composer test
更新日志
请参阅 CHANGELOG 了解最近发生了什么变化。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请通过电子邮件 freek@spatie.be 而不是使用问题跟踪器。
明信片软件
您可以使用这个包,但如果它进入了您的生产环境,我们非常感谢您从您的家乡给我们寄一张明信片,注明您正在使用我们哪个包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
我们将所有收到的明信片发布在我们的公司网站上。
致谢
支持我们
Spatie是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到所有开源项目的概述链接。
您的业务是否依赖于我们的贡献?请与我们联系,并在Patreon上支持我们。所有的承诺都将用于分配人力资源以维护和新酷的功能。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。