`

JavaScript一站式开发工具包介绍

阅读更多

本文介绍使用统一的JavaScript语言处理开发过程中的各部分,包括 WebAPI,AJAX,数据库,多线程,分布式编程,服务器监控等。

 

一 什么是HIJK

 

HIJK是一个自动化的JavaScript WebAPI开发工具包,内置了HTTP服务器,数据库引擎,和各种常用功能的JavaScript封装,是一个开箱即用的开发工具包,基于Java8最新的功能,无需安装,无需配置,开发完的系统直接复制到另一台机器就能以一致的方式运行,系统压缩备份只需要直接一条zip压缩命令压缩整个文件夹就完成,数据库数据同时也位于HIJK目录内,无任何导入,导出命令需要。

 

二 启动开发服务器

 

设置 PATH 到 /JAVA8_HOME/bin

jjs build.js

windows run  ; linux ./run.sh

 

三 Hello World!

 

HIJK是一个自动化的WebAPI开发包,同时使用的是JavaScript语言,现在所有主流的Web开发工具都支持JavaScript。要实现HelloWorld API,只需要使用记事本写个标准的JavaScript函数,如下

 

hijk.api.helloworld = function() {

    return  "Hello World!";

};

hijk.api.helloworld2 = function() {

    return {MSG: 'Hello World!'};

};

 

然后把这个文件复制到 HIJK/js/ 目录内, 现在这个函数就能直接通过HTTP调用,向外部提供Web服务了。 在需要的时候可以使用 http://localhost/edit/js/demo.js 地址直接在线编写代码, 无需手工编译,工具包会自动加载修改过的代码。

 

四 在客户端使用JavaScript调用 API 服务

 

        function request(api, fun) {

            var req = new XMLHttpRequest();

            req.open("GET", api, true);

            req.onreadystatechange = function() {

                if (req.readyState === 4 &&  req.status === 200) {

                    var o = eval("(" + req.responseText + ")");

                    fun(o);

                }

            };

            req.send();

        }

        function hello() {

            request("/api/helloworld2", function(o) {

                alert(o.MSG);

            });

        }

 

现在完成了一个从服务器到客户端的全开发过程,简单易用,统一JavaScript语言

 

五 访问 HTTP 请求的参数

 

WebAPI参数从JavaScript函数的第一个参数中传入,像操作普通JSON属性一样访问参数值,如 /api/get?id=99&name=andy 使用如下方式读取参数

hijk.api.get = function(map,request) {

    var msg = {

        url: request.getRequestURI(),

        id : map.id[0],

        name: map.name[0] 

    };

    return msg;

};

 

六 WebSocket WebAPI

 

HIJK WebAPI支持 WebSocket, 可进行双向数据通信, 把函数名用 ws_ 作为前缀, 开发包就会自动采用WebSocket 模块进行处理,  通过 socket.send()发送数据,通过socket.onmessage()监听消息。使用HIJK的WebSocket WebAPI只需要 30 行简洁易读的代码就能完成一个实时网络聊天室的服务器端开发,不需要了解TCP的各种连接等待机制。 

 

hijk.api.ws_helloname = function(socket, request, response) {

    socket.send("Name: ")

          .onmessage(function(name) { 

                sendall("Welcome " + name); 

          });

};

 

七 使用JavaScript进行多线程操作

 

任何一个普通JavaScript函数,只需要传入 sys.thread() , 就会作为后台线程运行,HIJK提供一个 sys.threadreturn 队列保存线程运行结果,在主线程中通过 take() 取回后台线程的运行结果, 整个流程自动完成线程同步,无需复杂的线程处理技巧。

hijk.api.multi_thread = function() {

    var results = sys.threadreturn(2);

 

    //Thread 1

    sys.thread(function() {

        for (var i = 1; i <= 10000; i++) {       }

        results.put("T01-" + c);

    });

 

    //Thread 2

    sys.thread(function() { 

        for (var i = 10001; i <= 20000; i++) {   }

        results.put("T02-" + c);

    });

 

    var rs = []; 

    rs.push(results.take());

    rs.push(results.take()); 

    return rs;

};

 

八 使用JavaScript进行分布式编程

 

要进行分布式编程,首先启动两台Web服务器,这里一台使用 8080 端口,一台使用 9090 端口。 使用两个控制台,分别执行下面的命令启动

8080服务器

jjs build.js -- 8080 

Windows run8080 ; Linux ./run8080.sh

 

9090服务器

jjs build.js -- 9090 

Windows run9090 ; Linux ./run9090.sh

 

在 8080服务器的控制台上输入如下 JavaScript

(

start_remote_process("ws://localhost:9090/api/ws_eval",

            function() { 

                print("Hello World");

            })

)

 

这些代码是在8080这台机器上输入的,start_remote_process 会把传入的 function 转到9090这台机器上执行,非常简洁地实现了分布式开发,在一台机器上完成对多台机器的运算操控。

 

九 数据库操作

 

9.1定义表及索引

HIJK的数据表是采用JavaScript定义的方式,然后由开发工具包自动创建的,可以存取无结构化的数据,只需要在 HIJK/js/ 目录内的任何.js文件的任何位置中写入

hijk.table.table1 = {

    data: {"id": 0, "name": ""},

    key: ["id"],

    index: [["name"]]

};

 

开发工具包就会自动创建一个叫'table1'的表,表的主键是'id'字段, 并且使用一个'name'字段作为索引

 

9.2 插入及访问数据

直接对JSON数据进行插入,数据无结构化,可以随意设置字段

hijk.api.table1_insert = function() {

    var tid = hijk.db.id();

    var v = {

        id: tid,

        name: "name" + tid,

        fieldA: "fieldA" + tid,

        fieldB: "fieldB" + tid

    };

    if (hijk.db.insert("table1", v)) {

        return tid;

    } else {

        return -1;

    }

};

 

采用SQL-Like的方式结合JavaScript代码自由访问数据字段, 如果数据从WebAPI中返回,HIJK开发工具包会自动把它转为JSON字符串格式.

hijk.api.table1_select = function() {

    var r = hijk.db.select("from table1");

    return r;

};

hijk.api.table1_select_sum = function() {

    var r = 0;

    hijk.db.select("from table1", [],

            function(v) {

                r += v.id;

                return true;

            });

    return r;

};

 

十 性能测试

 

从数据库中读数据然后转为JSON字符串通过HTTP从Web中返回,每秒能达到3000个请求以上,满足大部分应用系统对实时数据访问的性能要求。

Document Path:          /api/table1_selectkey?id=12600

Concurrency Level:     1000

Time taken for tests:    23.092 seconds

Complete requests:     100000

Failed requests:           0

Write errors:                 0

Requests per second:  4330.43 [#/sec] (mean)

 

十一 JavaScript小历史

 

JavaScript被引入作为服务器编程语言的时间

Netscape introduced an implementation of JavaScript for server-side scripting with Netscape Enterprise Server, first released in December, 1994 (soon after releasing JavaScript for browsers).(来源)

 

JavaScript的初始设计,这文章是在1996年3月发表的

Netscape Enterprise Server also supports Java and JavaScript, which enables users to build applications that run on either the client or server anywhere on the network. This support enables developers to create content applications that can run on multiple platforms without recompiling.  (来源)

 

 

扩展资源:

HIJK开发工具包还带的一些控制台小命令,如输入 online() 能查看在线连接数及内存使用数,dbprint('from table') 能查看数据库数据。

 

更多操作功能例子及源代码:

1.HIJK 自动化 JavaScript WebAPI 开发工具包

2.iBoxDB数据库引擎介绍

 

0
0
分享到:
评论

相关推荐

    AI从头到脚详解如何创建部署Azure Web App的OpenAI项目源码

    【AI】从头到脚详解如何创建部署Azure Web App的OpenAI项目源码

    人脸识别_卷积神经网络_CNN_ORL数据库_身份验证_1741779511.zip

    人脸识别项目实战

    人工智能-人脸识别代码

    人工智能-人脸识别代码,采用cnn的架构识别代码

    汽车配件制造业企业信息化整体解决方案.pptx

    汽车配件制造业企业信息化整体解决方案

    短期风速预测模型,IDBO-BiTCN-BiGRU-Multihead-Attention IDBO是,网上复现 评价指标:R方、MAE、MAPE、RMSE 附带测试数据集运行(风速数据) 提示:在

    短期风速预测模型,IDBO-BiTCN-BiGRU-Multihead-Attention IDBO是,网上复现 评价指标:R方、MAE、MAPE、RMSE 附带测试数据集运行(风速数据) 提示:在MATLAB2024a上测试正常 ,短期风速预测模型; IDBO-BiTCN-BiGRU-Multihead-Attention; 评价指标: R方、MAE、MAPE、RMSE; 复现; 测试数据集; MATLAB 2024a,短期风速预测模型:IDBO-BiTCN-BiGRU-Attention集成模型

    手势识别_数据融合_运动融合帧_Pytorch实现_1741857761.zip

    手势识别项目实战

    智慧园区IBMS可视化管理系统建设方案PPT(61页).pptx

    在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。

    相亲交友系统源码 V10.5支持婚恋相亲M红娘系统.zip

    相亲交友系统源码 V10.5支持婚恋相亲、媒婆返利、红娘系统、商城系统等等 这款交友系统功能太多了,适合婚恋相亲,还有媒婆婚庆等等支持 PC和 H5还有小程序,可封装红年、APP,里面带安装教程

    单片机也能玩双核之你想不到c技巧系列-嵌入式实战(资料+视频教程)

    本资源《单片机也能玩双核之你想不到的C技巧系列——嵌入式实战》涵盖 双核单片机开发、C语言高级技巧、嵌入式系统优化 等核心内容,结合 实战案例与视频教程,帮助开发者深入理解并掌握高效编程技巧。 适用人群: 适合 嵌入式开发工程师、单片机开发者、电子信息相关专业学生,以及希望提升 C语言编程能力 和 嵌入式项目经验 的技术人员。 能学到什么: 双核单片机开发思路,提高并行处理能力。 C语言高级技巧,提升代码优化与执行效率。 嵌入式系统调试方法,掌握实际项目中的调试策略。 实战案例解析,学习如何在实际工程中应用双核技术。 阅读建议: 建议 先学习基础知识,再结合 示例代码与视频教程 进行实操,重点关注 代码优化、调试技巧与双核应用模式,通过实战演练提高嵌入式开发能力。

    计算机视觉_OpenCV_人脸识别_成本节约检测方案_1741779495.zip

    人脸识别项目源码实战

    `机器学习_深度学习_Keras_教程用途`.zip

    人脸识别项目源码实战

    地铁网络_Dijkstra_最短路径_查询工具_1741862725.zip

    c语言学习

    红外光伏缺陷目标检测模型,YOLOv8模型 基于红外光伏缺陷目标检测数据集训练,做了必要的数据增强处理,以达到缺陷类别间的平衡 可检测大面积热斑,单一热斑,二极管短路和异常低温四类缺陷 测试集指标如

    红外光伏缺陷目标检测模型,YOLOv8模型 基于红外光伏缺陷目标检测数据集训练,做了必要的数据增强处理,以达到缺陷类别间的平衡 可检测大面积热斑,单一热斑,二极管短路和异常低温四类缺陷 测试集指标如图所示 ,核心关键词:红外光伏缺陷目标检测模型; YOLOv8模型; 数据增强处理; 缺陷类别平衡; 大面积热斑; 单一热斑; 二极管短路; 异常低温。,基于YOLOv8的红外光伏缺陷检测模型

    基于PLC的自动浇花控制系统 西门子1200PLC博途仿真,提供HMI画面,接线图,IO分配表,演示视频,简单讲解视频 博图15.1及以上版本均可使用 ,核心关键词: PLC自动浇花控制系统; 西

    基于PLC的自动浇花控制系统 西门子1200PLC博途仿真,提供HMI画面,接线图,IO分配表,演示视频,简单讲解视频 博图15.1及以上版本均可使用 ,核心关键词: PLC自动浇花控制系统; 西门子1200PLC博途仿真; HMI画面; 接线图; IO分配表; 演示视频; 简单讲解视频; 博图15.1及以上版本。,基于PLC的自动浇花系统:西门子1200PLC博途仿真实践教程

    智慧园区标准化综合解决方案PPT(60页).pptx

    在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。

    大型集团用户画像系统化标准化数字化用户主数据管理项目规划方案.pptx

    大型集团用户画像系统化标准化数字化用户主数据管理项目规划方案

    基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+ 10008-基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+原理图PCB工程+源码工程+实物照片) 本次设计是设计一款水质检

    基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+ 10008-基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+原理图PCB工程+源码工程+实物照片) 本次设计是设计一款水质检测设备,实现温度检查、水质检测的功能,将检测到的数据显示到显示器中,并实时记录系统的参数 本次系统需要对温度检测,使用的传感器为DS18B20,通过单总线的方式来完成系统温度检测 使用水质检测模块检查水的质量 通过传感器检测到的数据计算后的值实时刷新到显示器中,主要的功能包括以下几点: ①可以对温度实时检测; ②可以对水质实际值实时检测; ③水质浑浊预警 主要特点: 1.以STM32单片机为核心,配合水质模块; 2.主要完成系统的 功能控制、状态显示、信息检测以及报警硬件组建所单片机和传感器等元器件的选择; 3.完成系统控制的软件设计编程; 4.实现对水质检测、温度检查、预警的功能 内容包含: 1、原理图工程 2、PCB工程 3、源码工程 4、实物照片 5、详细介绍说明书-22531字 6、实物照片 7、浊度传感器资料

    人脸识别_seetaface6_SDK_多功能应用开发工具包_1741771332.zip

    人脸识别项目实战

    华中科技大学计算机科学研究生复试上机测试题.zip

    华中科技大学计算机科学研究生复试上机测试题.zip

    YOLOv8部署到web上(Django+html)

    YOLOv8部署到web上(Django+html)

Global site tag (gtag.js) - Google Analytics