如何从css文件导入样式到.ejs模板,并通过电子邮件发送它?



我想做的:

  1. 发送一封带有样式的邮件;
  2. 有单独的文件,一个用于我的。ejs模板和一个。css对应于模板的样式。

问题是:

  1. 如果我为样式创建单独的路由并将其插入到HTML中,用户将需要"授权"。这些样式的下载;
  2. 如果我只是像普通的HTML一样导入,它不会通过电子邮件。

我使用了什么:

  • Express.js
  • EJS
  • nodemailer

现在我的文件结构是什么样的:

  • src
    • 视图
      1. index.ejs
      2. style.css
      • internal_view_group
        1. style.css
        • internal_template_name
          1. style.css
          • 语言环境
            1. pt-br.ejs
            2. en-us.ejs
      • public_view_group
        1. style.css
        • public_template_name
          1. style.css
          • 语言环境
            1. pt-br.ejs
            2. en-us.ejs

好吧,如果目录有点乱或难以理解,让我为你解释一下:

  • 文件夹"views"包含我所有的模板和样式,它也包含我的索引。js,这就是我在渲染HTML时调用的,这个索引将从组、模板中调用样式,然后从模板中调用HTML,考虑到它使用的语言。它也有一个style.css,一个全局样式表,必须在所有模板中使用,无论它的组。

  • 文件夹"internal_view_group"以模板组为例,我们有一个内部组,模板用于内部通信,还有一个公共组,用于一般的公共通信。它也有一个默认的style.css,应用于该组中的每个模板。

  • 文件夹"internal_template_name"是一个模板,它的区域设置在&;locale &;文件夹和样式表,该样式表必须应用于被调用的区域设置。

我怎么能在我的代码上有这种级别的组织,有单独的文件,仍然工作,考虑到部分&;问题是"?

既然你使用你的索引。为了调用所有其他模板和样式,你也可以直接将样式注入到这个索引中。使用<%- %>

这个标签的作用:导入一个文件(通常是一个. ejs),读取它的内容并输出到HTML。

所以你要做的是把放进index.js是类似这样的:
<head>
<%-
'<style>'
+ include(`./style.css`)
+ include(`./${template_group}/style.css`)
+ include(`./${template_group}/${template_name}/style.css`)
+ '</style>'
%>
</head>
<body>
<%- include(`./${template_group}/${template_name}/locale/${locale}.ejs`) %>
</body>

这将输出所有样式RAW内容到代码中(不是缩小版本)。

样式标签被javascript逻辑内部而不是外部字符串包围的原因是,围绕输出,VSCode可能会报告代码中的错误,因为样式部分内的EJS标签,有了这个,输出终端什么都不会报告。

如果你发现你想要发送的HTML代码的最终大小太大,可能会成为一个问题,你可以使用javascript原型。包含之后的字符串函数,如include('./style.css').replaceAll(' ', ''),替换所有空格,但留下换行符(未测试)

最新更新