开发学院,分享开发教程和最新动态

Electron 教程:原生Node库

  在上一章中,我们已经使用了Nodejs的fs模块。现在我们来看看其他一些可以在Electron中使用的Nodejs模块。

OS模块

  使用OS模块,我们可以获得许多关于应用程序运行的操作系统信息。下面是几个比较常用的方法。这些方法帮助我们根据运行的操作系统定制应用程序。

  1.os.userInfo([options]):os.userInfo()方法返回当前登录的用户信息。该信息可以用于为用户个性化配置。

  2.os.platform():os.platform()方法返回一个标识操作系统平台的字符串。

  3.os.homedir():os.homedir()方法以字符串形式返回当前用户的主目录。通常,所有用户的配置都位于用户的主目录中。我们的应用程序默认也应该这样做.

  4.os.arch():os.arch()方法返回一个标识CPU架构的描述字符串。当运行在非X86体系时,可以使用它来调整应用程序以适应该架构。

  5.os.EOL:一个字符串常量,定义操作系统特定的行尾标记。

  使用相同的main.js文件和下面的HTML文件,我们可以在屏幕上输出这些属性.

<html>
   <head>
      <title>OS Module</title>
   </head>
   
   <body>
      <script>
         let os = require('os')
         document.write('User Info: ' + JSON.stringify(os.userInfo()) + '<br>' + 
            'Platform: ' + os.platform() + '<br>' + 
            'User home directory: ' +  os.homedir() + '<br>' + 
            'OS Architecture: ' + os.arch() + '<br>')
      </script>
   </body>
</html>

  现在使用以下命令运行应用程序

$ electron ./main.js

  上述命令将产生以下输出:

User Info: {"uid":1000,"gid":1000,"username":"ayushgp","homedir":"/home/ayushgp",
   "shell":"/usr/bin/zsh"}
Platform: linux
User home directory: /home/ayushgp
OS Architecture: x64

Net模块

  Net模块用于应用程序中的网络相关工作。我们可以使用这个模块创建服务器和Socket连接。一般来说,对于与网络相关的任务,建议使用socket.io等第三方类库,而不是直接使用网络模块。

  下表列出了模块中常用的方法

  1.net.createServer([options][, connectionListener]):创建新的TCP服务器。connectionListener参数自动设置为连接事件的侦听器。

  2.net.createConnection(options[, connectionListener]):创建新的TCP服务器。connectionListener参数是一个工厂方法,它返回一个新的net.Socket,并连接到提供的地址和端口。

  3.net.Server.listen(port[, host][, backlog][, callback]):开始接受指定端口和主机上的连接。如果省略host,服务器将接受指向任何IPv4地址的连接。

  4.net.Server.close([callback]):当所有连接都结束并且服务器发出关闭事件时,关闭连接。

  5.net.Socket.connect(port[, host][, connectListener]):打开给定套接字的连接。如果指定了端口和主机,那么套接字将作为TCP套接字打开。

  Net模块也有一些其他的方法。详细可以参考Nodejs的完整方法列表.

  现在,让我们创建一个Electron应用程序,它使用Net模块来创建到服务器的连接。我们需要创建一个新的server.js文件:

var net = require('net');
var server = net.createServer(function(connection) { 
   console.log('Client Connected');
   
   connection.on('end', function() {
      console.log('client disconnected');
   });
   
   connection.write('Hello World!\r\n');
   connection.pipe(connection);
});

server.listen(8080, function() { 
   console.log('Server running on http://localhost:8080');
});

  使用相同的main.js文件,用以下内容替换HTML文件.

<html>
   <head>
      <title>net Module</title>
   </head>
   <body>
      <script>
         var net = require('net');
         var client = net.connect({port: 8080}, function() {
            console.log('Connection established!');  
         });
         
         client.on('data', function(data) {
            document.write(data.toString());
            client.end();
         });
         
         client.on('end', function() { 
            console.log('Disconnected :(');
         });
      </script>
   </body>
</html>

  使用以下命令运行服务器.

$ node server.js

  使用以下命令运行客户端应用程序.

$ electron ./main.js

  上述命令将产生以下输出

netModule.jpg

  请注意,我们会自动连接到服务器,也会自动断开连接。

  我们还有一些其他的Node模块,可以直接在前端使用Electron。这些模块的用法取决于您在哪个场景中使用它们。