在 Firebase (AngularFire) 中存储 HTML,好主意还是坏主意?
Storing HTML in Firebase (AngularFire), good idea or bad?
将 HTML 存储在 Firebase (AngularFire) 中是个好主意吗?
我有一个网站,我正在创建一个管理网站,用户可以在其中制作 HTML 元素。我希望人们保存这些元素以及元素中的顺序和内容。所以我认为将整个 HTML 存储为字符串并在它们 return 时加载它会容易得多。坏主意?
这是我的(简化):
$scope.save = function() {
var refState = new Firebase("https://<name>.firebaseio.com/users/" + currentAuth.uid + "/state");
var html = "<div>hello</div>";
refState.set({
"state": html
}, function(error) {
if (error) {
console.log("not been saved")
}
})
}
在我的 HTML 中,我检索到想要使用 Angular 像这样显示它(是的,我现在知道如何在 Angular 中呈现 HTML 多亏了评论:)
<div class="well col-md-12">
{{sync[3].state}}
</div>
- 我认为将 html 存储在 firebase 中是非常糟糕的主意,只存储痛苦文本
- How to render html with angular templates
在 firebase 中存储字符串化 HTML 并不比将其存储在不同的数据存储中差。您需要考虑 XSS 问题,包括如果他们在 html.
中定义 <style>body{display:none}</style>
会怎样
您正在创建一个真正完整的内容创建系统吗?如果是这样,有时很难摆脱用户定义的 HTML,通常来自 CKeditor、tinymce 等。但是,如果他们构建的项目都相似,您应该考虑如何 store/restore 他们以更好的数据格式。大多数时候,有一种更好的方法来保存和恢复用户定义的内容,即直接存储 HTML.
我建议查看 Firepad。
- Firepad 是 Firebase 应用的嵌入式 "Open source collaborative code and text editing" 体验。
- "Firepad can use either the CodeMirror editor or the Ace editor to render documents."
- 轻松实现丰富的文本编辑器体验,无缝 stores/syncs Firebase 实例中的内容。
如 documentation 所述,这就是您初始化 Firepad 的方式:
<div id="firepad"></div>
<script>
var firepadRef = new Firebase('<FIREBASE URL>');
var codeMirror = CodeMirror(document.getElementById('firepad'), { lineWrapping: true });
var firepad = Firepad.fromCodeMirror(firepadRef, codeMirror,
{ richTextShortcuts: true, richTextToolbar: true, defaultText: 'Hello, World!' });
</script>
在 Firebase 中存储 HTML 完全没问题。
Koding.com、Nitrous.io 等人将 Firepad 用于他们的协作代码编辑器产品。
将 HTML 存储在 Firebase (AngularFire) 中是个好主意吗?
我有一个网站,我正在创建一个管理网站,用户可以在其中制作 HTML 元素。我希望人们保存这些元素以及元素中的顺序和内容。所以我认为将整个 HTML 存储为字符串并在它们 return 时加载它会容易得多。坏主意?
这是我的(简化):
$scope.save = function() {
var refState = new Firebase("https://<name>.firebaseio.com/users/" + currentAuth.uid + "/state");
var html = "<div>hello</div>";
refState.set({
"state": html
}, function(error) {
if (error) {
console.log("not been saved")
}
})
}
在我的 HTML 中,我检索到想要使用 Angular 像这样显示它(是的,我现在知道如何在 Angular 中呈现 HTML 多亏了评论:)
<div class="well col-md-12">
{{sync[3].state}}
</div>
- 我认为将 html 存储在 firebase 中是非常糟糕的主意,只存储痛苦文本
- How to render html with angular templates
在 firebase 中存储字符串化 HTML 并不比将其存储在不同的数据存储中差。您需要考虑 XSS 问题,包括如果他们在 html.
中定义<style>body{display:none}</style>
会怎样
您正在创建一个真正完整的内容创建系统吗?如果是这样,有时很难摆脱用户定义的 HTML,通常来自 CKeditor、tinymce 等。但是,如果他们构建的项目都相似,您应该考虑如何 store/restore 他们以更好的数据格式。大多数时候,有一种更好的方法来保存和恢复用户定义的内容,即直接存储 HTML.
我建议查看 Firepad。
- Firepad 是 Firebase 应用的嵌入式 "Open source collaborative code and text editing" 体验。
- "Firepad can use either the CodeMirror editor or the Ace editor to render documents."
- 轻松实现丰富的文本编辑器体验,无缝 stores/syncs Firebase 实例中的内容。
如 documentation 所述,这就是您初始化 Firepad 的方式:
<div id="firepad"></div>
<script>
var firepadRef = new Firebase('<FIREBASE URL>');
var codeMirror = CodeMirror(document.getElementById('firepad'), { lineWrapping: true });
var firepad = Firepad.fromCodeMirror(firepadRef, codeMirror,
{ richTextShortcuts: true, richTextToolbar: true, defaultText: 'Hello, World!' });
</script>
在 Firebase 中存储 HTML 完全没问题。
Koding.com、Nitrous.io 等人将 Firepad 用于他们的协作代码编辑器产品。