玩命加载中 . . .

主页 归档 分类 标签

ejs学习笔记

吐槽

之前笔记过于零散,做出来反而没有查阅的效果。或许里面不乏有些解决思路,但没有起到很好的复用。
今天尽量开始将尝试以主题形式去描述,我的技术文章。至于我的日常日记,当然还是琐碎的,对于我目前来说生活没有统一主题。

学习零散笔记

参观官方文档

  • 官网:ejs
  • 感受:官网是真的少可怜,贴了很少的介绍。具体一些用法都没有做到完整显示,只是用文字去描述。还有一些用例已经换代了,这大概是失修已久的感觉。

搜索问题

看视频

  • 网站:b站
  • 这是我这段时间以来,头一次看视频学习。视频一般对我来说太慢了,而且讲了一下大概ejs,最终我放弃了,因为视频的验证成本太高了。他讲的很基础,而且他还说嵌入式代码开发(类似 php已经不适合现在的开发模式了)

readme

  • 模块里面的readme可能会稍微详细点。

技巧

变量运算

<% var num=0;
if(num)num++;%>
<%- num %>

迭代

<% var array=[1,2,3,4]; %>
<% array.forEach(i){%>
<%= i %>
<% }) %>

脚本变量

<%# 接受字符串整数布尔值以及其组成数组 %>
<%# 接受对象的字符串数字属性值 %>
<% let arr=[1,true,"11"];let obj={name:"fireman34",age:22} %>
<script>
console.log(<%= arr %>,"<%= obj.name %>",<%= obj.age %>
</script>

碰到的问题

cache缓存

  • 官方在cache使用第一次语焉不详,第二次版本落后了。
  • 我花了点时间查看一下源码,大概看懂是构造类,需要把参数变为{max:100};代码如下
    const LRU=require('lru-cache');
    const ejs=require('ejs');

    ejs.cache=new LRU({max:100});

插入模板

  • 这个就比较搞人了,你不会想到官方文档有多唬人。反正小白级别应该是妥妥倒地那种。
  • 之前使用插入模板报错,报错信息具体我也没有截图,不过可以大致列出最终堆栈抛出的异常位置,ejs/lib/ejs.js185 line 左右
  • 没想到这个问题,竟然激发了我的潜力,无师自通了,vscode断点调试和堆栈追踪以及调用引用。╮(╯▽╰)╭,但没有用。
  • 最后还是反复搜索Stack overflow才找到一个相对靠谱的解决。
  • 其实问题,我应该是能独自解决的,但花费时间可能会更长。
    const ejs=require('ejs');
    ejs.renderFile(filePath,data,(err,str)=>{
    response.end(str)
    });

总结

  • 不要使用fs模块,字符集utf-8的字节用ejs.render渲染一个foreach里面的集合元素的字符串属性,这样会乱码。
  • 不要使用ejs.render去处理带incluedejs文件,会报错,具体原因没有细究

关于hexo模板使用问题

上述的引用类型变量在hexo的script里无法使用,但在偶然的情况,我找到了对的方法。

快赞美我吧,这个可是官方教程上没有的东西哦,( ̄︶ ̄)↗ 

对于字符串,我们使用"<%= string %>"

对于数字,我们使用 <%= num %>

对于引用类型,我们使用 <%= JSON.stringify(object) %>

另外我们可以使用辅助函数来获取复杂的数据类型哦!

2022-06-26

上面有个小小的错误,当时我用ejs引擎但被问题并没有发现,我本来是想通过手动转义处理,但在谷歌搜索也知道了答案,

谷歌的搜索,#&34;这个会被处理掉,所以拆开搜索。

StackOverflow,StackOverflow Answer,其实ejs官网上也有,我自己的知识范围应该也是没有,但是我没有想到。

<%- 引用类型ejs %>

另外,没有想到别人也和我一样找到了引用类型输出的解决方法,它看起来也很简单。

2022-06-27该吃早餐了,已经十一点┭┮﹏┭┮。

---------------- The End and I hope sunshines on the outside. ----------------
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022 Ma
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信