使用NodeJS将变量传递给html

时间:2017-04-18 16:50:19

标签: javascript node.js

我列出了特定文件夹中存在的文件,我希望在列出之后,可以在HTML中访问此变量。

Server.js

var http = require('http');    
var arquivo = require('fs');
var server = http.createServer(function(request, response){      
    response.writeHead(200, {'Content-Type': 'text/html'});     
    arquivo.readFile(__dirname+'/pagina.html', 
        function(err, html){             
        if (err) {
            response.write("Arquivo não encontrado!");                   
            response.end();
        } else{
            response.write(html);   
            var fs = require('fs');
            var files = fs.readdirSync(__dirname+'/list/'); //LIST FOLDER           
            response.end();

        }      
    });
});
server.listen(3000, function(){       
    console.log('Servidor está rodando!');     
});

pagina.html

<html>
<script type="text/javascript">
    alert(files); //Name of var list
</script>
</hmtL>

2 个答案:

答案 0 :(得分:1)

用变量替换原始字符串有几个干净的解决方案。我会推荐以下任何一种:

答案 1 :(得分:0)

有两种方法可以做到这一点。

  1. 将您的呼叫分离到您服务器上的另一个端点并在客户端上发出请求(建议您以后可能需要这样做)

  2. 使用正则表达式更改您的html文件(有趣的实验)

  3. 想象一下你的html文件是这样的;注意双括号。

    "<html><body><script> var files = {{myvars}} </script></body></html>"
    

    你有一个数组中的文件列表

    var yourFiles = ['file1', 'file2', 'file3']
    

    然后您可以使用正则表达式填写原始html字符串中的变量

    var newHTML = html.replace('/\{\{myvars\}\}/', JSON.stringify(yourFiles))
    response.write(newHTML);
    response.end();
    

    发送的最终html将如下所示

    "<html><body><script> var files = ['file1', 'file2', 'file3'] </script></body></html>"