Skip to content

Commit efac273

Browse files
committed
Server Side Rendering Prototype
1 parent c09e241 commit efac273

File tree

7 files changed

+81
-7
lines changed

7 files changed

+81
-7
lines changed

dist/runtime.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ssr.js

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
"tornado": "./bin/tornado"
1111
},
1212
"keywords": [
13-
"HTML", "templating", "Dust", "asynchronous", "JavaScript", "ES6"
13+
"HTML",
14+
"templating",
15+
"Dust",
16+
"asynchronous",
17+
"JavaScript",
18+
"ES6"
1419
],
1520
"author": "Steven Foote",
1621
"license": "Apache",
@@ -35,7 +40,8 @@
3540
"test": "test"
3641
},
3742
"dependencies": {
38-
"cli": "^0.8.0"
43+
"cli": "^0.8.0",
44+
"simple-dom": "^0.2.4"
3945
},
4046
"repository": {
4147
"type": "git",

src/runtime.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -433,10 +433,10 @@ let tornado = {
433433
*/
434434
createTextNode(val) {
435435
if (this.util.isPromise(val)) {
436-
return val.then(data => document.createTextNode(data))
436+
return val.then(data => document.createTextNode(data.toString()))
437437
.catch(() => document.createTextNode(''));
438438
} else {
439-
return document.createTextNode(val);
439+
return document.createTextNode(val.toString());
440440
}
441441
},
442442

src/ssr.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import simpleDom from 'simple-dom';
2+
3+
global.document = new simpleDom.Document();
4+
5+
Object.defineProperty(simpleDom.Element.prototype, 'innerHTML', {
6+
get() {
7+
let serializer = new simpleDom.HTMLSerializer(simpleDom.voidMap);
8+
return this.firstChild ? serializer.serialize(this.firstChild) : '';
9+
}
10+
});
11+
12+
simpleDom.Node.prototype.replaceChild = function(newNode, oldNode) {
13+
this.insertBefore(newNode, oldNode);
14+
this.removeChild(oldNode);
15+
};
16+
17+
let tdSSR = {
18+
render(template, context) {
19+
let frag = template.render(context);
20+
let outer = document.createElement('div');
21+
outer.appendChild(frag);
22+
return outer.innerHTML;
23+
}
24+
};
25+
26+
export default tdSSR;

ssrTest.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
var parser = require('./dist/parser');
2+
var compiler = require('./dist/compiler'),
3+
td = require('./dist/runtime'),
4+
tdSSR = require('./dist/ssr');
5+
6+
global.td = td;
7+
var tlString = '<p>Hello, {#friends}{.}, {/friends}</p>';
8+
var tl = compiler.compile(parser.parse(tlString), 'ssrTest');
9+
tl = eval(tl);
10+
var out = tdSSR.render(tl, {friends: ['Jimmy', 'Kate', 'Prash']});
11+
console.log(out);

test/acceptance/test.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ li {
88

99
li.pass {
1010
background-color: #9BF29B;
11-
/*display: none;*/
11+
display: none;
1212
}

0 commit comments

Comments
 (0)