疑问
之前一直好奇类似openapi-generator-cli是如何使用Swagger文档的描述文件生成JavaScript请求代码的?一直以为是通过更底层“词法树”等方式转换的,发现自己想复杂了;其实就是通过一个“模版引擎”来生成,类似react、vue,不过更简介;
在openapi-generator-cli 使用OpenAPI Generator工具,而OpenAPI Generator使用了Mustache模版引擎,其实可以类比前端大家比较熟悉的一个库Handlebars;
下面是一个简单的demo
思考
- 通过这个例子发散思考,发现“跨端”的实现也不是那么难了(当然实际转换会复杂的很多),假设我们约定了一套写法,通过把写法转换成通用配置,在根据通用配置+模版引擎,就可以转换成各种文本了。
- 那么一些服务端渲染类似jsp、php的方式也就比较好实现,前端只需要用node服务获取一些数据,然后填充到模版中,直接返回一个完整的html模版就可以实现服务端渲染了;
- 还有一些报表统计类的数据报表,那么也可以通过这种方式,提前生成好一个html页面,那么每次访问其实就是生成好的html页面,不在需要请求、查询数据库等操作;
- 同样的一些低代码也可以通过这些来实现了,通过描述文件+模版引擎生成不同的代码写入到服务器上,然后通过浏览器访问这些生成的资源文件;
之前对于这种代码转换的操作,隐约知道中间过程肯定是有一个角色参与“转换”工作的,但是没有想到一个可行性的技术实现方案,昨天睡觉的时候突然想到这件事情,最后在和gpt的对话中找到了答案;之前某度上搜索可能描述不够准确所以没找到;
再次之前也做过一些类似的操作,但是都是使用字符串拼接模版,替换的方式,实现和维护起来都很烦;现在觉的豁然开朗了,以前遇到的一些问题,发现都可以使用该方案很好的去解决;