javascript - 模板构建器网站如何保存用户编辑,然后将其显示给其他用户?
问题描述
也许我的问题有点令人困惑,希望这能澄清我在问什么。因此,如果您曾经看过那些模板构建器网站,用户可以在其中设计网站上的网页。您知道,更改文本框的大小、图像的大小、按特定顺序排列元素。然后,当他们保存或提交并尝试转到他们构建的页面时,它会显示为包含所有编辑的常规网页。他们可以回去改变它,它会即时改变。
Shopify 就是一个例子,您可以在其中选择一个主题,然后更改主题中的一些设置。比如整体字体、主题颜色,甚至当你建立自己的主页时。我的意思是,您可以在一个区域中添加产品的“集合”,然后可能在其下方添加一个“时事通讯”区域,用于收集用户的电子邮件等……所有这些都是元素,而您选择将它们放在网页上的哪个位置,并且在您单击“保存”之前,编辑不会反映在主页上。
所以我的问题是,他们如何保存这些数据并将其应用于 HTML 和 CSS,以便当用户访问主页时,他们会像管理员一样看到确切的编辑?
一个一般的想法会很棒,只要它有意义
谢谢您的帮助。
解决方案
一种方法(我相信 CKEditor 使用)是使用 2 路解析器:一种将嵌套接口(及其上的属性)转换为 HTML,另一种将 HTML 转换回接口。
保存在后端的所有内容都是由用户更改产生的纯 HTML。当用户去编辑网站时,HTML 内容的内容被解析并分离成对用户更友好的显示(可能带有添加/删除内容和应用样式的按钮)。
例如,如果创建一个部分,其中包含带有边框的容器内的图像,则生成的 HTML 可能是:
<li>
<div class="2px-border">
<img src="somesrc">
</div>
</li>
它通过每个部分的控件(例如按钮和添加/删除选项)呈现给用户。用户通过控件进行的更改会更改 HTML,并且只有 HTML 会保存到数据库中。
至少,这是一种选择。
推荐阅读
- amazon-web-services - 我想从python中的字典对象下面获取特定键(sp_puser,sp_pkey)的值,任何人都可以建议
- vue.js - vue 全局组件与烤肉串案例
- php - 用户 ID 删除 @ 并转换“.” 进入 ”-”
- reactjs - react typescript项目使用快照和jspdf的问题
- oracle - 如何在Oracle中重建特定表的索引?
- c++ - 使用 #pragma 去除基于 clang 检查的 clang 警告
- sql - 使用 Azure CosmosDB 的 AVG 操作优化 SQL 查询
- python - 在python中将coo格式转换为边权重
- java - 如何动态获取/设置 JRadionButtonMenuItem?
- python - ESPN Gamecast Python Webscraping