mjml nodejs 集成
mjml 支持nodejs 的集成,以下是一个简单的使用
使用typescript
项目准备
- 项目结构
├── app.ts
├── index.mjml
├── package.json
├── tsconfig.json
└── yarn.lock
- 代码说明
app.ts
import mjml2html from "mjml"
import fs from "fs"
import path from "path"
fs.readFile(path.normalize('./index.mjml'), 'utf8', (err, data) => {
if (err) throw err
const result = mjml2html(data, {
validationLevel: "soft",
minify: true
})
fs.writeFileSync(path.normalize('./index.html'), result.html)
})
- package.json
{
"name": "first",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"mjml": "^4.5.1"
},
"scripts": {
"out": "mjml index.mjml -o index.html",
"app":"tsc && node app.js > index.html"
},
"devDependencies": {
"@types/mjml": "^4.0.2",
"@types/node": "^13.1.1",
"typescript": "^3.7.4"
}
}
- 模版
<mjml version="3.3.3">
<mj-body background-color="#F4F4F4" color="#55575d" font-family="Arial, sans-serif">
<mj-section background-color="#C1272D" background-repeat="repeat" padding="20px 0" text-align="center" vertical-align="top">
<mj-column>
<mj-image align="center" padding="10px 25px" src="http://gkq4.mjt.lu/img/gkq4/b/18rxz/1h3k4.png" width="128px"></mj-image>
</mj-column>
</mj-section>
<mj-section background-color="#ffffff" background-repeat="repeat" padding="20px 0" text-align="center" vertical-align="top">
<mj-column>
<mj-image align="center" padding="10px 25px" src="http://gkq4.mjt.lu/img/gkq4/b/18rxz/1h3s5.gif" width="600px"></mj-image>
<mj-image align="center" alt="Happy New Year!" container-background-color="#ffffff" padding="10px 25px" src="http://gkq4.mjt.lu/img/gkq4/b/18rxz/1hlvp.png" width="399px"></mj-image>
</mj-column>
</mj-section>
<mj-section background-color="#ffffff" background-repeat="repeat" background-size="auto" padding="20px 0px 20px 0px" text-align="center" vertical-align="top">
<mj-column>
<mj-text align="center" color="#55575d" font-family="Arial, sans-serif" font-size="14px" line-height="28px" padding="0px 25px 0px 25px">New dreams, new hopes, new experiences and new joys, we wish you all the best for this New Year to come in 2018!</mj-text>
<mj-image align="center" alt="Best wishes from all the Clothes Team!" padding="10px 25px" src="http://gkq4.mjt.lu/img/gkq4/b/18rxz/1hlv8.png" width="142px"></mj-image>
</mj-column>
</mj-section>
<mj-section background-color="#C1272D" background-repeat="repeat" padding="20px 0" text-align="center" vertical-align="top">
<mj-column>
<mj-text align="center" color="#ffffff" font-family="Arial, sans-serif" font-size="13px" line-height="22px" padding="10px 25px">Simply created on <a style="color:#ffffff" href="http://www.mailjet.com"><b>Mailjet Passport</b></a></mj-text>
</mj-column>
</mj-section>
<mj-section background-repeat="repeat" background-size="auto" padding="20px 0px 20px 0px" text-align="center" vertical-align="top">
<mj-column>
<mj-text align="center" color="#55575d" font-family="Arial, sans-serif" font-size="11px" line-height="22px" padding="0px 20px">[[DELIVERY_INFO]]</mj-text>
</mj-column>
</mj-section>
</mj-body>
</mjml>
运行&&效果
- 运行
yarn app
- 效果
说明
官方也提供了一个基于api 的渲染接口,实际上实现起来很简单,基于nodejs pacakge 我们也可以很快开发类似的功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2018-12-29 Gravitational Teleport docker-compose组件独立部署运行
2017-12-29 postcss gulp 安装使用
2017-12-29 webpack 图片资源处理
2017-12-29 webpack libray 参考例子
2017-12-29 webpack css loader 使用
2017-12-29 webpack extract-text-webpack-plugin
2017-12-29 webpack 简单使用