node.js异步模版ariestp
开源一个node.js的异步模版,具体这个模版和其他模版有什么区别呢?
线上开源项目地址: https://github.com/DoubleSpout/ariestp
其实这个模版实现的功能很简单,可以把一些异步操作,放在模版里去执行,举个简单的例子如下:
"use strict";
const aries = require("ariestp");
const fs = require("fs");
const http = require("http");
const asyncTpl = `<%?
ctx.thinking;
setTimeout(function () {
ctx.thinking = "1 seconde later"
aries();
}, 1000);
%>
<%- ctx.thinking %>
<%?
ctx.http.get('http://www.baidu.com/', (res) => {
ctx.status = res.statusCode;
res.resume();
aries();
}).on('error', (e) => {
ctx.status = 500;
aries();
});
%>
<%- ctx.status %>
`;
aries.compile(asyncTpl, {http:http}, (err, renderStr, isUseCache) => {
if(err) return console.log(err);
console.log(renderStr);
});
模板语言和 ejs 类似,不过多了一个 <%? … %> 这样的异步流程控制,在异步流程结束后,记得需要调用一下 aries(); 表示异步结束,继续执行模板解析。
上述代码执行结果如下: 1、模版将等待1秒钟后输出 “1 second later" 2、然后模版将请求 www.baidu.com 然后将百度的返回的status打印出来,不出意外就是打印"200”
至于为什么要做这样一个可以在模板里执行异步操作的模板引擎呢?也是公司项目的特殊需要,想要做到就是不发布代码,直接可以修改页面的展示,至于模板性能肯定是不如同步的 ejs 的,做过压测,大约是ejs性能的70%左右。
分享给大家,如果各位朋友类似的需求,可以使用这个库来帮助开发。