Livewire is a full-stack framework for Laravel. It allows you to build dynamic front-end applications without leaving the comfort of PHP/Laravel/Blade.
It is similar to projects like Phoenix Liveview however it isn't "live" in that it doesn't use real-time connections like websockets. Just simple http requests.
It renders on the server and uses morphing algorithm to path the DOM with updates from the server.
It "dehdrates" the state of a component into a JS-consumable object that is passed back to the server to be "hydrated" during the next request.
- Laravel + PHP + Vanilla JS
- JS Bundling: esbuild
src/ → The PHP source files
- Features/ → Individual ~modules to isolate features
js/ → The JavaScript source files
tests/ → A smattering of PHP tests however, most tests are inside their src/Feature directories
Run npm run build to bundle the JS
- Write JavaScript without semicolons
- Always use
let(noconst) - Strive for single-word features and affordances (ex.
wire:click.stopinstead ofwire:click.stop-propagation)
Most browser and unit tests live inside of feature directories for example:
src/Features/SupportSlots/[UnitTest.php|BrowserTest.php]
Unit: Run phpunit --testsuite="Unit" [optional test file] [optional test name]
Browser: Run phpunit --testsuite="Browser" [optional test file] [optional test name]