节点Js,javascript,mysql,客户端看到/看不到什么?

时间:2019-05-18 14:09:10

标签: javascript html css mysql node.js

对于一个大学项目,我必须做一个必须在桌面浏览器和移动设备上运行的Web应用程序。我必须用HTML / CSS / JavaScript / Node / MySQL来做。 我现在了解的是node.js,据我了解,这就像一个Apache,当客户端请求某些内容时,响应会发送HTTP数据包。我也添加了Node Express,并实现了MySQL实现。 现在,我制作了一个带有ejs扩展名的页面,其中包含一个for循环以及从数据库中获取的变量的值。现在,我的问题是: 谁执行的? (客户端或服务器) 将MySQL查询结果的列表/数组发送给客户端,然后由客户端决定必须根据JavaScript打印的行中的哪一行,或者由服务器制作HTML页面并将其直接发送给客户端? >

这是节点服务器:

var express = require('express');
var mysql = require('mysql');
var select;
var app = express();

app.set('view engine', 'ejs');

var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "myPassword",
    database: "test"
  });

  con.connect(function(err) {
    if (err) throw err;
    con.query("SELECT nome FROM prova", function (err, result, fields) {
      if (err) throw err;
      select = result;
    });
  });

app.get('/count/:number', function(req, res) {
  res.render('page.ejs', {counter: req.params.number, names: select});
});

app.listen(8081);

这是我要的页面:

<html>
    <head>
        <title>Titolo pagina web</title>
    </head>
    <body><h1>Sto per contare fino a <%= counter %></h1>

    <p><% 
        for (var i = 1; i <= counter; ++i) {
    %>

    <%= i %> ...

    <% } %></p>

    <p>Bene, ho finito. Adesso scelgo un nome a caso tra quelli che mi sono stati inviati.
        <%= names[0].nome %>
    </p>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

EJStemplating engine

enter image description here

  

MySQL查询结果的列表/数组被发送到客户端,然后由客户端决定必须根据JavaScript打印哪个行,或者服务器制作HTML页面并将其直接发送给客户端?

不。客户端已经接收到处理后的数据,他既看不到模板上设计的源,也看不到NodeJS源代码。 一个简单的类比就是看模板,就像它们在大学申请中一样,数百名学生会收到相同的表格,您只需要填补空白然后发送即可。谁阅读该应用程序,就不会知道您的书写方式,使用过的铅笔,您所做的时间,他们只会看到已经处理的数据。 服务器将处理数据,并根据您的情况以纯HTML格式发送结果。