开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 23571|回复: 109
收起左侧

[易语言成品模块] 【更新】SOCC.js 2.6版,新增CryptoJS,WebSocket,Debugger调试器

[复制链接]

结帖率:100% (4/4)
发表于 2021-7-13 16:32:00 | 显示全部楼层 |阅读模式   四川省宜宾市
分享例程
界面截图:
备注说明: SOCC.js 2.6版
新增CryptoJS
WebSocket
Debugger调试器

前言:

理念:

  • SOCC.js的基本理念是实现更方便的执行JS,让普通的JS可以编写更强大的程序。

目标:

  • 封装JSON(已经完成,JS实现)
  • 封装XMLHttpRequest类(已经完成,支持异步使用,除了几个事件外基本和浏览器的XMLHttpRequest对象一致,native code封装)
  • 自定义新函数(基本完成,仍需完善,native code封装)
  • 封装console对象(已经完成,native code封装)
  • 封装Compress对象(已经完成,native code封装)
  • 封装FileSystem对象(已经完成,native code封装)
  • 封装Base64对象(已经完成,native code封装)
  • 封装Error管理,当JS代码出错时可以提示错误内容(已经完成,native code封装,已经废弃)
  • 封装debugger(ChakraCore引擎调试器,可以直接调试代码)
  • 封装window对象(已经完成,native code封装)
  • 封装WebSocket对象(已经完成,支持WSS,native code封装)
  • 封装加密解密对象(已经完成,CryptoJS封装)
  • 全力开发FFI对象(未完成,计划中)
  • 封装document对象(未完成,计划中)
  • 封装navigator对象(未完成,计划中)
  • 封装图色对象(未完成,计划中)
  • 不信可以看看图:

更新内容:

  • 更新封装模式,采用更快捷而方便的模式重封装了XMLHttpRequest类,window对象,WebSocket对象,CryptoJS对象
  • 新增:CryptoJS.e,debugger.e等例子
  • 删除:Error.e(debugger.e已经替换)
  • 图片:
    • Debugger:
    • WebSocket:
    • CryptoJS:
  • 下面介绍SOCC.js已经封装的类和命令

SOCC.js:

  • 封装的类以及命令的介绍:
    • Base64类(本类无需使用new调用,直接使用即可):本类包括2个命令
    • 命令表:
      • Base64.encode()本命令包含2个参数,分别是:待编码数据 和 编码类型,本命令的返回值为String。
        • 待编码数据:类型为String,表示待编码数据。
        • 编码类型:类型为BOOL,为true表示编码Ansi,为false表示编码Unicode(UTF-16)
      • Base64.decode()本命令包含2个参数,分别是:待解码数据 和 编码类型,本命令的返回值为String。
        • 待解码数据:类型为String,表示待解码数据。
        • 编码类型:类型为BOOL,为true表示编码Ansi,为false表示编码Unicode(UTF-16)
    • XMLHttpRequest类(本类的封装和浏览器的XMLHttpRequest类基本一致,本类需要使用new方法调用):本类封装了5个属性,6个命令,1个事件
    • 属性表:
      • XMLHttpRequest.status:只读,返回一个无符号短整型数字,代表请求的响应状态。
      • XMLHttpRequest.statusText:只读,返回一个 DOMString,其中包含 HTTP 服务器返回的响应状态。与 XMLHTTPRequest.status 不同的是,它包含完整的响应状态文本(例如,"200 OK")。
      • XMLHttpRequest.responseXML:只读,返回一个 Document,其中包含该请求的响应,如果请求未成功、尚未发送或时不能被解析为 XML 或 HTML,则返回 null。
      • XMLHttpRequest.responseText:只读,返回一个 DOMString,该 DOMString 包含对请求的响应,如果请求未成功或尚未发送,则返回 null。
      • XMLHttpRequest.readyState:只读,返回 一个无符号短整型数字,代表请求的状态码。
    • 命令表:
      • XMLHttpRequest.abort() 如果请求已被发出,则立刻中止请求。
      • XMLHttpRequest.getAllResponseHeaders() 以字符串的形式返回所有用 CRLF 分隔的响应头,如果没有收到响应,则返回 null。
      • XMLHttpRequest.getResponseHeader() 返回包含指定响应头的字符串,如果响应尚未收到或响应中不存在该报头,则返回 null。
      • XMLHttpRequest.open() 初始化一个请求。
      • XMLHttpRequest.send() 发送请求。如果请求是异步的(默认),那么该方法将在请求发送后立即返回。
      • XMLHttpRequest.setRequestHeader() 设置 HTTP 请求头的值。必须在 open() 之后、send() 之前调用 setRequestHeader() 方法。
    • 事件表:
      • MLHttpRequestm.onreadystatechange:当 readyState 属性发生变化时,调用的 event handler
    • Compress类(数据压缩类,使用RtlCompressBuffer相关命令完成,本类需要使用new方法调用):本类封装了2个命令
    • 命令表:
      • Compress.Compress()(压缩数据) 本命令包含1个参数,为:Data,本命令的返回值为String(返回Base64编码后的文本)。
        • Data:类型为String,欲压缩的数据。
      • Compress.Decompress()(解压数据) 本命令包含1个参数,为:Data,本命令的返回值为String(返回解压后的文本数据)。
        • Data:类型为String,欲解缩的数据(只接受Base64编码后的数据,只接受Compress.Compress的压缩结果)。
    • FileSystem类(文件控制类,使用CreateFile相关命令完成,本类需要使用new方法调用):本类封装了14个命令
    • 命令表:
      • new FileSystem()(初始化FileSystem类时即需要提供参数) 本命令包含2个参数,分别是:文件名 打开方式 共享方式,本命令的返回值为文件控制对象([Object FileSystem])。
        • 文件名:类型为String,欲打开的文件名称
        • 打开方式:类型为int,1、#读入,2、#写出,3、#读写,4、#重写,5、#改写,6、#改读,默认为读写
        • 共享方式:类型为int,1、#无限制,2、#禁止读,3、#禁止写,4、#禁止读写,默认为 #无限制
      • FileSystem.close() 本命令无参数,表示关闭使用的文件系统(内部使用CloseHandle实现),关闭后对应的文件控制对象作废,无返回值。
      • FileSystem.FSeek() 本命令包含2个参数,分别是:起始移动位置 移动距离,成功返回新位置。
        • 起始移动位置:类型为int,参数值指定从文件中开始移动的位置。可以为以下常量之一:1、#文件首; 2、#文件尾; 3、#现行位置。如果本参数被省略,默认值为“#文件首”
        • 移动距离:类型为int,参数值指定相对于起始移动位置的移动长度。
      • FileSystem.GetFileSize() 本命令无参数,表示取打开的文件的大小,返回文件大小。
      • FileSystem.ReadBin() 本命令包含1个参数,为:欲读入数据的长度,成功返回读入的字节集数据(内部已经进行了一次Base64编码)。
        • 欲读入数据的长度:类型为int,表示欲读入字节集的长度。
      • FileSystem.WriteBin() 本命令包含1个参数,为:欲写出的字节集数据,成功返回实际写出字节数。
        • 欲写出的字节集数据:类型为String,只接受Base64编码后的数据。
      • FileSystem.loc() 本命令无参数,表示当前读写位置,返回当前读写位置。
      • FileSystem.feof() 本命令无参数,表示当前读写位置是否在文件尾,成功返回真,失败返回假。
      • FileSystem.SeekToBegin() 本命令无参数,表示移动读写位置到文件首,成功返回真,失败返回假。
      • FileSystem.SeekToEnd() 本命令无参数,表示移动读写位置到文件尾,成功返回真,失败返回假。
      • FileSystem.FlushFileBuffers() 本命令无参数,刷新文件内部缓冲区并将所有缓存数据写入文件,成功返回真,失败返回假。
      • FileSystem.SetFileSize() 本命令包含1个参数,为:新文件大小,本命令可以扩大或者缩小文件,扩大文件操作不会修改文件内容(如果缩小文件的话多余的内容会被删除)。成功返回真,失败返回假。
        • 新文件大小::类型为int
      • FileSystem.lock() 本命令包含2个参数,分别为:起始锁定位置 锁定字节长度,本命令可以锁定文件的指定范围,以便于对这个范围进行独占访问,成功返回真,失败返回假。
        • 起始锁定位置:类型为int,锁定文件的开始位置。
        • 锁定字节长度:类型为int,锁定文件的字节长度。
      • FileSystem.Unlock() 本命令包含2个参数,分别为:起始解锁位置 解锁字节长度,本命令可以解除对文件指定范围的锁定,以便其他进程能访问这个区域,成功返回真,失败返回假。
        • 起始解锁位置:类型为int,解锁文件的开始位置。
        • 解锁字节长度:类型为int,解锁文件的字节长度。
    • EventTarget类(原型对象)
      • 和浏览器的EventTarget原型对象定义一致。
    • Node类(原型对象)
      • 和浏览器的EventTarget原型对象定义一致。
    • RTCPeerConnection类
      • 和浏览器的RTCPeerConnection类原型对象定义一致。
    • localStorage类
      • 和浏览器的localStorage类原型对象定义一致,但是缓存不写出只是临时保存。
    • window对象
      • 和浏览器window对象定义基本一致,已经基本具有window指纹。
    • WebSocket对象
    • 属性表:
      • WebSocket.binaryType:返回websocket连接所传输二进制数据的类型。(本封装类中无用)
      • WebSocket.bufferedAmount是一个只读属性,用于返回已经被send()方法放入队列中但还没有被发送到网络中的数据的字节数。(本封装类中无用)
      • WebSocket.extensions是只读属性,返回服务器已选择的扩展值。(本封装类中无用)
      • WebSocket.url是一个只读属性,返回值为当构造函数创建WebSocket实例对象时URL的绝对路径。
      • WebSocket.protocol 是个只读属性,用于返回服务器端选中的子协议的名字;这是一个在创建WebSocket 对象时,在参数protocols中指定的字符串,当没有已建立的链接时为空串。
      • WebSocket.onclose 属性返回一个事件监听器,这个事件监听器将在 WebSocket 连接的readyState 变为 CLOSED时被调用,它接收一个名字为“close”的 Event 事件。
      • WebSocket.onerror 属性中,你可以定义一个发生错误时执行的回调函数,此事件的事件名为"error"(本封装类中无用)
      • WebSocket.onmessage 属性是一个当收到来自服务器的消息时被调用的 event handler。它由一个MessageEvent调用。
      • WebSocket.onopen属性定义一个事件处理程序,当WebSocket 的连接状态readyState 变为1时调用;这意味着当前连接已经准备好发送和接受数据。这个事件处理程序通过 事件(建立连接时)触发。(本封装类中无用)
    • 命令表:
      • WebSocket.close()本命令无参数,表示关闭 WebSocket链接。
      • WebSocket.send()本命令包含1个参数,表示发送的数据
    • 事件表:
      • WebSocket:close,和onclose一起触发,使用addEventListener监听
      • WebSocket:error,和onerror一起触发,使用addEventListener监听
      • WebSocket:message,和onmessage一起触发,使用addEventListener监听
      • WebSocket:open,和onopen一起触发,使用addEventListener监听

PS:

  • SOCC.js引擎是我最近封装的一个程序,可能存在一些未知的BUG,您可以在本帖反馈程序BUG
  • 您也可以在帖子下面提出封装的目标(如:还可以封装什么)

程序下载:


SOCC.js.ec.zip (2.52 MB, 下载次数: 572)

点评

窝巢, 我看成你要做编辑器ll了. 原来是模块.   福建省福州市  发表于 2021-8-6 06:46
你很牛逼, 你是想要做像E语言一样开发js吧?   福建省福州市  发表于 2021-8-6 06:45
不明觉厉。就是不知道干啥用。   浙江省温州市  发表于 2021-7-13 17:20

评分

参与人数 9好评 +9 精币 +19 收起 理由
威武小草 + 1 新技能已get√
xxdahai + 1 + 2 支持开源~!感谢分享
司徒西 + 1 + 2 很赞同,谢谢!
吃泡面加不起蛋 + 1 + 2 欢迎常来帮助新人,谢谢~
350246356 + 1 + 1 老规矩,先赞后看~~
风中冰雨 + 1 + 3 支持开源~!感谢分享
xslyhk + 1 + 2 感谢分享,很给力!~
ノ朽默℡ + 1 + 4 神器即将降临
冰点 + 1 + 3 感谢分享,很给力!~

查看全部评分


友情提醒:请选择可信度高的模块,勿用未知模块,防止小人在模块内加入木马程序。【发现问题模块请到站务投诉】。

本帖被以下淘专辑推荐:

签到天数: 2 天

发表于 2024-10-15 18:48:03 | 显示全部楼层   湖北省仙桃市
窝巢, 我看成你要做编辑器ll了. 原来是模块.
回复 支持 反对

使用道具 举报

结帖率:87% (13/15)

签到天数: 16 天

发表于 2024-5-4 17:53:30 | 显示全部楼层   山东省济南市
神器即将降临
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 14 天

发表于 2024-5-4 17:40:00 | 显示全部楼层   四川省成都市
感谢分享!
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)
发表于 2024-3-3 08:20:38 | 显示全部楼层   湖南省湘潭市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:90% (27/30)

签到天数: 17 天

发表于 2024-2-23 17:18:34 | 显示全部楼层   山东省济宁市
多谢分享
回复 支持 反对

使用道具 举报

发表于 2023-12-29 07:58:46 | 显示全部楼层   四川省达州市
555555555544444444444
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2023-5-31 18:07:25 | 显示全部楼层   湖北省荆州市
很不错{:4_268:
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 4 天

发表于 2023-4-27 03:27:31 | 显示全部楼层   河北省石家庄市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-4-26 09:45:20 | 显示全部楼层   河南省焦作市
开源精神必须支持~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表