v/vlib/vweb/README.md

56 lines
1.3 KiB
Markdown
Raw Normal View History

2019-07-29 19:46:26 +02:00
This is pre-alpha software.
Lots of things are broken and not implemented yet in V and vweb.
2019-07-30 21:15:17 +02:00
There's no documentation yet, have a look at a simple example:
2019-07-29 18:50:25 +02:00
2019-07-30 21:15:17 +02:00
https://github.com/vlang/v/tree/master/examples/vweb/test_app.v
There's also the V forum: https://github.com/vlang/vorum
`vorum.v` contains all GET and POST actions.
2019-07-29 18:50:25 +02:00
2019-07-29 19:46:26 +02:00
```Go
2019-07-29 18:50:25 +02:00
pub fn (app mut App) index() {
posts := app.find_all_posts()
$vweb.html()
}
// TODO ['/post/:id/:title']
// TODO `fn (app App) post(id int)`
pub fn (app App) post() {
id := app.get_post_id()
post := app.retrieve_post(id) or {
app.vweb.redirect('/')
return
}
comments := app.find_comments(id)
show_form := true
$vweb.html()
}
```
`index.html` is an example of the V template language:
2019-07-29 19:46:26 +02:00
```html
2019-07-29 18:50:25 +02:00
@for post in posts
<div class=post>
<a class=topic href="@post.url">@post.title</a>
<img class=comment-img>
<span class=nr-comments>@post.nr_comments</span>
<span class=time>@post.time</span>
</div>
@end
```
`$vweb.html()` compiles an HTML template into V during compilation, and embeds the resulting code in current action.
2019-09-14 22:54:14 +02:00
That means that the template automatically has access to that action's entire environment.
2019-07-29 19:46:26 +02:00
### Deploying vweb apps
Everything, including HTML templates, is in one binary file. That's all you need to deploy.