借助react-laravel
您將能夠直接從 Blade 視圖中使用 ReactJS 元件,並具有可選的伺服器端渲染,並且由於 JavaScript 不顯眼,因此可以透過 React 在客戶端上使用它們。
重要的是要知道react-laravel
間接依賴 v8js PHP 擴充。
您可以在這裡查看如何安裝它:如何安裝 v8js。
將composer.json
的minimum-stability
設為dev
,加入以下內容:
“最低穩定性”:“開發”
然後運行:
$ 作曲家需要 talyssonoc/react-laravel:0.11
之後,您應該將其新增至 Laravel 應用程式的config/app.php
檔案中的提供者:
'ReactReactServiceProvider'
然後運行:
php artisan 供應商:發布
react.php
檔案將位於應用程式的config
資料夾中。
安裝和配置後,您將能夠在視圖中使用@react_component
指令。
@react_component
指令接受 3 個參數:
@react_component(<元件名稱>[, props, options]) //範例 @react_component('Message', [ 'title' => 'Hello, World' ], [ 'prerender' => true ]) // 使用命名空間元件的範例 @react_component('Acme.Message', [ 'title' => 'Hello, World' ], [ 'prerender' => true ])
componentName
:是保存元件的全域變數的名稱。 使用命名空間元件時,您可以使用點符號作為元件名稱。
props
:將傳遞給元件的props
的關聯
options
:可以傳遞給react-laravel
的選項關聯陣列:
prerender
:告訴react-laravel在伺服器端渲染您的元件,然後將其安裝在客戶端。預設為true 。
tag
:保存元件的元素的標籤。預設為'div' 。
html 屬性:將新增至元件的包裝元素中的任何其他有效的 HTML 屬性。範例: 'id' => 'my_component'
。
您的所有元件都應該位於public/js/components.js
內(您可以對其進行配置,請參見下文)並且是全域的。
您必須在視圖中包含react.js
、 react-dom.js
和react_ujs.js
(按此順序)。您可以使用 laravel-elixir 將這些檔案連接在一起。
react-laravel
提供了 ReactJS 安裝和react_us.js
文件,安裝react-laravel
並運行後,它們將位於public/vendor/react-laravel
資料夾中:
$ php artisan 供應商:發布 --force
要使用由react-laravel
提供的文件和你的components.js
文件,請將其加入你的視圖:
<script src="{{ asset('vendor/react-laravel/react.js') }}"></script> <script src="{{ asset('vendor/react-laravel/react-dom.js') }}"></script> <script src="{{ asset('js/components.js') }}"></script> <script src="{{ asset('vendor/react-laravel/react_ujs.js') }}"></script>
如果您將使用與react-laravel提供的版本不同的版本(請參閱composer.json
),則必須對其進行配置(請參閱下文)。
您可以在config/react.php
檔案中將設定變更為react-laravel
:
返回 ['source' => 'path_for_react.js','dom-source' => 'path_for_react-dom.js','dom-server-source' => 'path_for_react-dom-server.js','元件' => ['path_for_file_containing_your_components.js'] ];
所有這些都是可選的。
source
:預設為public/vendor/react-laravel/react.js
。
dom-source
:預設為public/vendor/react-laravel/react-dom.js
。
dom-server-source
:預設為public/vendor/react-laravel/react-dom-server.js
。
components
:預設為public/js/components.js
。此處可以指定多個組件檔案。
您的components.js
檔案也應該包含在您的視圖中,並且所有元件都必須位於window
物件中。
這個包的靈感來自於react-rails。