Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript模块中基于数据类型构建不同的模板_Javascript_Node.js - Fatal编程技术网

在javascript模块中基于数据类型构建不同的模板

在javascript模块中基于数据类型构建不同的模板,javascript,node.js,Javascript,Node.js,我将数据传递到javascript文件,以基于对象的数据类型构建HTML。然后,我将模块导出到另一个javascript文件,用该模块的HTML小部件生成一个HTML文件 下面是我正在使用的代码。我确信我遗漏了一些简单的东西,但我无法找出我做错了什么。我还对如何优化我试图实现的目标的建议感兴趣。谢谢 function createWidget(data) { switch(data.type) { case "logo": console.log(

我将数据传递到javascript文件,以基于对象的数据类型构建HTML。然后,我将模块导出到另一个javascript文件,用该模块的HTML小部件生成一个HTML文件

下面是我正在使用的代码。我确信我遗漏了一些简单的东西,但我无法找出我做错了什么。我还对如何优化我试图实现的目标的建议感兴趣。谢谢

function createWidget(data) {
    switch(data.type) {
        case "logo":
            console.log(data.type);
            createLogoWidget(data);
            break;
        case "contact":
            console.log(data.type);
            createContactWidget(data);
            break;
        case "links":
            console.log(data.type);
            createLinksWidget(data);
            break;
        default:
    }
}
createLogoWidget = (data) => `
    <div>createLogoWidget</div>
    <div>${data.type}</div>
`;
createContactWidget = (data) => `
    <div>createContactWidget</div>
    <div>${data.type}</div>
`;
createLinksWidget = (data) => `
    <div>createLinksWidget</div>
    <div>${data.type}</div>
`;
module.exports = createWidget;
函数createWidget(数据){
开关(数据类型){
案例“徽标”:
console.log(数据类型);
createLogoWidget(数据);
打破
案例“联系人”:
console.log(数据类型);
createContactWidget(数据);
打破
案例“链接”:
console.log(数据类型);
createLinksWidget(数据);
打破
违约:
}
}
createLogoWidget=(数据)=>`
createLogoWidget
${data.type}
`;
createContactWidget=(数据)=>`
createContactWidget
${data.type}
`;
createLinksWidget=(数据)=>`
createLinksWidget
${data.type}
`;
module.exports=createWidget;

好的,我把你的代码改了一点。这个例子的精髓在于调用开关的logo选项

我认为您正在寻找一种在Node.JS中动态创建HTML的方法

即使你打电话给backtick接线员

``

我从未见过js中的HTML代码不使用
div.innerHTML='…'
因此,在本例中,我使用JS创建元素,并将参数作为变量传递

我注意到的另一件事是,您正在使用参数
data.type

除非您使用的是无法与单个变量一起使用的结构化JSON字符串

e、 g
var data={type:'logo',value:“这是logo”}

调用
${data.type}
的另一个原因可能是您将使用jquery、react或vue.js,在我的示例中,它只是简单的js,并且在没有节点js的第三方开销的情况下运行良好

为了便于解释,我在示例中只使用了一个变量,为您提供了一种简单的方法来掌握该方法。您可以向动态html元素添加类和事件,并从中生成整个接口

因此,在你的标志开关所有的代码来做这是有

函数createWidget(数据、targetDiv、数据内容){
交换机(数据){
案例“徽标”:
控制台日志(数据);
createLogoWidget(数据、targetDiv、数据内容);
打破
案例“联系人”:
控制台日志(数据);
createContactWidget(数据);
打破
案例“链接”:
控制台日志(数据);
createLinksWidget(数据);
打破
违约:
}
}
createLogoWidget=(数据、targetDiv、数据内容)=>{
设div1=document.createElement('div');
div1.innerHTML='创建徽标小部件'
让target=document.getElementById(targetDiv);
目标儿童(第1分部);
设div2=document.createElement('h2');
div2.classList.add(“标题”);
div2.innerHTML=数据内容;
div2.addEventListener('click',函数(e){console.log('header click')})
目标儿童(第2分部);
//`
//createLogoWidget
//
//`;
}
createContactWidget=(数据)=>`
createContactWidget
`;
createLinksWidget=(数据)=>`
createLinksWidget
`;
//调用函数
createWidget(“徽标”、“演示”、“我的标题”)
.header{
填充:60px;
文本对齐:居中;
背景:#1abc9c;
颜色:白色;
字体大小:30px;
}

到底是什么不起作用?