# Markdown 自定义容器

# Vuepress 中的自定义容器

在一些特定技术环境下,Markdown 还能支持自定义容器,比如 vuepress 就支持如下四个自定义容器 tip warning danger details

::: tip 提示
这是一段提示
:::
::: warning 警告
这是一段警告
:::
::: danger 危险提示
这是一段危险提示
:::
::: details 查看隐藏文字
这是一段隐藏文字
:::

提示

这是一段提示

警告

这是一段警告

危险提示

这是一段危险提示

查看隐藏文字

这是一段隐藏文字

# 自己动手实现容器

npm install markdown-it-container -D
module.exports = [
  {
    token: "mdn",
    before: (params) => `<div class="mdn-block">\n<p class="mdn-block-title">${params}</p>\n`,
    after: `</div>\n`
  }
];
blocks.forEach((item, index) => {
  md.use(require("markdown-it-container"), item.token, {
    validate: function (params) {
      let reg = new RegExp(`\^${item.token}\\s+(.*)$`);
      return params.trim().match(reg);
    },
    render: function (tokens, idx) {
      let reg = new RegExp(`\^${item.token}\\s+(.*)$`);
      let m = tokens[idx].info.trim().match(reg);
      if (tokens[idx].nesting === 1) {
        return item.before(m && md.utils.escapeHtml(m[1]));
      } else {
        return item.after;
      }
    }
  });
});
.mdn-block {
  margin: 1rem 0;
  padding: 0.1rem 1.5rem;
  border-left: 0.5rem solid #005282;
  background-color: #f4f4f4;
}
::: mdn MDN
var re = new RegExp("\\w+");
:::

MDN

var re = new RegExp("\w+");