Node.js - 它可以用于桌面应用程序开发吗 - MySQL, DataTable & File Open

Node.js - can it be used for Desktop app development - MySQL, DataTable & File Open

自从过去 3 天以来,我一直在关注这个,但不确定我是否正确理解了它的用途 - Node.js/Electron。

几年前,我构建了一个简单的 VB.net 应用程序 - 它连接到 Mysql(包含 table 文件名和路径),将文件名路径显示为网格中的行,双击后,它会打开文件。

我可以在 Node.js 或 Electron 中做这样的事情吗?

1) 我可以在 Node.js 桌面应用 window(不是浏览器). [https://www.codediesel.com/nodejs/how-to-open-various-desktop-applications-from-nodejs/ ].

2) 我还可以在 浏览器 中将 mySql table 查看为 html table localhost:port 以及控制台日志中的行 window [https://www.sitepoint.com/using-node-mysql-javascript-client/]

是否可以将这两个组合在一起,或者我应该尝试其他方法。 [由于行数超过 100K,还需要 Ajax]

已编辑: test.html

<html>
<head>
    <script>window.$ = window.jQuery = require('./js/jquery.js');</script>
    <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline';">
</head>
<body>
<h1>Electron MySQL Example</h1>
<div id="resultDiv"></div>
<div>
    <input type="button" id="action-btn" value="Retrieve 10 first rows in the database" />
    <table id="table" border="1">
        <tbody>

        </tbody>
    </table>    
</div>
<script>
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : '10.251.198.2',
      user     : 'root',
      password : '',
      database : 'test'
    });

    connection.connect();
    var sql = 'SELECT `id`,`name` FROM `employees`';
    connection.query(sql, function (error, results, fields) {
     if (error) console.log(error.code);
     else {
         console.log(results);
         $('#resultDiv').text(results[0].name); //emp_name is column name in your database
     }
    });
    connection.end(); 
</script> 

<!---New --->
<script>
        var mysql = require('mysql');

        function el(selector) {
            return document.getElementById(selector);
        }

        el('action-btn').addEventListener('click', function(){
            // Get the mysql service
            getFirstTenRows(function(rows){
                var html = '';

                rows.forEach(function(row){
                    html += '<tr>';
                    html += '<td>';
                    html += row.id;
                    html += '</td>';
                    html += '<td>';
                    html += row.name;
                    html += '</td>';
                    html += '</tr>';
                    console.log(row);
                });

                document.querySelector('#table > tbody').innerHTML = html;
            });
        },false);

        function getFirstTenRows(callback){
            var mysql = require('mysql');

            // Add the credentials to access your database
            var connection = mysql.createConnection({
                host     : '10.251.198.2',
                user     : 'root',
                password : '',
                database : 'test'
            });

            // connect to mysql
            connection.connect(function(err) {
                // in case of error
                if(err){
                    console.log(err.code);
                    console.log(err.fatal);
                }
            });

            // Perform a query
            $query = 'SELECT `id`,`name` FROM `employees` LIMIT 10';

            connection.query($query, function(err, rows, fields) {
                if(err){
                    console.log("An error ocurred performing the query.");
                    console.log(err);
                    return;
                }

                callback(rows);

                console.log("Query succesfully executed");
            });

            // Close the connection
            connection.end(function(){
                // The connection has been closed
            });
        }
    </script>
</body> 
</html>

Index.js

const electron = require('electron');
const app = electron.app;

const path = require('path');
const url = require('url');

const BrowserWindow = electron.BrowserWindow;

var mainWindow;
app.on('ready',function(){
  mainWindow = new BrowserWindow({
      width: 1024, 
      height: 768,
      webPreferences: {
            nodeIntegration: true
        },
      //backgroundColor: '#2e2c29'
  });
  //mainWindow.loadURL('https://github.com');
   mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'test.html'),
    protocol: 'file:',
    slashes: true
  }));

});

您可以使用 Electron 创建桌面应用程序并连接到 Mysql 数据库。这里有几个有用的链接。

https://ourcodeworld.com/articles/read/259/how-to-connect-to-a-mysql-database-in-electron-framework

https://github.com/techiediaries/electron-mysql-demo

Node JS 主要用于创建 REST API,从服务器提供网页。您可以使用与数据库交互的 Express/Restify 在 Node JS 中创建 API,Electron 应用程序可以使用此服务。是否要有API层取决于你的要求。

当然,现在您可以在 Node 中构建桌面应用程序,实际上有多种选项可供您选择:

所有这些 frameworks/technology 允许您在 Javascript 和 运行 桌面平台上编写应用程序。