UNPKG

2.88 kBJavaScriptView Raw
1"use strict";
2const http = require("http");
3const url = require("url");
4const fs = require("fs");
5const aries = require("../index.js");
6const path = require("path");
7const util = require('util');
8
9//设置白羊座
10aries.set({
11 path:__dirname,
12 includeId:function(templateId, cb){
13 return fs.readFile(path.join(__dirname,templateId+'.html'), cb)
14 },
15 cacheTime:10000,
16})
17
18let server = http.createServer((req, res) => {
19
20 let parseObj = url.parse(req.url, true);
21
22 if(parseObj.pathname.indexOf("/sync") === 0){
23 return syncTemplate(req, res);
24 }
25
26 if(parseObj.pathname.indexOf("/async") === 0){
27 return asyncTemplate(req, res);
28 }
29 if(parseObj.pathname.indexOf("/debug") === 0){
30 return debugTemplate(req, res);
31 }
32 if(parseObj.pathname.indexOf("/fature") === 0){
33 return templateFature(req, res);
34 }
35
36
37
38 res.statusCode = 200;
39 res.end("not found");
40
41});
42
43server.listen(3001);
44console.log("listen port "+ 3001)
45
46//异步错误响应
47let errorResp = (req, res, err) => {
48 res.writeHead(500, {
49 "Content-Type": "text/html",
50 });
51 res.end(util.format("%s", err.prettyStack));
52}
53
54
55//同步渲染模板
56let syncTemplate = (req, res) => {
57 let s1 = Date.now()
58 res.end("<% includeId 5710b3053caccff63744a3f5 %>"+'<br/>消耗时间:'+(Date.now()-s1)+';')
59
60}
61
62
63
64//异步渲染模板
65let asyncTemplate = (req, res) => {
66 let s1 = Date.now()
67 let ctx = {
68 "http":http,
69 "msg":"这时一个异步模版",
70 "fs":fs,
71 }
72 aries.compileFile("async_example.html", ctx, (err, renderStr, isUseCache) => {
73 err && errorResp(req, res, err);
74 res.writeHead(200, {
75 "Content-Type": "text/html",
76 });
77 res.end(renderStr+'<br/>消耗时间:'+(Date.now()-s1)+'; 是否使用缓存:'+ (isUseCache||"false"));
78 })
79
80}
81//模板支持的特性
82let templateFature = (req, res) => {
83 let s1 = Date.now()
84 let ctx = {
85 print:function(str) {
86 return util.format("%s + %s + %s", str, str, str)
87 },
88 data:["a","b","c","d","e","f","g"]
89 };
90
91 aries.compileFile("fature_example.html", ctx, (err, renderStr, isUseCache) => {
92 err && errorResp(req, res, err);
93 res.writeHead(200, {
94 "Content-Type": "text/html",
95 });
96 res.end(renderStr+'<br/>消耗时间:'+(Date.now()-s1)+'; 是否使用缓存:'+(isUseCache||"false"));
97 })
98
99}
100
101
102//测试控制器
103let debugTemplate = (req, res) => {
104 let s1 = Date.now()
105 let ctx = {
106 //"http":http,
107 "msg":"这时一个异步模版",
108 "fs":fs,
109 }
110 aries.compileFile("async_debug.html", ctx, (err, renderStr, isUseCache) => {
111 err && errorResp(req, res, err);
112 res.writeHead(200, {
113 "Content-Type": "text/html",
114 });
115 res.end(renderStr+'<br/>消耗时间:'+(Date.now()-s1)+'; 是否使用缓存:'+ (isUseCache||"false"));
116 })
117
118}
\No newline at end of file