Skip to content

Commit 542fb0a

Browse files
committed
Create a simple router and template engine
1 parent 97e882b commit 542fb0a

File tree

14 files changed

+97
-29
lines changed

14 files changed

+97
-29
lines changed

app.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
error TS6053: File 'app.ts' not found.

app/client/index.html

+1-17
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,7 @@
1010
</head>
1111

1212
<body>
13-
14-
<article id="webslides">
15-
<section>
16-
<h1>Slide 1</h1>
17-
</section>
18-
<section class="bg-black aligncenter">
19-
<!-- .wrap = container 1200px -->
20-
<div class="wrap">
21-
<h1>Slide 2</h1>
22-
</div>
23-
</section>
24-
</article>
25-
26-
<div class="ck-site">
27-
<h1>Hello World!</h1>
28-
</div>
29-
13+
<div id="webslides"></div>
3014
<script src="js/app.js"></script>
3115
</body>
3216
</html>

app/client/ts/app.router.ts

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import * as $ from 'jquery';
2+
import 'webslides/static/js/svg-icons.js';
3+
import 'webslides/static/js/webslides.js';
4+
5+
import {Slide} from './shared/slide';
6+
import {HomeSlide} from './home';
7+
import {MeSlide} from './me';
8+
9+
export default class {
10+
private slides: Slide[];
11+
private $container;
12+
13+
constructor(container) {
14+
this.$container = $(container);
15+
this.slides = [
16+
new HomeSlide(),
17+
new MeSlide()
18+
];
19+
20+
this.init();
21+
}
22+
23+
private init(): void {
24+
let $templates = $('<div/>');
25+
for (let slide of this.slides) {
26+
$templates.append(slide.compile());
27+
}
28+
29+
this.$container.append($templates);
30+
}
31+
}

app/client/ts/app.ts

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
// import $ from 'jquery';
2-
1+
import * as $ from 'jquery';
32
import 'webslides/static/js/svg-icons.js';
43
import 'webslides/static/js/webslides.js';
54

6-
interface IExample {
7-
readonly name: string;
8-
}
5+
import Router from './app.router';
96

10-
class Example implements IExample {
11-
public readonly name = 'test';
12-
}
7+
let selectors = {
8+
wrapper: '#webslides'
9+
};
1310

14-
let example = new Example();
11+
class App {
12+
private router: Router;
13+
14+
constructor() {
15+
this.router = new Router(selectors.wrapper);
16+
}
17+
}
1518

16-
console.log(example.name);
19+
new App();

app/client/ts/home/home.slide.ts

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {Slide} from '../shared/slide';
2+
import template from './home.template';
3+
4+
export class HomeSlide extends Slide {
5+
constructor() {
6+
super();
7+
this.template = template;
8+
}
9+
}

app/client/ts/home/home.template.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default options => `
2+
<section class="bg-black aligncenter">
3+
<div class="wrap">
4+
<h1>Home Slide</h1>
5+
</div>
6+
</section>
7+
`;

app/client/ts/home/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './home.slide';

app/client/ts/me/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './me.slide';
2+
export * from './me.template';

app/client/ts/me/me.slide.ts

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {Slide} from '../shared/slide';
2+
import template from './me.template';
3+
4+
export class MeSlide extends Slide {
5+
constructor() {
6+
super();
7+
this.template = template;
8+
}
9+
}

app/client/ts/me/me.template.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default options => `
2+
<section class="aligncenter">
3+
<div class="wrap">
4+
<h1>Me Slide</h1>
5+
</div>
6+
</section>
7+
`;

app/client/ts/shared/slide/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './slide';

app/client/ts/shared/slide/slide.ts

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export class Slide {
2+
protected template = options => ``;
3+
public compile(options = {}): any {
4+
return this.template(options);
5+
}
6+
}

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"body-parser": "^1.17.1",
77
"express": "^4.15.2",
88
"express-spa": "0.0.2",
9+
"jquery": "^3.1.1",
910
"normalize-scss": "^6.0.0",
1011
"typescript": "^2.2.1",
1112
"webslides": "^1.2.1"

tasks/ts.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@ module.exports = (gulp, paths, $, _) => {
66

77
return browserify({debug: $.environment.is.development() ? true : false})
88
.add(_.files(paths.app.client.main))
9-
.plugin(tsify)
9+
.plugin(tsify, {
10+
"module": "commonjs",
11+
"target": "es5",
12+
"noImplicitAny": false,
13+
"sourceMap": false,
14+
"allowSyntheticDefaultImports": true
15+
})
1016
.bundle()
11-
.on('error', function (error) { console.error(error.toString()); })
17+
.on('error', error => console.error(error.toString()))
1218
.pipe(fs.createWriteStream(_.folder(paths.dist.client.js) + '/app.js'));
1319
};

0 commit comments

Comments
 (0)