GoSqlGo 1.2.0 发布,添加 Node.js 支持

yong9981
 yong9981
发布于 2019年05月17日
收藏 9

GoSqlGo ( https://gitee.com/drinkjava2/gosqlgo)

天下武功,唯快不破,程序无非就是接收用户输入、存到数据库。GoSqlGo能让前端直接存取数据库,独立完成项目开发。

GoSqlGo是一个运行于服务端的工具,它的最大特点就是在运行期动态编译客户端Java代码,所有SQL和Java代码都可以在前端Html页面完成,可以彻底甩掉后端。开发完成后再利用打包工具将SQL和Java从前端移到后端,以实现安全。忘掉MVC吧,因为现在架构变成MV两层了;忘掉FreeMaker之类模板吧,因为Java内嵌到HTML里去了;忘掉后端程序员吧,因为前端把后端的活给干了;忘掉前端校验吧,因为后端校验这活也归前端了,前端校验能偷懒就偷吧。

本次v1.2.0版更新内容:添加了对Node.js脚本的支持,以下为使用示例:

<!DOCTYPE html>
<html>
<head>
<script src="/js/jquery-1.11.3.min.js"></script>
<script src="/js/jquery-ajax-ext.js"></script>
<script src="/js/gosqlgo.js"></script>
</head>
<body>
	...略...
	<div>
		<script>
			document.write($script(`
			        const process = require('process'); 
					var i= parseInt($1)+ parseInt($2); 
			        result="当前Node.js版本号:"+process.version+"<br/> 运行结果1+2="+ i;`, 
			        1, 2));
		</script>
	</div>
</body>
</html>

 从上面的例子未尾可以看到,Node.js服务端的Javascript可以用一个script方法,直接写在客户端的Javascript里了。简单地说,就是Javascript可以嵌入Javascript了,惊不惊喜? 意不意外?  
它的原理是GoSqlGo对于script方法传来的片段,先编译出一个Java文件在服务端,然后每次调用这个Java时,会将调用转发到Node.js服务端上,Node.js服务端根据调用的ID,从磁盘或缓存里读取script文本片段,并用eval方法转为Javascript来执行。 
在发布阶段,用goServ.bat或goServForce命令,将所有的Javascript片段会抽取成服务端的Java源文件,以实现安全性,防止客户端进行Javascript的eval方法的注入攻击。
示例中的nodeServer.js是我临时学了Node.js之后现编的,没有加上DAO存取数据库的功能,如果对它不满意,Node.js高手们请自已上。

GoSqlGo下一个目标是加入对php的支持,以后在Javascript里可以直接嵌入php,或者大家有什么更好的目标及建议也可以提出来。 

另外考虑到有些人不清楚GoSqlGo是干什么的,下面简单贴上另一个GoSqlGo的使用示例,它允许在前端html里直接写SQL和Java进行服务端操作:

<!DOCTYPE html>
<html>
 ...略...  
<body>
    <script> 
	  document.write($java(`return new WebBox("/page/menu.html").setAttribute("title", $1);`, "Transaction demo, use jQuery")); 
	  function getUserListHtml(){ 
		  var users=$$qryMapList(`select * from account where amount>=? order by id`,0);
		  var html="User List:<br/>";
		  for(var i=0;i<users.length;i++) 
			  html+="User ID:" +  users[i].ID+", AMOUNT:"+ users[i].AMOUNT+"<br/>"; 
	      return html;		   
	  } 
	</script>   
 ...略...
</body>
</html>


以上示例用到了Java、Sql、Javascript三种语言。详细的介绍可以参见项目主页#GoSqlGo

另外请大家顺手在码云点个赞,开源不容易,这么优秀的开源项目更是不容易碰到。额,好吧我承认,第一次拉赞助没经验,这么说显得太诚实、太谦虚了,以后会改进。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:GoSqlGo 1.2.0 发布,添加 Node.js 支持
加载中

精彩评论

谜语

引用来自“谜语”的评论

这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug
代码耦合程度高,复用性低
谜语
这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug

最新评论(6

yong9981
yong9981

引用来自“谜语”的评论

这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug

引用来自“yong9981”的评论

事物是循环上升发展的,看似一样,实质不同。JSP是后端渲染,后端要依赖前端的HTML,沟通成本大(因为界面这玩意不好解释),一不小心就会破坏HTML。前后端分离由前端依赖后端的业务方法,沟通成本小,因为业务方法相对比较好解释, 但沟通成本依然存在。GoSqlGO定位于客户端直接运行服务端代码,方便前端实现简单的CRUD业务逻辑,无任何沟通成本,有利于快速开发。对于复杂的、需要复用的业务逻辑,GoSqlGo也不排斥放在后端。将业务放在前端是一个新选择,但决不是唯一的选项。
至于思维跟着也会乱:这是管理问题,画出业务的领域模型图会有帮助。出问题了也不好找bug:GoSqlGo定位于简单业务的CURD,出bug的机会并不多。而简单的CRUD往往占据了开发的大部分工作量。
yong9981
yong9981

引用来自“谜语”的评论

这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug

引用来自“谜语”的评论

代码耦合程度高,复用性低
要看情况,如果业务很少,或是业务的复用性要求高,就不适用于GoSqlGo。反之,如果业务非常简单,大多是简单的CRUD,而且与界面依赖性高,离开了这个界面就不存在这个业务逻辑,就非常适用于GoSqlGo这种开发模式,省掉对后端的沟通成本。
另外,GoSqlGo也是支持将业务放在后端的,以实现公用业务逻辑的复用,因为它原理是将前端代码移到后端,所有的代码最终都会回到后端的。
yong9981
yong9981

引用来自“谜语”的评论

这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug
事物是循环上升发展的,看似一样,实质不同。JSP是后端渲染,后端要依赖前端的HTML,沟通成本大(因为界面这玩意不好解释),一不小心就会破坏HTML。前后端分离由前端依赖后端的业务方法,沟通成本小,因为业务方法相对比较好解释, 但沟通成本依然存在。GoSqlGO定位于客户端直接运行服务端代码,方便前端实现简单的CRUD业务逻辑,无任何沟通成本,有利于快速开发。对于复杂的、需要复用的业务逻辑,GoSqlGo也不排斥放在后端。将业务放在前端是一个新选择,但决不是唯一的选项。
谜语

引用来自“谜语”的评论

这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug
代码耦合程度高,复用性低
谜语
这个和jsp有什么区别,除了语言。个人感觉在一个页面上处理外观设计,逻辑处理,数据交互,会让页面比较乱。思维跟着也会乱,出问题了也不好找bug
紫外線
紫外線
众人皆醉我独醒(×_×)
返回顶部
顶部