Views
v0.1.3
v0.5.1 (latest) v0.5.0 v0.4.31 v0.4.30 v0.4.29 v0.4.28 v0.4.27 v0.4.26 v0.4.25 v0.4.24 v0.4.23 v0.4.22 v0.4.21 v0.4.20 v0.4.19 v0.4.18 v0.4.17 v0.4.16 v0.4.15 v0.4.14 v0.4.13 v0.4.12 v0.4.11 v0.4.10 v0.4.9 v0.4.8 v0.4.7 v0.4.6 v0.4.5 v0.4.4 v0.4.3 v0.4.2 v0.4.1 v0.4.0 v0.3.1 v0.1.3 v0.1.2 v0.1.1 v0.1.0
Template views and page rendering
Apache-2.0 5.3k downloads
Updated 9 days ago Repository
viewstemplatesrenderingpages
Run
wippy run wippy/viewsViews
Template views and page rendering with Jet templates.
Installation
entries:
- name: views
kind: ns.dependency
component: wippy/views
version: "*"
parameters:
- name: api_router
value: app:api.public
Defining Pages
entries:
- name: my_page
kind: template.jet
meta:
type: view.page
title: My Page
path: /my-page
set: my_template_set
data_func: app:my_data_loader
resources:
- app:my_styles
Rendering
local renderer = require("renderer")
local content, err = renderer.render("app:my_page", {
id = "123" -- route params
}, {
sort = "name" -- query params
})
Page Registry
local page_registry = require("page_registry")
-- Get all pages
local pages, err = page_registry.find_all()
-- Get specific page
local page, err = page_registry.get("app:my_page")
-- Check access
if page_registry.can_access(page) then
-- render
end
Resource Registry
local resource_registry = require("resource_registry")
-- Get all resources
local resources, err = resource_registry.find_all()
-- Collect resources for a page
local page_resources = resource_registry.collect_for_page(page, page_registry, all_resources)
-- Group by type (css, js, etc.)
local grouped = resource_registry.group_by_type(page_resources)
Environment Variables
Map environment variables to template context:
entries:
- name: env_mapping
kind: registry.entry
meta:
type: view.env_mapping
priority: 20
mappings:
api_url: API_BASE_URL
app_name: APP_NAME
In templates:
<script>
window.API_URL = "{{ env.api_url }}";
</script>
Data Functions
-- app/data_loaders/my_page.lua
local function handler(context)
local params = context.params -- route params
local query = context.query -- query params
return {
items = fetch_items(params.id),
title = "Page " .. params.id
}
end
return {handler = handler}
Register as function:
entries:
- name: my_data_loader
kind: function.lua
source: file://data_loaders/my_page.lua
method: handler
Template Context
Templates receive:
data- Data from data functionresources- Grouped resources (css, js, etc.)query_params- URL query parametersroute_params- URL route parametersenv- Resolved environment variables
API Endpoints
When configured with a router, provides:
GET /pages- List all accessible pagesGET /render/:page_id- Render a page
Contracts
wippy.views:env_contract- Environment variable provider interface