2

我正在开发一个 Web 应用程序,客户端使用 Riot.js,服务器端使用 Node.js express。Riot.js 可以挂载 JSON 数据并用于渲染 HTML。实际上我在服务器端有一些 JSON 数据,并且想将它们与 Riot.js 一起使用。

目前我的快递服务器的代码很简单。

  var express = require('express'),                                                                                             
      serveIndex = require('serve-index'),                                                                                      
      app = express();                                                                                                          

  app.use(express.static(__dirname + '/public'));                                                                               
  app.use(serveIndex(__dirname + '/public'));                                                                                   
  app.listen(3000);  

我认为 HTML 模板对我的问题很有帮助。但是我找不到 Riot.js 的答案,我如何使用和呈现来自服务器的数据?

如果数据在客户端,我知道如何挂载数据,如下所示:

    <script>                                                                                                                   
      riot.mount('my_hoge', {                                                                                                
        data: [                                                                                                                
          { name: 'A', url: 'xxxx'},                                                                                           
          { name: 'B', url: 'yyy', isActive: true},                                                                          
          { name: 'C', url: 'zzzz'}                                                                                           
        ]                                                                                                                            })                                                                                                                       
   </script>   

环境

  • Node.js v5.3.0
  • 快递 v4.13.3
4

2 回答 2

1

在他们的一个示例中,他们使用fetch API 从服务器获取数据。

window.fetch('http://api.fixer.io/latest?base=USD')
  .then(function(response) { return response.json() })
  .then(function(data) {
    var rates = Object.keys(data.rates)
      .map(function (key) { return { title: key, price: data.rates[key] }})
      .sort(function(a, b) { return a.price - b.price })
    self.update({ rates: rates })
})

链接到回购

于 2017-03-31T17:53:14.467 回答
1

您可以使用 AJAX 将 JSON 数据加载到 Riot.js 元素中,如下所示:

var url = "http://yourserver:3000/";
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var data = JSON.parse(xmlhttp.responseText);
        riot.mount('my_hoge', { data: data });
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
于 2016-01-29T15:37:04.947 回答