Files
pugz/examples/demo/README.md

90 lines
2.2 KiB
Markdown

# Pugz Demo App
A comprehensive e-commerce demo showcasing Pugz template engine capabilities.
## Features
- Template inheritance (extends/block)
- Partial includes (header, footer)
- Mixins with parameters (product-card, rating, forms)
- Conditionals and loops
- Data binding
- Pretty printing
## Running the Demo
### Option 1: Runtime Templates (Default)
```bash
cd examples/demo
zig build run
```
Then visit `http://localhost:5882` in your browser.
### Option 2: Compiled Templates (Experimental)
Compiled templates offer maximum performance by pre-compiling templates to Zig functions at build time.
**Note:** Compiled templates currently have some code generation issues and are disabled by default.
To try compiled templates:
1. **Compile templates**:
```bash
# From demo directory
./compile_templates.sh
# Or manually from project root
cd ../..
zig build demo-compile-templates
```
This generates compiled templates in `generated/root.zig`
2. **Enable in code**:
- Open `src/main.zig`
- Set `USE_COMPILED_TEMPLATES = true`
3. **Build and run**:
```bash
zig build run
```
The `build.zig` automatically detects if `generated/` exists and includes the templates module.
## Template Structure
```
views/
├── layouts/ # Layout templates
│ └── base.pug
├── pages/ # Page templates
│ ├── home.pug
│ ├── products.pug
│ ├── cart.pug
│ └── ...
├── partials/ # Reusable partials
│ ├── header.pug
│ ├── footer.pug
│ └── head.pug
├── mixins/ # Reusable components
│ ├── product-card.pug
│ ├── buttons.pug
│ ├── forms.pug
│ └── ...
└── includes/ # Other includes
└── ...
```
## Known Issues with Compiled Templates
The template code generation (`src/tpl_compiler/zig_codegen.zig`) has some bugs:
1. `helpers.zig` import paths need to be relative
2. Double quotes being escaped incorrectly in string literals
3. Field names with dots causing syntax errors
4. Some undefined variables in generated code
These will be fixed in a future update. For now, runtime templates work perfectly!