-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrender.js
55 lines (52 loc) · 1.12 KB
/
render.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
export function layout(title, content) {
return `
<html>
<head>
<title>${title}</title>
<link rel="stylesheet" href="/public/main.css">
</head>
<body>
<section id="content">
${content}
</section>
</body>
</html>
`
}
export function list(posts) {
let list = []
for (let post of posts) {
list.push(`
<li>
<h2>${ post.title }</h2>
<p><a href="/post/${post.id}">Read post</a></p>
</li>
`)
}
let content = `
<h1>Posts</h1>
<p>You have <strong>${posts.length}</strong> posts!</p>
<p><a href="/post/new">Create a Post</a></p>
<ul id="posts">
${list.join('\n')}
</ul>
`
return layout('Posts', content)
}
export function newPost() {
return layout('New Post', `
<h1>New Post</h1>
<p>Create a new post.</p>
<form action="/post" method="post">
<p><input type="text" placeholder="Title" name="title"></p>
<p><textarea placeholder="Contents" name="body"></textarea></p>
<p><input type="submit" value="Create"></p>
</form>
`)
}
export function show(post) {
return layout(post.title, `
<h1>${post.title}</h1>
<p>${post.body}</p>
`)
}