我面临的挑战是使用普通的旧 Javascript 构建单页应用程序,不允许使用任何库或框架。虽然在 React 和 Angular 中创建动态 DOM 元素相当简单,但我提出的普通 JS 解决方案似乎很笨拙。我想知道是否有一种特别简洁或有效的方法来构建动态呈现的 DOM 元素?
下面的函数接受一个从 GET 请求接收的数组,并为每个项目呈现一个 div,传递值(很像你在 React 中映射结果并呈现子元素)。
function loadResults(array) {
array.forEach(videoObject => {
let videoData = videoObject.snippet;
let video = {
title : videoData.title,
img : videoData.thumbnails.default.url,
description : videoData.description
};
let div = document.createElement("DIV");
let img = document.createElement("IMG");
img.src = video.img;
let h4 = document.createElement("h4");
let title = document.createTextNode(video.title);
h4.appendChild(title);
let p = document.createElement("p");
let desc = document.createTextNode(video.description);
p.appendChild(desc);
div.appendChild(img);
div.appendChild(h4);
div.appendChild(p);
document.getElementById('results')
.appendChild(div);
});
}
这感觉不必要地笨拙,但我还没有找到更简单的方法来做到这一点。
提前致谢!
原文由 EFH 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个好的方法是创建一个为您创建元素的函数。是这样的:
然后你可以像这样使用它:
我见过的另一个很酷的概念证明是使用 ES6 代理作为一种模板引擎。
Proxy 将
get
捕获在目标对象(空的)上,并使用被调用方法的名称呈现一个元素。这导致您看到的非常酷的语法const el =
。