JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】

简介: JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】

@[toc]

JXcore 打包

在这里插入图片描述

node.Js是面向服务器端和网络应用程序的开源跨平台运行环境。
JXcore是一个支持多线程的节点。对于js发行版,您可以在多个线程中安全运行,而无需对现有代码进行任何更改。
安装命令如下:


$ curl https://raw.githubusercontent.com/jxcore/jxcore/master/tools/jx_install.sh | bash

包含以下文件:

drwxr-xr-x  2 root root  4096 Nov 13 12:42 images
-rwxr-xr-x  1 root root 30457 Mar  6 12:19 index.htm
-rwxr-xr-x  1 root root 30452 Mar  1 12:54 index.js
drwxr-xr-x 23 root root  4096 Jan 15 03:48 node_modules
drwxr-xr-x  2 root root  4096 Mar 21 06:10 scripts
drwxr-xr-x  2 root root  4096 Feb 15 11:56 style

载入:
使用JXcore编译后,我们可以使用以下命令执行生成的jx二进制文件:

$ node index.js command_line_arguments

模块系统

node.js文件相互调用,Node.js提供了一个简单的模块系统。
模块是一个节点。js应用程序的基本组件、文件和模块是一对一的。换句话说,节点js文件是一个模块,可以是JavaScript代码、JSON或编译的C/C++扩展。

exports.world = function() {
  console.log('Hello World');
}

helloJs通过exports对象将世界作为模块的访问接口Js通过require('./hello')加载模块,然后可以直接访问Js中exports对象的成员函数hello。
有时我们只想将一个对象封装成以下格式的模块:

//hello.js 
function Hello() { 
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 
    this.sayHello = function() { 
        console.log('Hello ' + name); 
    }; 
}; 
module.exports = Hello;

这样就可以直接获得这个对象了:

//main.js 
var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello(); 

模块接口中唯一的变化是使用模块Exports=Hello替换exportsworld=function(){}当外部引用此模块时,其接口对象是要输出的Hello对象本身,而不是原始导出。

var http = require("http");

...

http.createServer(...);

node.Js附带一个名为http的模块。我们在代码中请求它,并将返回值分配给一个局部变量。
这将我们的局部变量转换为一个对象,该对象包含http模块提供的所有公共方法。
node.Js的require方法中的文件搜索策略如下:
因为节点js中有四种类型的模块(原生模块和三个文件模块)。尽管require方法非常简单,但内部加载非常复杂,并且它们的加载优先级不同。

LOAD_AS_DIRECTORY(X)
1. 如果 X/package.json 是一个文件,
   a. 解析 X/package.json, 并查找 "main" 字段。
   b. let M = X + (json main 字段)
   c. LOAD_AS_FILE(M)
   d. LOAD_INDEX(M)
2. LOAD_INDEX(X)

LOAD_NODE_MODULES(X, START)
1. let DIRS=NODE_MODULES_PATHS(START)
2. for each DIR in DIRS:
   a. LOAD_AS_FILE(DIR/X)
   b. LOAD_AS_DIRECTORY(DIR/X)

NODE_MODULES_PATHS(START)
1. let PARTS = path split(START)
2. let I = count of PARTS - 1
3. let DIRS = []
4. while I >= 0,
   a. if PARTS[I] = "node_modules" CONTINUE
   b. DIR = path join(PARTS[0 .. I] + "node_modules")
   c. DIRS = DIRS + DIR
   d. let I = I - 1
5. return DIRS

net

在UNIX上,本地域也称为UNIX域。参数路径是文件系统路径名。它从sizeof(sockaddr_un.sun_path)-1被截断,其长度从91到107字节不等,具体取决于操作系统。Linux上的典型值为107,macOS上为103。路径受与创建的文件相同的命名约定和权限检查的约束。它将在文件系统中可见,并将持续到取消链接时。
在Windows上,本地域通过命名管道实现。路径必须是?\Pipe或\Pipe是入口。路径允许任何字符,但以下字符可能会对管道名称进行某些处理,例如解析..Sequence。但是,管道空间是平坦的。管道不会持续,并且在关闭最后一个参照时将被删除。不要忘记在转义JavaScript字符串时使用双反斜杠来指定路径,

net.createServer().listen(
  path.join('\\\\?\\pipe', process.cwd(), 'myctl'));

server.address()
如果在IP套接字上侦听,将返回操作系统报告的绑定IP地址、地址系列和服务端口。在查找操作系统分配的地址时,查找指定的端口非常有用。返回具有端口、系列和地址属性的对象:{port:12346,系列:“IPv4”,地址:“127.0.0.1”}
对于侦听管道或UNIX域套接字的服务器,名称将作为字符串返回

const server = net.createServer((socket) => {
  socket.end('goodbye\n');
}).on('error', (err) => {
  // handle errors here
  throw err;
});

// grab an arbitrary unused port.
server.listen(() => {
  console.log('opened server on', server.address());
});

停止服务器以接受和创建新连接并保留现有连接此功能是异步的。当所有连接都关闭并且服务器响应['close'][]事件时,服务器将最终关闭。一旦发生'close',将调用可选的回调函数。与此事件不同,如果服务器在关闭时未打开,则将使用错误作为唯一参数。

server.on('error', (e) => {
  if (e.code === 'EADDRINUSE') {
    console.log('Address in use, retrying...');
    setTimeout(() => {
      server.close();
      server.listen(PORT, HOST);
    }, 1000);
  }
});

所有listen()方法都可以传入backlog参数,以指定要连接的队列的最大长度。

相关文章
|
13天前
|
机器学习/深度学习 算法 机器人
【PID】基于人工神经网络的PID控制器,用于更好的系统响应研究(Matlab&Simulink代码实现)
【PID】基于人工神经网络的PID控制器,用于更好的系统响应研究(Matlab&Simulink代码实现)
|
16天前
|
机器学习/深度学习 数据采集 传感器
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
|
2月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
47 0
|
12天前
|
算法 安全 网络安全
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
|
1月前
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
53 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
2月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
4月前
|
存储 监控 算法
公司内部网络监控中的二叉搜索树算法:基于 Node.js 的实时设备状态管理
在数字化办公生态系统中,公司内部网络监控已成为企业信息安全管理体系的核心构成要素。随着局域网内终端设备数量呈指数级增长,实现设备状态的实时追踪与异常节点的快速定位,已成为亟待解决的关键技术难题。传统线性数据结构在处理动态更新的设备信息时,存在检索效率低下的固有缺陷;而树形数据结构因其天然的分层特性与高效的检索机制,逐渐成为网络监控领域的研究热点。本文以二叉搜索树(Binary Search Tree, BST)作为研究对象,系统探讨其在公司内部网络监控场景中的应用机制,并基于 Node.js 平台构建一套具备实时更新与快速查询功能的设备状态管理算法框架。
102 3
|
5月前
|
小程序 UED
拓展校友网络的创新解决方案:校园论坛圈子小程序+跑腿+二手市场系统
这是一款基于小程序的校园跑腿服务平台,支持多种注册登录方式、下单支付、跑腿接单配送、订单跟踪评价及物流查询功能,并配备客服模块提升用户体验。系统包含用户、客服、物流、跑腿员和订单五大核心模块,功能完善。此外,平台还拓展了校友网络功能,如信息咨询发布、校园社区建设和活动组织等,旨在增强校友互动与联系,形成紧密的校友生态。
143 4
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
209 17
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
161 10

热门文章

最新文章