首先要知道的一件事
GrapesJS 画布是一个带有独立文档的 iframe 。装载
主机页面的Tailwind对画布没有作用——效用类也不会
渲染直到Tailwind加载到画布 内 。GrapesJS 给你
canvas.styles 正是 canvas.scripts 因为这个。
1. 将Tailwind加载到画布中(开发)
Tailwind Play CDN 是最快实时看到职业渲染的方式, 编辑:
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';
const editor = grapesjs.init({
container: '#gjs',
height: '100vh',
fromElement: true,
storageManager: false,
canvas: {
// Injected into the canvas iframe, not the host page.
scripts: ['https://cdn.tailwindcss.com'],
},
});
2. 使用构建样式表(生产环境)
在生产环境下,将Tailwind构建为真实的CSS文件并传递其URL。
canvas.styles 所以只有你用过的职业会被发货:
canvas: {
styles: ['/assets/tailwind.css'],
}
确保你的Tailwind content globs包含你所在街区的区域
HTML是存在的,所以块用的类不会被清除。
3. 添加顺风方块
editor.BlockManager.add('tw-hero', {
label: 'Hero',
content: `
<section class="bg-slate-900 text-white py-20 text-center">
<h1 class="text-4xl font-bold">Headline</h1>
<p class="mt-4 text-slate-300">Supporting copy</p>
</section>`,
});
4. 导出类似Tailwind风格的HTML
const html = editor.getHtml(); // markup keeps its Tailwind classes
const css = editor.getCss(); // GrapesJS-managed styles, if any
// Serve `html` alongside your built Tailwind CSS.
常见陷阱
有两件事让每个人都很受关注。首先,画布是一个带有独立文档的iframe——在主机页面加载Tailwind没有任何作用;它必须放入 canvas.styles 或 canvas.scripts。其次,清理:在生产版Tailwind构建中,任何只出现在方块字符串中(不是源文件)的职业都会被剔除,除非你的 content 块状物包含这些方块所在的位置,所以英雄/分区职业会默默消失。Play CDN 仅供开发使用——在生产环境中交付已构建的样式表。记住导出的HTML保留其实用类,所以要和同样构建的Tailwind CSS一起提供。
前提条件
你需要一个GrapesJS的设置和Tailwind的工作流程(用于开发的Play CDN)或 用于生产的样式表)。唯一要记住的规则是:GrapesJS画布是 一个iframe,所以Tailwind必须加载在其中,而不仅仅是在主机页面。
添加顺风风格的方块
注册那些内容使用 Tailwind 工具类的块,使其在画布上呈现样式:
editor.BlockManager.add('tw-hero', {
label: 'Hero',
category: 'Sections',
content: `
<section class="bg-slate-900 text-white py-20 text-center">
<h1 class="text-4xl font-bold">Headline</h1>
<p class="mt-4 text-slate-300">Supporting copy</p>
</section>`,
});
制作:为画布打造Tailwind
在生产环境中,用构建的样式表替换Play CDN
canvas.styles,确保你的Tailwind content 团块
包含你的块 HTML 所在的位置——否则块所用的类是
清除和部分渲染为无样式:
// tailwind.config.js
content: ['./src/**/*.{html,js,ts}', './src/blocks/**/*.js'],
// grapesjs.init
canvas: { styles: ['/assets/tailwind.css'] }
表演技巧
最好是发布一个已清理、构建好的Tailwind样式表,而不是Play CDN,所以 画布只加载你实际使用的类。导出后的HTML保持其实用性 所以它应该和同样构建的CSS一起提供——没有每页样式的重复。
排查常见问题
类在编辑器中不渲染 ,意味着Tailwind没有加载
在画布内的iframe——通过 canvas.styles 或添加
canvas.scripts。方 块在生产中看起来没有样式,但在制作中则没问题
开发 意味着清洗移除了他们的职业;放大 content 球状物。
主机 界面意外更改 意味着你在
页面代替(或与画布一样)。
何时使用Tailwind搭配GrapesJS
当你的设计系统以实用为先时,Tailwind和GrapesJS搭配得很好,而你 希望导出的页面能完全匹配生产质量。如果你的项目使用组件CSS Framework,也可以用同样的方式加载到画布里——iFrame的方法是 一模一样。
下一步
参见相关的 GrapesJS + React 和 GrapesJS + Vite 指南,浏览一下 块库插件和 GrapesJS 市场,或者从那里开始 GJS。市场主页。
常见问题
为什么Tailwind类不能在GrapesJS中渲染?
画布是一个带有独立文档的iframe,所以Tailwind必须加载在里面
画布通过 canvas.styles 或 canvas.scripts。
我该如何将《Tailwind》加载到画布中?
开发者:把Play CDN canvas.scripts添加到 。制作:打造顺风
样式表并将其URL传递到 canvas.styles。
导出的HTML会保留Tailwind的类吗?
是的—— editor.getHtml() 返回带有效用类的加价
完好无损;用你构建的Tailwind CSS来提供它。
