未找到

未发布 .Net文档图像处理工具包GdPicture.NET发布v14.0.30,改进PDF/OCR生成速度
by Harriet666 keys 分享 1515058010029
GdPicture.NET是一款功能全面且可无限分发的文档图像处理工具包,开发者可将其作为.NET组件运用在他们的C#, VB.NET和CodeGear应用程序中,从而实现文档生成,显示,获取,编辑和打印等功能。在您的程序中使用GdPicture.NET,可实现文档显示,获取TWAIN扫描图像,进行图像处理,执行光学字符识别操作,其涵盖了所有主流领域的其他文件成像技术。
 
GdPicture.NET v14最新版下载>>> 

GdPicture.NET v14.0.30更新内容

  • 改进了检测空白页的准确性。
  • 改进了页面方向检测精度。
  • 改进了autodeskew引擎的准确性。
  • 改进了PDF/OCR生成的准确性和速度。
  • 小的错误修复。
未发布 Essential Studio for Xamarin更新2017 v2,新增sunburst图表控件丨附下载
by Harriet666 keys 分享 1495012101440
Essential Studio for Xamarin是全面的Xamarin.iOS、Xamarin.Android和Xamarin.Forms组件套包,包含最快的图表和网格。Essential Studio for Xamarin更新至2017 v2版本,新增sunburst图表控件和许多其他功能。
 
Essential Studio for Xamarin最新版点击下载>>>

Essential Studio for Xamarin 2017 v2新功能


sunburst图表

sunburst图表对于可视化分层数据非常有用。中心圆表示结构的根,外圈表示结构的更高级别。

主要特征

  • 可视化分层数据
  • 数据标签更易懂
  • 支持图例
  • 自定义色彩

6ed4e6fc8b2847748c0705c24fb07bbdojpg

新的图像编辑器

增加了一个新的图像编辑器,包含以下功能:
  • 图像裁剪
  • 文字和形状的图像注释
  • 图像旋转和翻转
  • 用于自定义的交互式工具栏

499a8e0352954ff789caad7efd651106ojpg

列表显示

自动适应

列表项目可以根据内容自动调整,并且在进入视图时可按需查询每个项目的大小。

5064cc07100c40bfab578c9ec6d70232ojpg

实时更新

在运行时对底层执行移动和替换操作时自动刷新视图。


PDF查看器(预览)

文本搜索

搜索文本功能已经添加到XAMarin.Forms的PDF查看器中,允许用户在PDF文档中查找搜索文本实例。

1f8ec9c828124530a8c208a02fce1c2cojpg

演示

注释功能

可以在PowerPoint演示文稿中创建和修改注释。

2919c162e2ac4764b082aac58ef2de95ojpg

 

数据网格

表格摘要

数据网格控件支持在视图的顶部或底部显示表格摘要信息。

2f1e53700a1545e7987cd34b7070918dojpg

数据模板选择器

数据网格控件支持模板列中的数据模板选择器,并根据用户的需要自定义单元格模板。

dac10c22111d4d319e5bb3f7f2cce4efojpg

调整大小

数据网格控件支持调整大小功能,允许在平移或平移完成时调整列的大小。

fdaa8b97d07f44dfb10d60acd6dd1038ojpg

计划表

性能改进

控制性能提升以便处理大量的计划。加载性能也得到改善,以便在运行时更改计划视图时提供更好的体验。
未发布 MailBee.NET Objects发送电子邮件(SMTP)教程八:使用多个SMTP服务器发送邮件
by Harriet666 keys 分享 1496655901549
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
 
 
本文主要介绍了如何使用使用多个SMTP服务器发送邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
 
当开发人员不确定他将用于发送电子邮件的SMTP服务器是否可靠(例如,有时服务器崩溃)时,使用多个SMTP服务器则非常有用。例如,当使用单个SMTP服务器发送消息时,如果此SMTP服务器崩溃,则MailBee无法发送消息。但是,在使用多个SMTP服务器时,如果一个SMTP服务器崩溃,MailBee会根据这些服务器的优先级别尝试使用其他SMTP服务器。
 
因此,使用多个SMTP服务器增加了邮件发送成功的可靠性。MailBee.NET Objects允许开发人员管理SMTPSERVER对象的集合,存储在SMTP.SmtpServers的SMTP对象的属性。开发人员应调用SMTP.SmtpServers.Add方法向集合添加一个新的SmtpServer对象实例。这个方法有五个重载。第一个重载允许添加直接SmtpServer对象,如下所示:
C#:

SmtpServer smtp_srv = new SmtpServer();

smtp_srv.Name = "mail.domain.com";
smtp_srv.AccountName = "john_doe";
smtp_srv.Password = "secret";

oMailer.SmtpServers.Add(smtp_srv);

VB.NET:
Dim smtp_srv As SmtpServer =  New SmtpServer() 
 
smtp_srv.Name = "mail.domain.com"
smtp_srv.AccountName = "john_doe"
smtp_srv.Password = "secret"
 
oMailer.SmtpServers.Add(smtp_srv)
 
SMTP.SmtpServers.Add方法的下一次重载允许通过指定的服务器名称或相应的IP地址添加新的SMTP服务器,如下所示:
C#:

oMailer.SmtpServers.Add("127.0.0.1");
oMailer.SmtpServers.Add("smtp.company.com");

VB.NET:
oMailer.SmtpServers.Add("127.0.0.1")
oMailer.SmtpServers.Add("smtp.company.com")
 
此外,开发人员可以指定SMTP服务器的端口号和优先级。默认优先级为0(即最高),默认端口号为25。以下代码将两个具有不同优先级的SMTP服务器添加到集合中:
C#:

oMailer.SmtpServers.Add("127.0.0.1", 33, 1);
oMailer.SmtpServers.Add("smtp.company.com", 37, 2);

VB.NET:
oMailer.SmtpServers.Add("127.0.0.1", 33, 1)
oMailer.SmtpServers.Add("smtp.company.com", 37, 2)

此外,SMTP.SmtpServers.Add方法的以下重载允许通过指定的服务器名称(或相应的IP地址)、登录名和密码将SMTP服务器添加到集合中,如下所示:
C#:

oMailer.SmtpServers.Add("127.0.0.1", "dan_brown", "password");
oMailer.SmtpServers.Add("smtp.company.com ", "john_doe", "secret");

VB.NET:
oMailer.SmtpServers.Add("127.0.0.1", "dan_brown", "password")
oMailer.SmtpServers.Add("smtp.company.com ", "john_doe", "secret")
 
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。

试用、下载、了解更多产品信息请点击"咨询在线客服"   

未发布 扫描识别工具Dynamic Web TWAIN使用教程:如何自定义Web TWAIN对象
by Harriet666 keys 分享 1511773524429
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
本文教你在Dynamic Web TWAIN中如何自定义Web TWAIN对象,欢迎收藏。
 
Dynamic Web TWAIN最新版免费下载>>>

命名Dynamic Web TWAIN对象

默认情况下,(第一个)Dynamic Web TWAIN对象会被命名为“ DWObject ”。您应该在使用任何其他Dynamic Web TWAIN属性或方法之前设置它。内置函数Dynamsoft_OnReady是一个有效方法。例如,在我们的Hello World示例中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<title data-filtered="filtered">Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js" data-filtered="filtered"> </script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js" data-filtered="filtered"> </script>
 
 
<input type="button" value="Scan" onclick="AcquireImage();">
<div id="dwtcontrolContainer"> </div>
<script type="text/javascript" data-filtered="filtered">
        var DWObject;
        function Dynamsoft_OnReady(){
            DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
        }
        function AcquireImage(){
            if(DWObject) {
                DWObject.IfDisableSourceAfterAcquire = true;
                DWObject.SelectSource();
                DWObject.OpenSource();
                DWObject.AcquireImage();
            }
        }
    </script>
ID为“dwtcontrolContainer”的div是Dynamic Web TWAIN的占位符。它的名称和大小可以在在文件dynamsoft.webtwain.config.js 中定义,如下所示。您可以根据需要进行修改。
1
Dynamsoft.WebTwainEnv.Containers = [{ContainerId:'dwtcontrolContainer',Width:270,Height:350}];
 

更改查看器的大小

您可以简单地在dynamsoft.webtwain.config.js中更改内置查看器的大小。这里可以使用数字或百分比。例如
1
Dynamsoft.WebTwainEnv.Containers = [{ContainerId:'dwtcontrolContainer',Width: '50%',Height:350}];
 

更改安装提示的样式

如果未安装Dynamic Web TWAIN,则会看到提示用户安装SDK的内置界面。
image015
 
在大多数情况下,您可能需要修改“Dynamsoft标志”。“标志”是在文件\Resources\reference\hint.css中定义的:
1
2
3
4
5
6
.DYNLogo
    {
    background:url(logo.gif) left top no-repeat;
    width:159px;
    height:39px;
    }
图像 (\Resources\reference\logo.gif)是需要更改的文件。最简单的方法是用自己的标志替换它,但需要保持相同的名称和大小。image016
 
如果您想进一步更改此提示的样式,可以更改上面提到的css或更改文件\Resources\dynamsoft.webtwain.install.js中的代码:
1
2
3
4
5
6
7
8
9
10
11
12
function OnWebTwainNotFoundOnWindowsCallback(ProductName, InstallerUrl, bHTML5, bIE, bSafari, bSSL,
strIEVersion) { }
    /* This callback is triggered when Dynamic Web TWAIN is not installed on a PC running Windows */
    function OnWebTwainNotFoundOnMacCallback(ProductName, InstallerUrl, bHTML5, bIE, bSafari, bSSL,
strIEVersion) { }
    /* This callback is triggered when Dynamic Web TWAIN is not installed on a MAC */
    function OnWebTwainOldPluginNotAllowedCallback(ProductName) { }
    /* This callback is triggered when Dynamic Web TWAIN is disabled by a non-IE browser */
    function OnWebTwainNeedUpgradeCallback(ProductName, InstallerUrl, bHTML5, bMac, bIE, bSafari, bSSL,
strIEVersion) { }
    /* This callback is triggered when Dynamic Web TWAIN installed on the machine is older than the //one on
the server and upgrade is needed */

本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!

未发布 微软C# 8.0中的四个特性
by Harriet666 keys 分享 1504687137082

可空的引用类型(Nullable Reference Types)

可空的引用类型可概括地表述为,引用类型将不再默认可空。因此,开发人员必须使用定义可空值类型的同样语法“Type?”,显式地标记一个引用类型为可空。

如果将一个空值赋值给一个非可空的引用类型,那么将会给出一个编译器警告。与之相类似,从可空类型中读取也会给出编译器警告,除非显式地提前检查了被质疑的变量是否为空值。因此从理论上讲,开发人员需要做的唯一更改就是在代码的适当位置标上问号。

该特性新加了一个语法。该语法针对开发人员明知一个可空变量x并非实际为空值却无法证明给编译器的情况。在上述情况下,开发人员现在可以定义x!.Method(),消除编译器对于潜在空值引用异常的警告。
 

异步流(Async Streams),即foreach async

异步流是IEumerable的异步等价类。C#团队自2015以来就一直在努力实现异步流。在经历了很多争议后,其语法被定为:
foreach await (string s in asyncStream)
开发人员将使用如下的函数签名定义一个异步迭代器:
async IAsyncEnumerable MethodName()
就像使用一个正常的IEnumerable方法一样,开发人员可以使用“yield return”以懒方式(Lazy)构建对象流。

相比于源自响应式扩展(Reactive Extensions)的IObservable,使用这一方法的优点在于让消费者控制流速,这被称为“Pull模式”。与之相对,IObservable是一种“Push模式”,这意味着生产者可以使用高于消费者所能处理的流速让流涌向消费者。
 

缺省接口实现(Default Interface Implementations)

缺省接口实现在本质上是一种有限形式的多重继承。它允许抽象接口像抽象类一样,对方法进行完全的定义,只是抽象接口依然不能定义构造函数和字段。

需注意,开发人员可以通过使用ConditionalWeakTable在接口上模拟字段。

默认接口实现的主要好处是,开发人员可以在不破坏向后兼容的条件下,将一个新方法添加到一个已有的接口中。但是这并非是有保证的,因为默认接口只是在可以设计出适合的默认方法时才能工作。
 

扩展(Extension)

开发人员可以编写扩展方法,但是不能扩展属性,这是长期以来对C#一直存在的一个问题。事实上,如果使用当前的模式,甚至是不能定义一个扩展属性或事件的。此外,在很多开发人员看来,在静态类中放置扩展方法是“很诡异的”。

新的设计中新给出了一种称为“扩展”(Extension)的顶层语言构件。例如,如果开发人员想要为自定义的Customer类创建一个扩展方法和属性,可编写如下代码:
extension CustomerExt extends Customer {
    //定义方法和属性的代码。
}
就接口而言,是不能在扩展中定义实例字段的,但是可以使用ConditionalWeakTable实现模拟。定义静态字段也是允许的。

除了对属性、事件和操作符重载的扩展,C#团队甚至考虑允许扩展构造函数。扩展构造函数非常适用于工厂模式(Factory)和对象池场景。

扩展接口(Extension Interfaces)C#团队还考虑了扩展接口,即在已有类中添加新接口的能力。但是扩展接口将不会成为C# 8中的特性,因为它需要更改底层的运行时。
未发布 集成的HTTP嗅探器HttpWatch更新至v11.0.20,增加网络错误的数据提示
by Harriet666 keys 分享 1507885553417
HttpWatch是一款集成的HTTP嗅探器,为IE和Firefox提供新的方法以查看您网站的负载和运行情况。你可以直接在浏览器中调试由web页面生成的网络流量,而无需切换到一个单独的工具。

【HttpWatch v11.0.20免费下载>>>】

HttpWatch v11.0.19更新内容
  • 改进:增加了在Chrome中发生网络错误的数据提示
  • 修复:主请求网格中自动滚动有时会出现问题
关于商家
Simtec Limited是一家位于英格兰西南部的公司。他们的核心产品HttpWatch于2002年4月发布,是第一个提供准确的HTTPS运行监控的工具。主要客户包括AOL, eBay, Google和Microsoft。

【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】

活动时间:10月1日-10月31日

未发布 Linux/UNIX管理工具Xmanager发布v6 Beta版,新增主密码加密功能
by Harriet666 keys 分享 1510736305135
Xmanager是市场领先的PC X服务器,它能够带来Windows平台下强力的虚拟应用技术。使用Xmanager,能够使安装在远程的基于UNIX系统的X应用程序与一般的Windows应用程序完全一样。它提供了一个强大的会话管理控制台、易于使用的X应用程序启动器、X服务器概要文件管理工具、SSH模块和用于安全访问的远程高性能PC X服务器及虚拟化的UNIX/Linux环境。
 
Xmanager v6 Beta最新版下载>>>
 
Xmanager v6 Beta更新内容
会话管理器
在版本6中,我们对Xmanager的界面做了一些直观的改变。最大的变化是在Xmanager中直接引入了会话管理器面板,用户可以轻松地创建、编辑和删除会话文件。现在,会话管理的所有方面以及同时启动多个会话的功能都可以通过会话管理器在Xmanager中访问。此外,每个文件夹和会话类型现在都有自己的选项卡,功能一目了然。

 
使用主密码增强加密功能
用户可以将用户定义的字符串设置为主密码来加密会话文件密码。设置主密码后,会话文件密码将不可用,除非输入正确的主密码。这可以保护用户的密码,即使会话文件泄露给未经授权的用户。
另外,如果不同的PC使用相同的主密码,则可以使用相同的会话文件。这在使用云共享会话的环境中非常有用。
主密码以前在Xshell 5中可以找到,现已扩展到版本6中的全系列软件。主密码加密用于连接服务器的密码,用户密钥的密码和密码包含在会话文件中的字符串。
 
支持SSH PKCS#11
PKCS#11协议使用户能够使用硬件令牌(HSM)安全地存储私钥,以提高安全性。
 
主题选择
您现在可以根据需要选择Xmanager的颜色和整体主题。
未发布 7个最新的实用性 JavaScript MV*框架
by Harriet666 keys JavaScript 1487317434712
JavaScript是目前web上最受欢迎的编程语言之一。最初它并不是很受欢迎,因为它不是为服务器端编程而设计的。JavaScript主要作用于设计用户界面,许多开发人员特别是经验丰富的专业人士认为它比较适合缺乏经验的新手使用。随着用户体验成为Web开发中一个重要的组成部分,JavaScript的人气也开始增加。有一些框架有助于构建JavaScript应用程序,其中MV *是可以构建MVP和MVVM模式的框架。点击查看7个最新的实用性 JavaScript MV*框架>>>
未发布 Windows网络守门人UserLock教程:UserLock教程:阻止规定时间以外的访问连接
by Harriet666 keys 分享 1508318382708
IS Decisions公司旗下的UserLock为企业和组织提供了实施网络访问安全以及优化工作站使用的一系列有效方法。它通过阻挠来自于外部或者内部的恶意访问事件为Windows网络提供了真正的访问安全。(重要推荐:UserLock已加入在线订购,点击购买!

UserLock免费下载试用>>>


UserLock允许您创建规则用来阻止用户在授权时间以外连接到网络。本文将一步一步的教您如何制定规则来阻止用户工作站和终端连接超出工作时间:
- 周一至周五,8:00至19:00。
- 周六上午,9:00至13:00。
并且将在到达时限后强制任何会话的注销打开。
 
1、点击菜单中的“受保护的帐户”。如果已存在则可以通过双击相应的行来打开所需的用户帐户。否则,您可以为目标组创建受保护的帐户。
 
2、显示“时间限制”部分。
 
3、选择“以下时间范围”下拉列表的'被授权'选项。
 
4、点击“添加”来定义时间段。
 
5、定义具体的时间范围。选择“交互”作为会话类型来选择哪些类型的会话,包括工作站和终端会话类型。点击“确定”。
 
6、检查相应的日期框 - 星期一至星期五。点击“确定”。
 
7、调整时间为上午8:00至下午7:00。点击“确定”以验证第一个授权的时间范围。
 
8、您现在必须为星期六定义第二个时间范围。再次点击“添加”。
 
9、定义第二个时间框架,即星期六上午9:00至下午1:00。再次选择“交互”作为会话类型,包括工作站和终端会话类型。点击“确定”。
 
10、取消选中从星期一到星期五的框,而是选中星期六的框。点击“确定”。
 
11、调整时间为上午9:00至下午1:00。点击“确定”添加第二个时间框架。
您已经成功定义了与授权时间相对应的两个时间范围。用户在这些时间以外的连接将被拒绝。
 
12、要在时间限制后注销用户会话,请调整“超时时采取的行动”为“注销会话”选项。
请注意,强制注销表示所有未保存的文档将丢失。下一步允许您自定义警。
 
13、要警告用户授权时间已经结束,将“注销通知超时”设置为“已启用”,并输入几分钟,在此分钟内将显示警告消息框(在我们的示例中为15)。
14、在“快速访问”面板中单击“确定”以验证规则。
 
“Everyone”组的用户成员将被允许在授权时间内打开工作站或终端会话的权限。达到时限的会话将被注销,并发出预警通知。所有工作站和终端连接超出规定的时间将被拒绝。
 
您可以在“消息”视图中自定义“注销通知超时”内容。通知消息参考是“TIME_RESTRICTION_LOGOFF”。


未发布 矢量图形引擎库VectorDraw Developer Framework发布v7.7014.0.5
by Harriet666 keys 分享 1517214900113
VectorDraw Developer Framework(VDF)是一款构建2D、3D图形并用于应用程序可视化的矢量图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。
 
VectorDraw Developer Framework试用版下载>>>
 
VectorDraw Developer Framework(VDF)v7.7014.0.5更新内容:

WebJS

新增需求(7.7014.0.1)
  • 70001215 MergeDocument方法支持使用mergeFlags  
新增需求(7.7014.0.5)        
  • 70001249 处理AddBlockFromFile加载
漏洞(7.7014.0.1)
  • 70001204 线路对象捕捉无法运作
  • 70001206 导出到vds脚本时出现异常
  • 70001210 WebGl渲染中的实体影线问题  
漏洞(7.7014.0.5)
  • 70001250 vdConst CloneEntity出现意外
 

Converter

新增需求(7.7014.0.1)
  • 70001217 DGN中unsuported对象的类型
漏洞(7.7014.0.1)
  • 70001212 Textstyle未使用正确的TTF字体导入
漏洞(7.7014.0.5)
  • 70001248 折线的宽度问题
   

Engine

新增需求(7.7014.0.3)
  • 70001231 改进触摸控制
  • 70001234 使用Wrapper检查鼠标是否位于ViewCube内部
  • 70001239 是否可以在OnFilterOsnap事件中获取交集对象
  • 70001241 用webGl 3d模式绘制线条和文本
漏洞(7.7014.0.3)
  • 70001235 版本2000中的DXF导出问题
  • 70001236 在Wire2D模式下,线路抗锯齿功能无法正常工作
  • 70001237 鼠标没有正确渲染
  • 70001238 vdLayout调整大小将引发异常
  • 70001240 AlignToView对象在PDF输出中缩放
  • 70001242 导出多边形为dwg dxf文件格式时出错
漏洞(7.7014.0.4)
  • 70001243 不完整的纸张模型刷新
  • 70001245 当VectorDrawBaseControl WndProc被调用时,出现间歇性崩溃

 近期热门 - 点击最多
  1. ZOT 极简而强大的 Docker OCI 镜像仓库
  2. 用podman代替docker更轻量更安全的云原生容器:替换国内镜像源web窗口管理及开机自动重新启动
  3. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  4. Node.js 打印vite react+go项目目录树
  5. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  6. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  7. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  8. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  9. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  10. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别

  全端社区 - 最新回复
  1. ZOT 极简而强大的 Docker OCI 镜像仓库
  2. 用podman代替docker更轻量更安全的云原生容器:替换国内镜像源web窗口管理及开机自动重新启动
  3. 在无管理员权限的情况下,使用安装Python补全pip临时配置环境变量;即零权限使用node.js/npm
  4. Python鉴权方法:Depends 依赖注入;装饰器;与基于Proxy模式的Session状态管理自动计算脏属性;将用户数据存储在Redis中
  5. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  6. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  7. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  8. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  9. Node.js 打印vite react+go项目目录树
  10. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA