Skip to content

Latest commit

 

History

History
2479 lines (1675 loc) · 143 KB

👨‍💻‍开源新发现_53周.md

File metadata and controls

2479 lines (1675 loc) · 143 KB

##关键词: 1.古诗词API,开源Markdown笔记软件, 1.微信:微信批量推送,微信小程序博客,微信Markdown排版, 1.App 版本的 CNODE 社区,嵌入式网站讨论系统 1.wukong-robot:树莓派/智能音箱,语音对话机器人,

  1. 人工生命,jSqlBox(ORM),jBeanBox, GoSqlGo大前端调用SQL/Java片段(Javascript中写SQL),MyFat(mybatis增强), 1.TERSUS无代码开发,数据库变成REST, 1.Web IDE(clever-nashorn,Java nashorn Js引擎), 1.js能够直接调用后端服务(DWR框架), 1.spring-boot-api-project-seed种子项目(快速构建中小型API、RESTful API项目)

2.代码模板:java工具代码/架构代码/util类用法,java8用法示例,模板库,测试代码片段库,

2.idea插件:小函数(代码块)跳转,快速生成代码,API测试/测试数据填充/文档生成(发送给前端),参数校验/类型转换/,一键生成API(全部5个小函数),翻页/过滤器/复杂sql,种子项目生成,前端UI生成,生成UML时序图/微服务图/项目总览图, 五个代码块/小函数:API/controller/service/dao/Mapper/DB代码块,

2.【代码生成】:MoliCode,ListCode,EasyCode,APIJSON,eve,xJavaFxTool,zyplayer-doc统一文档,uber/queryparser,Enhancer,EOVA,CBoard,Topology微服务图,uml,PDMan,SkyWalking监控,Plantuml,

//JavaScript 6.Midway(egg.js), 5.页面可视化搭建工具(飞冰),d2-admin,d2-admin-pm权限, 5.Vue-Layoutpipeline-editor

//浏览器tools 6.CodeMirror , code-server浏览器访问远程服务器上运行的VS Code 6.JavaScript编写的内存型SQL数据库AlaSQL 6.wwwsqldesigner(在线设计ER图)

//java 3.KJServlet 是一个基于 Nashorn 编写的 Web 服务框架, Javascript 来编写服务端的代码 3.vert.x是真node.js的超集(将来会用graal.js替换之,通用虚拟机GraalVM) (Java ScriptEngine) (Redis的RESP的协议规范)

//SQL 3.Sql解析工具fdb-sql-parser(Druid的SQL解析器), 3.Mybatis的动态SQL功能,

//API 4.【SQL + 代码 = api】 4.sqler:使用直接SQL查询编写API,让我们重新考虑一下SQL 【RESP协议:模拟Redis服务和客户端通讯,实现RESP协议通信 】 4.JtSQL = javascript + sql + 模板理念,组合而成的一种创意脚本【客户端可以调试】 4.Appwrite是面向Web和移动开发人员的简单的自托管后端服务器 4.n8n.io-工作流程自动化 4.postwoman: 👽 API request builder arc-electron:高级REST客户端-桌面应用程序 4.restful-api-design-references:RESTful API设计参考文献列表 4.APIAuto (原名 APIJSONAuto),自动生成Restful API文档 4.Gen通过接口生成一切

【函数式编程+代码生成器】 //Vavr函数式编程 //Java代码生成器, EasyCode,CodeMaker,SpringBootCodeGenerator,


microsoft/vscode-tips-and-tricks: Collection of helpful tips and tricks for VS Code. https://github.com/microsoft/vscode-tips-and-tricks


mycode-generator项目为一款通用的Java代码生成神器 - Java开发 - 问题 | CTOLib码库 https://ruby.ctolib.com/article/comments/85881


是时候扔掉 Postman 了,试试 IntelliJ IDEA 自带的高能神器-Java技术箭的博客-51CTO博客 https://blog.51cto.com/14480698/2458639

但是当使用了IDEA REST之后,postman就可以丢了,因为,IDEA REST Client具有postman的所有功能,而且还有postman没有的功能


工作方法小结 - 简书 https://www.jianshu.com/p/309c0cf2dc0d

线上问题排查的工具 greys,可以在指定方法处打桩,查看关键点流程 gceasy.io,可以分析gc日志


ddd-by-examples/library: A comprehensive Domain-Driven Design example with problem space strategic analysis and various tactical patterns. https://github.com/ddd-by-examples/library

一个全面的领域驱动设计示例,其中包含问题空间策略分析和各种战术模式。 image.png


Java 神器byte buddy动态生成类 - 简书 https://www.jianshu.com/p/fa0e41165a00

最近在实现一个功能需要动态自动Java类,刚好了解了一下java buddy这个库。Java buddy是基于ASM实现,所以比ASM好用的多。还有一个名气更大的库mockito,其核心就是基于byte buddy实现的,可以动态生成mock类,非常方便。另外一个大的应用就是 java agent,其主要作用是在class 被加载之前对其拦截,插入自己的代码。

我的需求是在指定一个类,生成一个子类,在子类override父类的接口,返回指定的值。


数据库两大神器【索引和锁】 - Java3y - 博客园 https://www.cnblogs.com/Java3y/p/9356414.html

索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。

本文力求简单讲清每个知识点,希望大家看完能有所收获


阅读大型 JavaScript 源码时有什么好用的工具? - 知乎 https://www.zhihu.com/question/25490540/answer/30883710

image.png 使用 lambda-view 打开后,可以看到源代码整体的轮廓其实就是一个立即调用的匿名函数:

展开函数部分,值得注意的缩进风格与 Sublime Text 之类的编辑器完全不同,更易读;并且内部结构默认处于收缩状态,可以比较清楚的看到整个函数内的轮廓:

点击后可以继续展开:

不仅可以阅读 Vue.js 之类的前端代码,Node.js 代码也完全没问题。


JavaScript武器库_前端,编程,程序员_tzllxya的博客-CSDN博客 https://blog.csdn.net/tzllxya/article/details/92412394

作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率。这里提一个小点,我们在业务开发过程中,经常会重复用到日期格式化、url参数转对象、浏览器类型判断、节流函数等一类函数,这些工具类函数,基本上在每个项目都会用到,为避免不同项目多次复制粘贴的麻烦,我们可以统一封装,发布到npm,以提高开发效率。

这里,笔者已经封装并发布了自己的武器库 outils,如果你对本项目感兴趣,欢迎 star 本项目。当然你也可以在本项目的基础上封装自己的武器库。


microsoft / monaco-editor:基于浏览器的代码编辑器 https://github.com/microsoft/monaco-editor

Monaco编辑器是为VS Code提供支持的代码编辑器 image.png


HashiCorp的Terraform https://www.terraform.io/

将基础架构写为代码 Terraform用户使用一种称为HCL(HashiCorp配置语言)的简单易读的配置语言来定义基础结构。用户可以编写唯一的HCL配置文件,也可以从公共模块注册表中借用现有模板。 image.png


Terraform:简介 - sparkdev - 博客园 https://www.cnblogs.com/sparkdev/p/10052310.html

具体的说就是可以用代码来管理维护 IT 资源,把之前需要手动操作的一部分任务通过程序来自动化的完成,这样的做的结果非常明显:高效、不易出错。

自动化变更(Change Automation) 把复杂的变更集应用到基础设施中,而无需人工交互。通过前面提到的执行计划和资源图,我们可以确切地知道 Terraform 将会改变什么,以什么顺序改变,从而避免许多可能的人为错误。


用Flow编写更好的js代码 - lxh散落的青春 - 博客园 https://www.cnblogs.com/xhliang/p/9987109.html

你是否经常在debug那些简单可避免的bug?可能你给函数传参的时候搞错了参数的顺序,或者本来应该传个Number类型的参数,你传了一个String类型?JavaScript的弱类型是这一类bug的罪魁祸首,静态类型语言中不存在此类bug。

Flow就是JavaScript的静态类型检查工具,由Facebook团队于2014年的Scale Conference上首次提出。该库的目标在于检查JavaScript中的类型错误,开发者通常不需要修改代码即可使用,故使用成本很低。同时,它也提供额外语法支持,使得开发者能更大程度地发挥Flow的作用。


cdr / code-server:在远程服务器上运行VS Code。 https://github.com/cdr/code-server

code-server是在远程服务器上运行的VS Code,可通过浏览器访问。 image.png


viatsko/awesome-vscode: 🎨 A curated list of delightful VS Code packages and resources. https://github.com/viatsko/awesome-vscode

🎨精选的VS Code软件包和资源的精选列表。


moshowgame/SpringBootCodeGenerator: √基于SpringBoot2+Freemarker的代码生成器,√以释放双手为目的,√支持mysql/oracle/pgsql三大数据库, √用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码. https://github.com/moshowgame/SpringBootCodeGenerator image.png

image.png


基于 IntelliJ IDEA 开发的代码生成插件 EasyCode | 软件推介 http://www.sohu.com/a/245640419_827544

EasyCode能做什么? EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件,主要通过自定义模板(基于velocity)来生成各种你想要的代码。通常用于生成Entity、Dao、Service、Controller。如果你动手能力强还可以用于生成HTML、JS、PHP等代码。理论上来说只要是与数据有关的代码都是可以生成的

功能说明: 支持多表同时操作 支持同时生成多个模板 支持自定义模板 支持自定义类型映射(支持正则) 支持自定义扩展属性 支持对表属性进行手动配置 所有配置项目支持分组模式,在不同项目(或选择不同数据库时),只需要切换对应的分组,所有配置统一变化。


EasyCode: EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。 https://gitee.com/makejava/EasyCode

分享我写的配置模板,包含mysql orcl 批量增删改查及分页,bootstrap风格表单: https://my.oschina.net/pmc8080/blog/3103348

这两天一直在改模板,非常棒的项目,之前写的都是根据某个数据库做的,现在利用datagrip达到所有数据库支持的效果太棒了。三四个月时间,我经历了oracle /mysql /postgressql 三个数据库,自己写代码生成的项目,每次都需要改查询语句真的好麻烦


kvn-code-plugin: idea插件,自动生成spring+mybatis代码。模板可以自定义扩展 https://gitee.com/kkk001/kvn-code-plugin

插件的gui实现是参考:EasyCode 生成模板代码是使用mybatis-plus-generate-2.1.8.jar改造的。

image.png


EasyCode Idea插件配置分享 - 天下无邪 - OSCHINA https://my.oschina.net/pmc8080/blog/3103348 有道云笔记 https://note.youdao.com/ynoteshare1/index.html?id=5057106a52d573bde57a803366874631&type=note

配置中包含: mysql、oracle 数据库的代码生成模板,包含批量操作,分页,mvc分层代码; bootstrap风格的表单,列表js 配合bootstrapValidator 前端校验 js: notNull 为数据库字段是否必填属性 columnLength 为数据库字段长度 -1 表示没长度

选择这个组生成代码


IDEA 代码生成插件 CodeMaker_mokingone的专栏-CSDN博客 https://blog.csdn.net/lj1314ailj/article/details/83998936

image.png

增加模板


Search · sql javascript https://github.com/search?q=sql+javascript


阿里开源 - Alibaba Open Source - 我们开放源码,更相信社区的力量 https://opensource.alibaba.com/


midwayjs / pandora:由TypeScript支持的阿里巴巴代表的可管理,可度量和可跟踪的Node.js应用程序管理器 https://github.com/midwayjs/pandora

经过多年在企业Node.js应用程序管理方面的经验,来自阿里巴巴的Midway团队最终开源了Pandora.js。它是一个应用程序管理器,集成了许多功能,如监视,调试,弹性。非常欢迎您使用它,并在其上构建您的操作基础结构。


Midway https://midwayjs.org/midway/

简洁至上 Midway 最大的特色是使用 IoC 机制将应用依赖管理起来,最大程度上帮助应用在 web 开发中提升可维护性和扩展性,在这一系列的增强下,开发者无需关注对象创建和销毁,把注意力集中在真正复杂的业务中。

面向未来 享受 Typescript 的开发体验,增强的语法和各种面向接口编程,让用户提前享受到便利。通过装饰器和依赖注入的通用能力,让应用开发变的流畅自然,便于多人沟通协作,可以专注业务逻辑编码,减少依赖错误

拥抱社区 兼容社区 koa 中间件以及各种 Eggjs 插件,方便用户快速上手和迁移,降低开发和部署成本。同时我们也提供了各种工具帮助用户快速上手,IoC 模块可独立使用,方便迁移到不同的框架和平台。


Midway 开发指南 | Midway https://midwayjs.org/midway/guide.html#%E8%B7%AF%E7%94%B1%E5%92%8C%E6%8E%A7%E5%88%B6%E5%99%A8

 import { provide, controller, inject, get } from 'midway';

@provide()
@controller('/user')
export class UserController {

  @inject('userService')
  service: IUserService;

  @get('/:id')
  async getUser(ctx): Promise<void> {
    const id: number = ctx.params.id;
    const user: IUserResult = await this.service.getUser({id});
    ctx.body = {success: true, message: 'OK', data: user};
  }
}


Midway首页、文档和下载 - 基于 IoC 的 Web 全栈开发框架 - OSCHINA https://www.oschina.net/p/Midway

Midway 是一个 Typescript 编写的 Node.js web 框架,它通过 IoC 的注入机制,让应用的业务逻辑进行解耦,让大型 Node.js 应用开发变的更加简单自然。

Midway 的一些特性。

基于 IoC 体系业务代码进行解耦,依赖统一管理统一初始化

常见的 web 场景装饰器简化业务开发

支持 Egg.js 的所有插件体系,框架装饰器统一编码风格

基于 Typescript ,面向接口编程的编码体验

@provide()
@controller()
export class HomeController {

 @inject()
 reportService: IReportService;
 
 @get('/')
 async index(ctx) {
   ctx.body = await this.reportService.getReport();
 }
}


se55i0n / DBScanner:自动扫描内网常见的sql,no-sql数据库脚本(mysql,mssql,oracle,postgresql,redis,mongodb,memcached,elasticsearch),包含未授权访问和常规弱密码检测 https://github.com/se55i0n/DBScanner

image.png


javascript + sql编写SQL客户端工具tabris - 鱼东东 - 博客园 https://www.cnblogs.com/yudongdong/p/8169117.html

前不久发现了一个创意的脚本JtSQL(java编写)

确实在工作中总会遇到这样的问题 经常去拉sql,有时候一句sql执行搞不定 就得分多次sql, 写sql写的心累。把JavaScript 和 sql 结合起来确实很赞。能解决一直困扰的问题 以这个为创意点我也搞了一个工具 我命名为tabris脚本工具 开源地址为:https://github.com/yuzd/ClearScript.Manager

封装的sql log http 三大组件 在编辑器上的方法能代码智能提示  image.png


noear/JtSQL: noear::javascript + sql https://github.com/noear/JtSQL

JtSQL = javascript + sql + 模板理念,组合而成的一种创意脚本 定位为数据库的批处理或计划任务(尤其在分布式数据库情境下...)

JtSQL 特点: *.结合了JS、SQL、模板理念; *.保持了JS和SQL的语法高亮(利于DBA审核); *.方便统一管理、部署、运行 *.像存储过程一样,提供当前上下文及变量支持; *.像SQL客户端工具一样,即时编写即时运行; *.像定制统计程序一样,提供过程和逻辑控制能力; *.服务端运行(别误会成客户端运行啊...)

JtSQL 编码说明: 使用$db::...,在Js里嵌入SQL脚本 使用{{...}},在SQL里嵌入Js脚本(注:若它处出现{{ 或 }} 当中加个空隔)

函数log(str),用于记录日志 函数set(key,val),用于设置配置信息 函数get(key),用于获取配置信息 函数http({url,form,header}),用于请求http 函数require(url),用于引入一个JS脚本 函数guid(),用于生成一个GUID 函数md5(str),用于生成MD5加密值 函数sha1(str),用于生成sha1加密值

2.批处理运行模式: 运行:java -jar jtsql.jar /data/a/a.jt.sql 3.引入自己的项目: 把源码:JtSqlEngine 放到自己的项目里,随便弄:)

缘起?... 分布式数据库: 1.不能写存储过程; 2.不能写事件(即定时任务); 3.不能写函数;

SQL的客户端工具: 1.只能以单句SQL作为执行单元; 2.无变量,无上下文;

开发统计程序: 1.需要编译和特定部署; 2.SQL一般由字符串拼接(无法做语法高亮) 3.DBA难以审核

/*3.调用WEBAPI获取IP城市(upd_ip_city.jtsql.js)*/

set("sponge.sponge_track",{db:"sponge_track",user:"xxxx",password:"xxxxxx",url:"jdbc:mysql://x.x.x.x:3306/sponge_track?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true"});

function doItem(item){
   var txt  = http({ url:"http://iploc.market.alicloudapi.com/v3/ip?ip={{item.ip_val}}",header:{"Authorization":"APPCODE x...x"} });
   var ipx = JSON.parse(txt);
   
   if(typeof(ipx.adcode) == 'string'){
   	$<sponge.sponge_track::UPDATE user_ip SET city_code = {{ipx.adcode}},is_checked=1 WHERE ip_id = {{item.ip_id}};>;
   }else{
   	$<sponge.sponge_track::UPDATE user_ip SET is_checked = 1 WHERE ip_id = {{item.ip_id}};>;
   };
};


var list = $<sponge.sponge_track::SELECT * FROM user_ip WHERE city_code=0 and is_checked=0 LIMIT 1000;>;

if(list && list.length){
   for(var i in list){
   	var item = list[i];
   	doItem(item);
   };
};


在线SQL - 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/1177760294764384/1179611432985088

为了便于在线练习,我们提供了一个在线运行SQL的功能。实际上这是在浏览器页面运行的一个JavaScript编写的内存型SQL数据库AlaSQL。不必运行MySQL等实际的数据库软件,即可在线编写并执行SQL语句。 image.png


使用 CodeMirror 打造在线代码编辑器_mxh的博客-CSDN博客 https://blog.csdn.net/qq_37193537/article/details/88426196

CodeMirror 是一款在线的支持语法高亮的代码编辑器。官网: http://codemirror.net/


代码镜像 https://codemirror.net/

image.png


ondras / wwwsqldesigner:WWW SQL Designer,您的在线SQL图表工具 https://github.com/ondras/wwwsqldesigner

WWW SQL Designer允许用户创建数据库设计,可以将其保存/加载并导出到SQL脚本。


kripken/sql.js: SQLite compiled to JavaScript through Emscripten https://github.com/kripken/sql.js

 var initSqlJs = require('sql.js');
// or if you are in a browser:
// var initSqlJs = window.initSqlJs;

initSqlJs().then(SQL => {

  // Create a database
  var db = new SQL.Database();
  // NOTE: You can also use new SQL.Database(data) where
  // data is an Uint8Array representing an SQLite database file

  // Execute some sql
  sqlstr = "CREATE TABLE hello (a int, b char);";
  sqlstr += "INSERT INTO hello VALUES (0, 'hello');"
  sqlstr += "INSERT INTO hello VALUES (1, 'world');"
  db.run(sqlstr); // Run the query without returning anything

  var res = db.exec("SELECT * FROM hello"); 


sqlmapproject / sqlmap:自动SQL注入和数据库接管工具 https://github.com/sqlmapproject/sqlmap/

sqlmap是一个开源渗透测试工具,它可以自动检测和利用SQL注入漏洞并接管数据库服务器的过程。它具有强大的检测引擎,针对最终渗透测试仪的众多利基功能,以及广泛的开关,包括数据库指纹识别,从数据库中获取数据,访问底层文件系统以及通过外出在操作系统上执行命令,带内连接。 image.png


page-pipepline/pipeline-editor: 🌾页面可视化搭建框架的web编辑器 -- https://page-pipepline.github.io/pipeline-editor/dist/#/ https://github.com/page-pipepline/pipeline-editor

image.png image.png


json-editor / json-editor:基于JSON模式的编辑器 https://github.com/json-editor/json-editor

JSON编辑器采用JSON模式,并使用它来生成HTML表单。它完全支持JSON Schema版本3和4,并且可以与几个流行的CSS框架(引导程序,基础和jQueryUI)集成。 image.png


页面可视化搭建工具前生今世 · Issue #15 · CntChen/cntchen.github.io CntChen/cntchen.github.io#15

页面可视化搭建, 是一个历久弥新的话题. 更广义上讲, 页面是 GUI 的一部分, GUI 的拖拉生成在各种开发工具上很常见, 如 Android Studio, Xcode, Visual Studio 等. 前端页面早在十几年前就能用 Dreamweaver, Frontpage 等工具可视化搭建出来.

前端服务化的终极方式, 是直接提供一个开发的 IDE, 将动态逻辑的书写也在 IDE 中完成. 如 美团外卖前端可视化界面组装平台 —— 乐高前端服务化——页面搭建工具的死与生.

中后台系统开发

在公司内部, 需要做许多的中后台支持系统, 这些系统的管理端一般用 web 页面承载. 那么问题来了, 中后台系统的前端工程, 怎么保障可用性、可维护性和页面呈现一致性? 这些系统与后台逻辑强关联, 一般由后台开发人员开发; 后台开发人员写代码逻辑是没有问题的, 但是其前端开发能力相对较弱. 所以需要增强他们开发前端页面的能力, 前端开发能力由前端服务化提供.

前端服务化的第一种方式是提供一套组件库, 如 饿了么的 Element. 组件库一般由前端开发人员封装成模板工程, 模板工程提供公共样式和函数库, 并对编写的代码做校验和约束, 一定程度上降低了前端开发难度, 统一后台人员代码风格. 此时后台开发人员的开发方式为: 在代码中用组件拼凑页面, 然后写代码逻辑.

前端服务化的第二种方式, 是提供页面可视化组装系统, 这个系统输出组装后的前端工程源码. 这样的系统比提供组件库和模板工程的方式走得更远: 通过可视化生成模板工程, 后台开发人员不需要在代码中拼凑前端页面, 不需要关注前端组件, 只需要编写代码逻辑. 这种方式可以参考阿里的 ice.

// image.png

image.png

//

页面可视化搭建工具举例

列举一些页面可视化搭工具, 并附带少量点评.

移动建站平台

  • 支持页面 Data 编辑, 面向运营、产品人员, 编辑自由度为无嵌套的组件.
  • 目前制作运营、活动页面功能上最好的工具.
  • 提供页面搭建的模板, 并支持自定义模板.
  • 配置表单基于 Schema 生成, 配置表单操作功能完善.

飞冰 - 让前端开发简单而友好

  • 支持 Component Tree 编辑, 面向中后台开发人员, 编辑自由度为无嵌套的组件.
  • 使用"物料-区块", 非前端开发人员可以快速搭建出可用、符合规范的页面.
  • 页面以源码方式输出.
  • 前端服务化的一种方式.

创意,绝不雷同

  • 支持 HTML Tree 编辑, 面向前端小白, 编辑自由度为 HTML 元素.
  • 做 H5 的好工具, 功能上很强大, 对动画的编辑功能做到细致.
  • 支持 Dynamic Logic 编辑, 面向中后台开发人员, 编辑自由度为可嵌套的组件.
  • 前端服务化的一种方式.
  • 在美团内部支持了许多业务页面, 没有公网服务, 了解该系统只能通过其介绍文章.

Drag vue dynamic components to build your page,generate vue code.

开源项目, 模仿美团点评的乐高.

  • 完整的可视化页面搭建框架, 面向中后台开发人员.
  • 页面布局结果看起来比较乱, 自定义组件写法比较诡异; 没有融合业务逻辑, 不支持在框架中写页面的代码逻辑.

Design websites in your browser

开源项目.

  • 支持 Component Tree 编辑, 面向中后台开发人员, 编辑自由度为可嵌套的组件.
  • 页面的拖拉生成, 实现得很完整.
  • 用于页面设计, 所以偏向页面元素的样式控制.
  • 技术文章对可视化搭建工具数据流有深刻理解: 可视化在线编辑器架构设计.

基于UI组件的Vue可视化布局、生成.vue代码的工具。

开源项目.

  • 支持 Component Tree 编辑, 面向中后台开发人员, 编辑自由度为可嵌套的组件.
  • 工具的使用体验效果不错.

根据接口生成页面,减少重复性工作

  • 开源项目, 用起来感觉不错.
  • 系统中有好几个概念, 开始比较难上手.

其他

业界实践

列举一些业界在页面可视化搭工具上的实践, 并附带少量点评.

  • 支持 Dynamic Logic 的页面可视化搭建 IDE.
  • 讲解了页面可视化搭建框架支持 Dynamic Logic 的可行性和设计架构.
  • 作者在前端框架和 IDE 方面写了好几篇文章, 很深刻.

2015年的文章! 完全说到点上.

  • 简单易用的、可视化的可编辑页面.
  • 通用的、简便地组件接入机制.
  • 组件: 开发过程和系统无关, 逻辑和系统无关.
  • 把系统架构将得很清楚, 有借鉴意义.
  • 对页面组成做了分析, 阐述了可视化配置的原理.

百度的前端服务化实践, 都在这一篇.

  • 可视化在线编辑器属于前端开发引擎, 前端进入了前端工业时代.
  • 深入讨论了组件数据流.
  • PPT 将原理和架构讲得很清楚.
  • 使用流程图很清晰.
  • 项目开源了 -- block, 试用起来功能比较简陋.

基于组件的页面生成系统-魔方, 采用 npm 管理组件.

内部 ET 平台, 包含活动管理的其他功能.

总结

  • 页面由 HTML TreeDataDynamic Login 组成.
  • 页面可视化搭建工具用于提升各类人员的页面搭建效率.
  • 页面可视化搭建其实是前端服务化的方式.
  • 页面可视化搭建工具需要平衡自由度和效率.
  • 组件和模板是页面可视化搭建框架的核心.

全文结束, 本文对页面可视化搭建思考和讨论可能还不够完整, 欢迎讨论和补充.

后记: 终于写完了, 历时估计一个月! 写这篇文章的初衷是给我造的页面可视化搭建框架 -- pipeline 写背景, 但思考的点比较多, 所以就独立写了一篇文章. Pipeline 基本对标阿里的云凤蝶, 已经开源, 相关文章还在撰写中. 赶紧点击 Demo 体验吧.

image.png

感谢po主的文章. 顺带补充一下, 百度的CMS构建工具amis已开源, 有兴趣的可以围观一下 => https://github.com/baidu/amis

感谢这么全的分析,另外有一个运满满的也不错,分享一下,https://juejin.im/post/5cf0c02df265da1b80202b22 设计了脚本和组件扩展,并支持属性面板扩展

https://github.com/Ricbet/panel-magic 这是我照着墨刀的模子自己实现的,我认为编辑就只做编辑的事,至于后面要如何把编辑后的页面放在公网还是小程序等其他平台是可以交托出去的,本身就不应该去负责生成 vue 或 react 或 ng 等代码,它只负责 数据 -> 编辑 -> 新数据 就得了


AMIS:这是让前端失业的一个框架_程序员的成长之路-CSDN博客 https://blog.csdn.net/qq_42914528/article/details/97998472

完全基于 JSON 的 mis 工具,,不需要前端就可以自己搭建信息管理系统,比如监控啊管理啊之类的,这是能让前端失业的一个框架。 image.png

这个截图所有的元素, 都由json控制, 不需要任何前端代码,十足的后端福利。


baidu / amis:前端低代码框架 https://github.com/baidu/amis

前端低代码框架 https://baidu.github.io/amis/


高扩展的在线网页制作平台-码良正式开源 - 掘金 https://juejin.im/post/5cf0c02df265da1b80202b22


墨刀 - 简洁好用的原型设计与协作工具 https://modao.cc/

image.png


jaweii/Vue-Layout: 基于UI组件的Vue可视化布局工具 https://github.com/jaweii/Vue-Layout

image.png


jbaysolutions/vue-grid-layout: A draggable and resizable grid layout, for Vue.js. https://github.com/jbaysolutions/vue-grid-layout

vue-grid-layout是Vue.js的网格布局系统,例如Gridster。受React-Grid-Layout的极大启发 image.png


Gen http://gen.sdemo.cn/#/about

通过接口生成一切 我们程序员每天都跟代码打交道,前端程序员coding, 后端程序员coding。 然而我们经常做重复性工作或者复制粘贴,或者前后端因为接口变动扯皮。 为了解决这些问题我打算通过接口生成代码

为什么通过接口生成一切 任何语言都是在跟数据打交道 在web前端html用来展现数据,javascript处理数据 go、java、php、nodejs等后端语言都在处理适合前端和数据库的数据 mysql、oracle、mongodb、postsql等数据库用来存储数据

我理想的目标 根据接口一键生成一套前可运行后端接口方案 不改变我的开发方式 低门槛轻松上手 可视化配置 如果是web页面所见即所得 有丰富的项目脚手架方便二次开发 生成接口文档

// 如何实现这些目标 我们把每个文件都看做一个大模版,而这个大模版又有多个小模版组成,小模版我们把它叫做组件,组件又有组件属性,这样就组成了一个component tree,而接口本省又是个data tree, 两者渲染成最终我们想要的文件,这里模版引擎我们用了unjuncks

接口使用hjson我通过注释表明这个字段对应的组件类型mock数据。 hjson和jsonSchema相互转换,这样我就可以使用jsonSchema进行可视化配置 通过jsonSchema配置字段对应的组件和定制组件扩展信息 配置完即可动态渲染实时得到渲染结果, 如果是web页面我们可以iframe在区块内实时预览 定制可服用模版和组件, 这样我们就可以定制各种页面 通过把组件生成可动态配置的组件文件,然后把配置组件属性通过postMessage传递给iframe页进行实时修改 把我们最佳项目实践直接做为脚手架,通用的文件设置为模版,或分隔多个小组件

image.png


阿里巴巴/ ice:🚀简单友好的前端开发系统(飞冰,简单而友好的前端研发体系)https://ice.work/ https://github.com/alibaba/ice/

image.png


飞冰 - 让前端开发简单而友好 https://ice.work/docs/guide/about


可视化搭建前端工程 - 阿里飞冰了解一下 - 知乎 https://zhuanlan.zhihu.com/p/41416320

每次新做一个项目,无论大小都要干这些事: 框架选型 初始化脚手架(比如使用 create-react-app 或者 vue-cli) 也可能你选择了开源脚手架,克隆仓库 四处找轮子 安装各种依赖 新建页面,写逻辑 设计菜单 设计路由 新建页面的时候去复制旧的页面修改 把新的页面注册路由,注册菜单 做完了这个页面做下个,新建文件,复制代码,注册路由... 烦不烦?要优雅!

今天介绍阿里的开源产品:飞冰


阿里飞冰-可视化搭建前端工程 | 大专栏 https://www.dazhuanlan.com/2019/11/04/5dbf1613ae959/

丰富模板一键创建,提供多种垂直领域模板,快速创建项目,支持风格切换,满足个性化需求;轻松操作页面管理,海量物料自由搭配,页面组合可视化操作更得心应手;开发调试一体化,集成运行环境零配置运行,开箱即用。

什么是飞冰 通常我们的项目开流程:框架选型初始化脚手架(比如使用 create-react-app 或者 vue-cli)也可能你选择了开源脚手架,克隆仓库四处找轮子安装各种依赖新建页面,写逻辑,设计菜单,设计路由,新建页面的时候去复制旧的页面修改发等等。这些重复的工作现在交给一款叫飞冰的工具来做。飞冰是一套基于 React 的中后台应用解决方案,在阿里巴巴内部,已经有 270 多个来自几乎所有 BU 的项目在使用。

image.png

物料 在飞冰中,组件、区块、布局、模板等统称为物料,由飞冰团队维护,基于这些物料结合 Iceworks 可以快速搭建中后台应用。在此之外,如果已有的物料不能满足你的业务需求,Iceworks 提供了一套完整的开发规范和开发者工具,你可以参与共建飞冰物料,也可以自建私有的物料体系。 下面这张是飞冰的物料源截图,物料源还在不断增长,目前已支持 react vue Angular三大主流框架的物料源。 image.png

image.png image.png image.png image.png

// 结束语 演示一遍下来后,我生成了两个页面,没有写一行代码,剩下的操作就是修修改改,把多个页面都需要的组件提取一下,做做修改工作。

D2Admin 团队也会在以后的时间里尽力和 ICE 团队合作开发 vue 公用区块,加速 ICE 的 vue 生态建设,也希望众多的 vuer 都可以参与进来,平台有了,社区繁荣起来才是对大家都有利的事情。

D2Admin ICE 将会保持和 D2Admin Start Kit 一致更新,如果你看到完整版的 D2Admin 实在喜欢,从完整版做减法也未尝不可 :)


d2-projects / d2-admin:优雅的仪表板 https://github.com/d2-projects/d2-admin

image.png

D2Admin是一个完全开源的免费企业后端产品前端集成解决方案,它使用最新的前端技术堆栈,本地第一屏的javascript文件加载小于60kb,已经准备了大多数项目准备工作,并且具有许多示例代码可帮助管理系统敏捷开发。


wjkang/d2-admin-pm: 基于 d2-admin的RBAC权限管理解决方案 https://github.com/wjkang/d2-admin-pm

image.png

image.png

image.png

image.png


前端服务化——页面搭建工具的死与生 - 侯振宇 - 博客园 https://www.cnblogs.com/sskyy/p/6496287.html

image.png image.png image.png image.png image.png image.png

image.png image.png image.png image.png

答读者问 为什么社区从来没有流行过这样的东西? 这个问题其实比较模糊,这和问”怎样做产品能成功”性质一样,我非常建议读者先读读纯银的文章,不管是技术还是产品都有收益。但是我仍然尝试回答一下。首先要做一套这样的开发环境设计到的技术栈太多,组件库、渲染引擎、IDE、分析引擎、后端服务每一个方面都要耗费相当大的人力。就算社区有这样的东西做出来了,也很少有团队有同等人力能拿去用,任何严肃地投入生产的项目都不可能拿一个自己掌握不住的工具去用的。其次,这样的东西就算有公司做出来并且在内部很流行,也很难为外界所知,因为这种集成开发环境首先需要大量内部系统的积累,在我们这里就是组件库、后端服务等。另外公司战略上的支持也是必不可少的。实际上据我了解,不管流不流行,每个大公司都有至少一套这样的系统。

框架部分为什么不用 redux ,现在的看起来像砍掉了 action 的 redux? redux 本质上是个状态机,action 的设计能够约束变化来源,屏蔽来源细节,同时写代码时能把所有变化和数据本身写在一起,解决“数据在哪里,被怎么了”的问题。然而我们更倾向于像用户暴露更少的概念,让他用直觉来使用,由开发环境解决可维护性等问题。这是其实是产品策略,和技术争论无关。

// 我也在尝试做可视化编辑功能,基本思路是用数据描述组件,数据驱动页面,页面上的操作影响的是组件 树型数据结构的数据变化。最终根据树形结构树自动生成 react.jsx 文件。但是碰到了问题。组件的Props 传值可以解决 UI 数据问题,但是用户的点击事件,交互逻辑没法用可视化的方式全部枚举,只能把 交互的钩子函数方法体空置,让使用者手写代码实现交互逻辑。但是不能用可视化配置的方式解决业务逻辑,可视化编辑工具就好像没多大意义了。不知道大佬这么解决事件钩子下的业务逻辑代码这一块的?

可视化搭建页面http://gen.sdemo.cn 根据接口生成页面,欢迎交流学习


[招聘]蚂蚁金服(支付宝)招聘前端/全栈开发工程师 - V2EX https://www.v2ex.com/t/490093

一站式研发体系:金蝉系统开发。 金蝉介绍 金蝉是一个代替传统前端开发模式的一站式研发系统。愿景是让非前端人员可以根据设计图快速搭建生成网站。包括但不限于原型制作、业务研发、接口联调、测试、部署与统计埋点等工作。 目前已经接入数十个项目,完全没有任何前端参与开发,只需要提供少量文档和入门教学,非前端人员就可以完成项目需求,从而解放了前端人力。


CloudBoost / cloudboost:实时JavaScript后端。 https://github.com/CloudBoost/cloudboost

CloudBoost是您应用程序的完整云平台。将CloudBoost视为Parse + Firebase + Algolia + Iron.io都合并为一个:

数据存储/ JSON存储/ BLOB存储 100%的数据所有权 即时的 搜索 更多-ACL,用户身份验证等。


Appwrite | 为自己写代码 https://c4ys.com/archives/tag/appwrite

Appwrite数据库 image.png


开源CRM/ERP比较 | 为自己写代码 https://c4ys.com/archives/1981

image.png


基于微信的一些开源工具 | 为自己写代码 https://c4ys.com/archives/1838


appwrite / appwrite:面向前端和移动开发人员的端到端后端服务器。 🚀 https://github.com/appwrite/appwrite

Appwrite是面向Web和移动开发人员的简单的自托管后端服务器,具有闪亮的仪表板和非常易于使用的REST API。

Appwrite API服务旨在通过隐藏常见且重复的软件开发任务的复杂性,使开发人员的生活更加轻松。

使用Appwrite,您可以使用多种登录方法,用于存储和查询用户和团队数据的数据库,存储和文件管理,图像处理和裁剪,计划cron任务以及许多其他功能来轻松管理用户身份验证,以帮助您获得更多结果更快的时间,更少的代码。 image.png


每周开源点评:Linux Plumbers、Appwrite | Linux 中国_技术无边-CSDN博客 https://blog.csdn.net/f8qg7f9yd02pe/article/details/101043060

了解每周的开源社区和行业趋势。 -- Tim Hildred


nicolargo / glances:一览您的系统。 GNU / Linux,BSD,Mac OS和Windows操作系统的top / htop替代方案。 https://github.com/nicolargo/glances

Glances是一个跨平台的监视工具,旨在通过curses或基于Web的界面提供大量监视信息。该信息根据用户界面的大小动态调整。 image.png


aisuhua / restful-api-design-references:RESTful API设计参考文献列表,可帮助您彻底彻底的了解REST风格的接口设计。 https://github.com/aisuhua/restful-api-design-references

RESTful API设计参考文献列表,可帮助您彻底彻底的了解REST风格的接口设计。


vadimdemedes / gifi:运行npm install时观看GIF https://github.com/vadimdemedes/gifi

可以在npm install运行时在您的终端中观看GIF 。 image.png


advanced-rest-client / arc-electron:高级REST客户端-桌面应用程序 https://github.com/advanced-rest-client/arc-electron/

高级REST客户端-桌面应用程序


zalando/connexion: Swagger/OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support https://github.com/zalando/connexion

 paths:
  /foo:
    get:
      operationId: api.foo_get
      parameters:
        - name: message
          description: Some message.
          in: query
          type: string
          required: true 


nuxt.js 简述 - 简书 https://www.jianshu.com/p/b0626ba924c9

为什么使用nuxt.js? vue单页面应用渲染是从服务器获取所需js,在客户端将其解析生成html挂载于 id为app的DOM元素上,这样会存在两大问题。

由于资源请求量大,造成网站首屏加载缓慢,不利于用户体验。 由于页面内容通过js插入,对于内容性网站来说,搜索引擎无法抓取网站内容,不利于SEO。 Nuxt.js 是一个基于Vue.js的通用应用框架,预设了利用Vue.js开发服务端渲染的应用所需要的各种配置。可以将html在服务端渲染,合成完整的html文件再输出到浏览器。 除此之外,nuxt与vue还有一些其他方面的区别。


liyasthomas/postwoman: 👽 API request builder - A free, fast, and beautiful alternative to Postman https://postwoman.io 🔥 https://github.com/liyasthomas/postwoman

image.png

image.png


alash3al / sqler:使用直接SQL查询编写API,而不会麻烦,让我们重新考虑一下SQL https://github.com/alash3al/sqler

轻松使用直接SQL查询编写API,让我们重新思考一下SQL

特征

  • 独立无依赖性。
  • 与大多数SQL数据库的作品在那里,包括(SQL ServerMYSQLSQLITEPostgreSQLCockroachdb
  • 内置RESTful服务器
  • 内置RESP Redis Protocol,您可以SQLer使用任何redis客户端进行连接
  • 内置Javascript解释器,轻松转换结果
  • 内置验证器
  • 自动使用准备好的语句
  • 使用(HCL)配置语言
  • 您可以根据unix glob样式模式加载多个配置文件,而不仅仅是一个
  • 每个SQL查询可以命名为Macro
  • 使用Javascript自定义表达式。
  • 每个宏都有自己的Contextquery paramsbody params),为.Inputmap[string]interface{},而.Utils这是辅助功能列表,目前它仅包含SQLEscape
  • 您可以定义authorizers,an authorizer只是一个简单的Webhook,sqler可用来验证是否应该完成请求。
  • 当执行特定命令时触发一个webhook或另一个。macro``macro
  • 使用简单cron语法安排特定的宏以在特定的时间运行。

REST与RESP RESTful服务器可用于直接与进行交互,即mobile, browser, ... etc,在此模式下,该服务器SQLer受的保护authorizers,从而使您能够检查针对另一个第三方API的授权。 您向配置文件添加的每个宏都可以通过向其发出http请求来访问/<macro-name>,每个查询参数和json正文都将传递给该宏.Input。

RESP服务器只是一个基本的REDIS兼容服务器,您可以使用REDIS那里的任何客户端连接到它,甚至redis-cli可以打开redis-cli -p 3678 list以列出所有可用的宏(commands),您可以将任何宏作为redis命令执行,并将参数作为json编码的数据传递,即redis-cli -p 3678 adduser "{"user_name": "u6", "user_email": "[email protected]", "user_password":"pass@123"}"。

数据转换 在某些情况下,我们需要将结果数据转换为对我们的API使用者更友好的内容,因此我添加了javascript解释器,SQLer以便我们可以转换数据,每个js代码都有一个名为的全局变量$result,它保存本exec节的结果,您应该编写如下代码:

聚合器 SQLer 帮助您将多个宏合并为一个,以最大程度地减少API调用次数,请参见下面的示例


eova: 最简单的快速开发平台,简单才是高科技,因为简单所以更快,降低70%开发成本 https://gitee.com/eova/eova

image.png


n8n.io-工作流程自动化 https://n8n.io/

image.png

image.png image.png


n8n-io / n8n:基于免费和开放节点的工作流自动化工具。 轻松实现跨不同服务的任务自动化。 https://github.com/n8n-io/n8n

免费和开放的基于节点的工作流自动化工具。轻松实现跨不同服务的任务自动化。 https://n8n.io image.png


mjml强大&&灵活的邮件模版引擎 - 荣锋亮 - 博客园 https://www.cnblogs.com/rongfengliang/p/12115361.html

mjml 是一个邮件模版引擎,我们可以用来制作发送响应式的邮件内容,同时官方文档丰富,支持的格式多样。


wal2json pg扩展centos7构建 - 荣锋亮 - 博客园 https://www.cnblogs.com/rongfengliang/p/12058819.html

使用wal2json可以将pg 变动输出为json 格式,是一个pg 扩展,支持pg9.4+ 目前看到netflix 的dblog 对于pg 的支持就是基于此插件


SQLer:无需编程语言即可将SQL查询转换为RESTful API的工具_博客123-CSDN博客 https://blog.csdn.net/cpongo3/article/details/89026310

SQLer是一个微型http服务器,用Go语言编写,将旧的CGI概念应用于SQL查询。SQLer允许编写端点并分配一个SQL查询,以便任何人点击它时能执行查询。此外SQLer还允许自定义验证规则,可验证请求正文或查询参数。SQLer使用nginx样式配置语言(HCL)


Redis随笔(六)RESP的协议规范 - C小海 - 博客园 https://www.cnblogs.com/c-xiaohai/p/8376891.html

redis协议规范(Redis Protocol specification)。

模拟Redis服务和客户端通讯,实现RESP协议通信


动态SQL - 简书 https://www.jianshu.com/p/0eff22b712f9

传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率。


SQL 代码 api_百度搜索 https://www.baidu.com/s?ie=UTF-8&wd=SQL%20%E4%BB%A3%E7%A0%81%20api


Java ScriptEngine 经验分享 - 关于jpython - 简书 https://www.jianshu.com/p/813232ec0eb6

即然是和Java的ScriptEngine搞到一块儿,那当然是要互通的! 互通,就要能把java类型注入到jpython引擎里,或被获取。 目前有两种方式注入


一个新的微型ORM开源框架 - 简书 https://www.jianshu.com/p/0311afb5cd60

【2.3.1】查询之输出 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。


Java 中 Snack3的使用 - 简书 https://www.jianshu.com/p/23ff40ef63fa

JSON 是一种文本形式的数据交换格式,从Ajax的时候开始流行,它比XML更轻量、比二进制容易阅读和编写;解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson、Snack3等。

Snack3 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型

强调文档树的操控和构建能力 做为中间媒体,方便不同格式互转 高性能Json path查询(兼容性和性能很赞) 支持序列化、反序列化


Oracle认真了,通用虚拟机GraalVM进展神速! https://www.sohu.com/a/234616077_100159565

image.png


Java ScriptEngine 经验分享 - 2.graal-js的适配 - 简书 https://www.jianshu.com/p/998b4469326e

在网上找GraalVM 和 Graal-JS的资料,基本上只是介绍特性的。。。很少有应用实战经验分享。

去年是想把自己的一个平台(在上面用js脚本动态开发接口,并对外提供服务)。之前是用jdk8自带的nashorn。

jdk11之后,移除了nashorn。。所以,想把它切换为graal-js,同时还可以支持es6。。。在与java的互通性方面,一下没有适配好。


如何看待 Java11 即将弃用 Nashorn 引擎? - 知乎 https://www.zhihu.com/question/282928698

nashorn其实做得一般般,js这个社区已经接近是v8一家撑着了,换言之,如果不能兼容node,光支持js没有太大意义,所以为了全面兼容node.js和ecmascript,所以将来会用graal.js替换之,从这一个角度上看,graal前途光明,vert.x已经在积极做es4+(是es 4+,不是仅仅es4)也就是ecmascript的语言支持了

将来vert.x是真node.js的超集

当爹的做做样子而已,js和java都是oracle的儿子,不同的是,oracle几乎在js上没有话语权,也就版权在手里,也挣不到钱,而java可以给oracle带来源源不断利润,话语权,也还行,谷歌满满变成了曾经的微软,越来越封闭的安卓,分解侵权java,chrome事实标准,逼宫w3c,员工为了kpi,现在变成demo大厂了


使用fdb-sql-parser替换SQL语句中的表名 - Java开发社区 | CTOLib码库 https://www.ctolib.com/topics-110472.html

因为项目中要做跨数据源的数据分析功能,所以使用Presto这个开源框架。但是使用Presto的时候需要指定当前表所在的数据库类型和数据库名,所以需要对SQL语句中的表名进行捕获和替换

一.探索过程

首先使用的是HiveParse这个工具,修改了语法树中的表名,但是好像没有提供由语法树得到SQL语句的方法。之后又使用了Druid的SQL解析器,但是这个框架结构很复杂,看了一天也没弄清处解析的流程。后来看到这篇博客JAVA - Sql解析工具fdb-sql-parser简单使用并得到启发,可以替换查询语句中的表名。


JAVA - Sql解析工具fdb-sql-parser简单使用_偶尔记一下 - mybatis.io-CSDN博客 https://blog.csdn.net/isea533/article/details/38361911

由于想要解决Mybatis分页插件中count查询效率问题,因为order by很影响效率,所以需要一种方式处理sql,将order by 语句去掉。  

试了好几个sql解析工具,最后选择了fdb-sql-parser。


使用intelliji调试 Nashorn java js脚本引擎执行的js文件_唯一的专栏-CSDN博客 https://blog.csdn.net/imlsz/article/details/79551983

执行复杂逻辑的代码,debug是避免不了的。在java中引入js脚本用来做业务逻辑的动态定制修改,我们用的是jdk1.8的nashorn引擎。


KJServlet: KJServlet 是一个基于 Nashorn 编写的 Web 服务框架,这意味着你可以使用 Javascript 来编写服务端的代码 https://gitee.com/mirrors/KJServlet

KJServlet 是一个基于 Nashorn 编写的 Web 服务框架,这意味着你可以使用 Javascript 来编写服务端的代码

Nashorn 生于Java 8,死于Java 11,由于之后 Nashorn 会被从 JDK 中完全移除,本工程不再进行维护。

在你的 class path 目录下(大部分情况下,这个目录是 ./WEB-INF/classes)增加一个 javascript 文件 demo.js。 在demo.js文件上增加下述方法:

function sayHello(req){
    var name=req.param["name"];
    return "<!DOCTYPE html><html><head><title>Say Hello</title></head><body>Hello, " + name + "</body></html>";
}

启动服务器,并且用浏览器方位http://127.0.0.1:8080/kjservlet-demo/demo/sayHello?name=World,“Hello world” 就会显示在浏览器上了。


APIAuto: 机器学习测试、自动生成代码、自动静态检查、自动生成文档与注释等,做最先进的接口管理工具 https://gitee.com/TommyLemon/APIAuto

机器学习测试、自动生成代码、自动静态检查、自动生成文档与注释等,做最先进的接口管理工具。 支持 HTTP POST 提交 JSON 参数的 API。针对 APIJSON 做了静态检查、生成代码、格式化等大量优化。

特点功能 自动生成接口文档,清晰可读永远最新 自动校验与格式化,支持高亮和收展 自动生成各种语言代码,一键下载 自动管理与测试接口用例,一键共享 自动给请求JSON加注释,一键切换 自动保存历史请求记录,一键恢复 image.png

APIJSONParser 第三方 APIJSON 解析器,将 JSON 动态解析成 SQL

ApiJsonByJFinal 整合 APIJSON 和 JFinal 的 Demo


Zerounary/APIJSONParser: Complate JSON to SQL,APIJSON编译器,将JSON动态编译成SQL https://github.com/Zerounary/APIJSONParser

参考项目APIJSON设计的一款编译SQL编译器框架,现已实现APIJSON格式的JSON到SQL的转换

简介 在APIJSON程序中,主要分三步:权限判断,解析生成SQL,包装成制定格式的响应

APIJSONParser是其中解析生成SQL过程的一个工具类,提供将制定格式的JSON对象转化生成一条标准的SQL,如果你想自定义格式,底层的框架也完全支持你进行自由扩展。

假设一个JSON是这样的:

{
    "Product":{
        "id":"1"
    }
}

将上述的JSON解析到一个叫obj的JSONObject中,经过以下代码:

APIJSONProvider apijsonProvider = new APIJSONProvider(obj); //一个APIJSON解析器拿到一个json对象
apijsonProvider.setStatementType(StatementType.SELECT); //当前为查询模式,还支持新增,修改,删除
SQLExplorer builder = new SQLExplorer(apijsonProvider); //装载APIJSON解析器
System.out.println(builder.getSQL());//拿到SQL

之后会打印这样一句SQL

SELECT Product.*
FROM Product Product
WHERE (Product.id = '1')


apijson-doc https://vincentcheng.github.io/apijson-doc/

提供通用接口,大部分API不用再写。自动生成文档,不用再编写和维护。自动校验权限、自动管理版本、自动防SQL注入。开放API无需划分版本,始终保持兼容。支持增删改查、模糊搜索、正则匹配、远程函数等。


自动生成Restful API文档?我有神器!_微服务技术与实践专栏-CSDN博客 https://blog.csdn.net/looook/article/details/99290080

作为一名开发者,可能经常遇到这种问题,项目进度太紧,当你在编写一个Rest 服务时只能将时间都放在编码上,文档基本靠口口相传。

作为一个团队管理者,API文档优先非常重要,比如你需要去审批API的设计合理性,随时查看现存的接口文档,并且参与设计新的API。

多个团队间有大量的微服务,每个微服务对外暴露rest API 都需要文档,没有一个统一的管理系统查看这些服务的API描述文档。这让沟通效率变得低下。 image.png


Intellij IDE 插件--DocumentAssistant 自动RESTful API 文档生成_搞事情的博客-CSDN博客 https://blog.csdn.net/tony308001970/article/details/88352689

今天先介绍一下我的新开发的一个插件,之前看了很多自动生成文档的各个方案。但是想0侵入性是不可能的,但是今天我希望通过intellij IDE插件的方式,做到了真正的0侵入生成 RESTful api文档自动生成。我不想写文档这个想法越发强烈,所以导致我不得不开始着手开始编写一个插件完成其恶心的工作。通过3天努力我终于实现了第一个DocumentAssistant版本。


程序员绘图工具-Plantuml - 简书 https://www.jianshu.com/p/30f6a9c06083


Java面试高频题精选300道,一份通往阿里的必备指南(pdf文档)_ITPUB博客 http://blog.itpub.net/31555445/viewspace-2647459/

image.png

以上的2份Java体系文档免费获取方式:转发关注后, 加入Java进阶学习群:908676731, 即可领取免费获取方式!

重要的事说三遍,转发,转发,转发后关注! image.png


【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) - 宋庆离的个人空间 - OSCHINA https://my.oschina.net/u/2663968/blog/3135425

近期这里搜集了93套阿里、腾讯、美团、网易等公司19年的面试题,把技术点梳理成一份大而全的“Java高级工程师”面试xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节,由于篇幅有限,这里以图片的形式给大家展示一部分。 image.png

这次面试资料+专题视频,是由开课吧赞助提供,非常感谢开课吧的支持。

现在开课吧联合了廖雪峰和前58技术委员会主席,针对1~5年和5年以上工作经验的Java程序员,分别打造了《JavaEE企业级分布式高级架构师》和《百万年薪架构师》2 门课程,帮助Java程序员快速提高自身开发能力,提升职场竞争力。想要了解跟多课程事宜的朋友,可以添加微信咨询。


如何消除编写重复的 CRUD 的工作? - V2EX https://www.v2ex.com/t/494581

APIJSON 目前 后端有 Java, C#, Node.ts 实现, 前端有 Android-Java, iOS-Swift, Web-JavaScript, Web-Vue.js 实现。 后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构! APIJSON 就做到了「大部分」 的 CRUD 接口自动化哦

用工具根据表结构生成基本的 crud 啊,然后再按需求改改

还是挺怀念 vb6 时代的。做 CRUD 报表直接拖控件。选择数据源绑定 sql 即可。

https://github.com/gejun123456/MyBatisCodeHelper-Pro


gejun123456 / MyBatisCodeHelper-Pro https://github.com/gejun123456/MyBatisCodeHelper-Pro

Intellij下Mybatis支持插件

qq群:542735979(插件bug修复最新版本及问题讨论)


有没有什么做 CRUD 出活快的 web 框架或者代码生成工具 - V2EX https://www.v2ex.com/t/451203

肯定有,我之前实习的公司,用的 ejb+glassfish+jsf+primefaces ;老板用 NetBeans 工具:在 NetBeans 里面建数据库表,表建好了就直接把代码 生成好了,增删查改,排序,分页,前台页面等所有代码全部就自动生成为一个完整的项目,配置这些都是自动生成好的,直接就使用,我们当时做一个模块,老板就直接五分钟不到就做好了,我们直接拿来就开始用了;这个自动化的工具(好像老板说的是一个框架)老板说是他们自己搞出来的,然后就见过那一次,以后都没有见过了

一个已经搭建好基础功能的 RoR 能够在三分钟之内完成 CRUD 以及所有的验证功能

我也想求个能快速做用户授权、验证的框架,crud 随便一个 orm 基本都不复杂,但简单能实现一个基于用户角色+任意验证机制的好像真的没见过。我是写 java 为主的,不管是 shiro 还是 sprng security 要不就是要自己写要不就是太复杂的……


入门(Getting Started): 用 Gii 生成代码(Generating Code with Gii) - Yii 2.0 权威指南 - 文档 - Yii Framework 中文网 https://www.yiichina.com/doc/guide/2.0/start-gii

生成 CRUD 代码 CRUD 代表增,查,改,删操作,这是绝大多数 Web 站点常用的数据处理方式。选择 Gii 中的 “CRUD Generator” (点击 Gii 首页的链接)去创建 CRUD 功能。本例 “country” 中需要这样填写表单:

image.png

java 的话,很多代码生成开源项目可以用,只是一些因为封装得太好,所以上手需要时间。

这个 Enhancer 云开发平台真的有发言权: https://enhancer.io 如果不挑剔的话,暂时没发现比楼上 Enhancer 更快,更强大的了。 @fujie 业务逻辑写在 SQL 里,连 UI 组件都绑定死了,只能呵呵了 什么叫做业务逻辑写 SQL 里? SQL 本来不就是业务逻辑么UI 组件绑定与否,看你是要快,还是要个性化吧。你可以看看他们给的例子,如果给你做需要多久,比如那个会议室预订 Enhancer: https://enhancer.io 真的不错。不用考虑前端与后台,要考虑的只是 SQL,其实有几条 SQL 呢,在 phpmyadmin 里弄好复制出来就行了。 欢迎尝试 Enhancer,只要打开浏览器,写写 SQL 就能一站完成全部开发: https://enhancer.io

ruby 还是算了吧,国内生态太差了,又不可能拿来写大项目,重构要死人的

如果只是一个 crud 网站的话,Rails 周边的生态不要太好,几乎什么需求都有 gem 帮你搞定了 私以为以大多数项目的规模,Rails 完全可以胜任,GitHub 不还用着 Rails。动态语言写好测试的话,正常情况重构也不是那么可怕的事情。 如果项目真的发展到 Rails 难以支持的地步时,自然有钱 /人来重构 /重写的 (逃

java 的话 jeecg play framework 1.x 版本 ,java jfinal,还可以,有代码生成工具

我用的 strapi,可以了解下。CRUD 和用户权限等 api 基本通过界面的点击就能完成。

我正在做,基于 springboot 用 kotlin 写的,后端基本已经成型,现在在搞前端的。 功能类似与 abp 里面的功能,但是没有多租户

以前外包团伙内部维护了一个ˊ用 Thor 编写的 Rails template 开局配置一个 yaml 文件宣告表结构、routes rails new 后数据库、常用 gems、restful api 会一并整好 只剩下等设计完成前台设计后嵌回 erb 与服务器工作,做普通带后台的形象网站非常快

java 也可以的,spring boot+模版引擎生成 crud 代码,前后端代码都能生成

Couchdb 天生支持 crud https://postgrest.com/en/v4.4/

python 的 eve 了解下。

nodejs 的 Loopback 完全可以满足楼主的要求

meteor

我来安利个开发工具,http://www.listcode.cn 增删改查 代码生成器, 只需要提供数据库模型,前后端代码一键生成,支持 laravel,thinkphp,java,python flask tornado,nodejs,vue 等框架, 完成度高,翻页,多条件查询,外键编辑,输入检查都有了


功能— Eve 1.0文档 https://docs.python-eve.org/en/stable/features.html

日期字段也很容易查询: http://eve-demo.herokuapp.com/people`?where={"born": {"$gte":"Wed, 25 Feb 1987 17:00:00 GMT"}} `


基于python的REST框架eve测试与mongodb的数据操作-峰云,就她了。-51CTO博客 https://blog.51cto.com/rfyiamcool/1325511

排序的方式 $ curl -i http://eve-demo.herokuapp.com/people?sort=[("lastname", -1)]

总结: eve是个强大又可以扩展res框架,也可以把他用为mongodb的http接口 ~


ListCode代码生成云服务 https://www.listcode.cn/

更完善的功能 1. 前后端代码、js、UI一站生成 2. 翻页,多条件联合查询 3. 外键关联编辑、展示 4. 输入验证,错误提示 5. 常见类型个性化编辑、展示 6. 完整REST API接口 image.png


Java 程序员看过来,有个可以做前后端分离的代码生成器 - V2EX https://www.v2ex.com/t/458262

yanghaojy32   2018-05-28 12:16:57 +08:00 这个码云上很多开源的。。我手上不下五个。。     2 v2dead   2018-05-28 12:19:27 +08:00 只要前端自动生成写好,我感觉一天能写五个不重样的,外带支持各类框架和多种语言。


一个基于Spring Boot的API、RESTful API项目种子(骨架) - 简书 https://www.jianshu.com/p/99fcead32d35

最近使用Spring Boot 配合 MyBatis 、通用Mapper插件、PageHelper分页插件 连做了几个中小型API项目,做下来觉得这套框架、工具搭配起来开发这种项目确实非常舒服,团队的反响也不错。

在开发一个API项目之前,搭建项目、引入依赖、配置框架这些基础活自然不用多说,通常为了加快项目的开发进度(早点回家)还需要封装一些常用的类和工具,比如统一的响应结果封装、统一的异常处理、接口签名认证、基础的增删改差方法封装、基础代码生成工具等等,有了这些项目才能开工。

然而,下次再做类似的项目上述那些步骤可能还要搞一遍,虽然通常是拿过来改改,但是还是比较浪费时间。所以,可以利用面向对象抽象、封装的思想,抽取这类项目的共同之处封装成了一个种子项目(估计大部分公司都会有很多类似的种子项目),这样的话下次再开发类似的项目直接在该种子项目上迭代就可以了,减少无意义的重复工作。

在相关项目上线之后,我花了点时间对该种子项目做了一些精简,并且已经把该项目分享到GitHub上面了,如果你正准备做类似项目的话,可以去克隆下来试试,项目地址&使用文档:https://github.com/lihengming/spring-boot-api-project-seed 。如果在使用中发现问题或者有什么好建议的话欢迎提issue或pr一起来完善它。


lihengming/spring-boot-api-project-seed: 一个基于Spring Boot & MyBatis的种子项目,用于快速构建中小型API、RESTful API项目~ https://github.com/lihengming/spring-boot-api-project-seed

image.png

项目结构图

提供代码生成器根据表名生成对应的Model、Mapper、MapperXML、Service、ServiceImpl、Controller等基础代码,其中Controller模板默认提供POST和RESTful两套,根据需求在CodeGenerator.genController(tableName)方法中自己选择,默认使用POST模板。代码模板可根据实际项目的需求来扩展,由于每个公司业务都不太一样,所以只提供了一些比较基础、通用的模板,主要是提供一个思路来减少重复代码的编写,我在实际项目的使用中,其实根据公司业务的抽象编写了大量的模板。另外,使用模板也有助于保持团队代码风格的统一


用Spring Boot 开发一个统一API接口_weixin_40009846的博客-CSDN博客 https://blog.csdn.net/weixin_40009846/article/details/101116430

在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式。牵扯到前后端分离,自然就离不开对接,交互,而交互最好的方式莫过于通过API接口实现了。


autosoftline首页、文档和下载 - 架构师助手 - OSCHINA https://www.oschina.net/p/autosoftline

软件框架基于通用模板,可以生成适合任何语言的框架,目前的框架后端使用了Java语言、Python语言,前端为HTML、Javascript。


EliMirren / Mirren-Swagger-API-Manager:MSAM是一个API接口文档管理器,用于生成兼容的SWagger.json的接口文件的接口管理软件 https://github.com/EliMirren/Mirren-Swagger-API-Manager

Mirren-Swagger-API管理器 MSAM是一个API接口文档管理器,MSAM的属性根据swagger-models-1.5.20.jar进行定义并添加了扩展属性 MSAM以项目-接口分组-接口三个单位,项目最终生成的结果理论上兼容Swagger的Swagger UI 不过MSAM也有一个属于自己的Client-UI,可以方便的查看检索接口文档

一些疑问 问:为什么有Swagger了还要这个东西? 答:因为大多以前以前分离的公司基本都跟本人公司一样,先接口文档然后才有项目;而Swagger是用注解现有的项目生产接口,如果用Swagger编辑器写又觉得不方便管理,所以就有了这个东西 问:为什么已经有了Swagger UI了还要搞一个MSAM Client-UI? 答:本人不喜欢Swagger UI的风格,本人的同事看Client-UI的风格已经很久了 问:市面上已经有接口文档管理了(例如阿里的RAP等)为什么你还要自己写 答:本人蛋疼(开玩笑的),最主要的目的是要融合本人开发的另外一个API网关成为一套完整的系统

服务器界面

客户端界面

客户端界面2


Mirren的工具箱 https://mirrentools.org/

image.png


Spring-generator 1.0.0 版正式发布,Spring 代码生成器 - OSCHINA https://www.oschina.net/news/97211/spring-generator-1-0-0-released

image.png

Spring-generator 不是框架,它不会影响现有的任何机构,它只是一个解决你重复做某些事情的工具,它也不拘束与某个语言,它的使命就是将数据库表结构取出来,剩下的就取决于你怎么使用 FreeMarker 编写模板生成你想要的文件

这么多年了,还有人乐此不疲地实现这种轮子 这么多年了,还有人乐此不疲地把数据表往service,controller层渗透


程序员新神器出世!Java迅速转为JavaScript! http://www.sohu.com/a/155159921_99926657

ChreepJ可以将Java字节码编译成100%兼容Java的JS,同时支持动态类加载和映射。CheerpJ可以在整个Java归档或单个类文件上触发,并生成.jar.js或.js输出。它使用原始的.jar元数据进行映射。 image.png


DWR框架简单搭建及介绍_qq_14926283的博客-CSDN博客 https://blog.csdn.net/qq_14926283/article/details/79395823

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。

DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.DWR允许WEB开发人员传递一个回调函数,来异步处理Java函数调用过程.


DWR框架学习 - XD-Thinker - 博客园 https://www.cnblogs.com/XD-thinker/p/6937666.html

我的理解:DWR框架是javaWeb中前后端直接交互的解决方案,用DWR框架,前端js能够直接调用后端服务,后端服务也可以直接调用前端js函数。


site:oschina.net javascript 交互 java_百度搜索 https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=baidu&bar=&wd=site%3Aoschina.net+javascript+%E4%BA%A4%E4%BA%92+java&rn=50&oq=site%253Aoschina.net%2520javascript%2520%25E7%25BC%2596%25E8%25AF%2591%2520java&rsv_pq=ede580030002153f&rsv_t=12abWJo%2FmhOcYXuYPJETRusWBeJsGd3cBz501bQplMaAJcn3eTyDf7wY%2Bdk&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=895


「果创后端云」用接口连接世界,让项目开发更有趣!免费接口,开放平台,数据存储 http://www.okayapi.com/

果创后端云 • 小白都喜欢的后端云服务 您身边的后端云服务,助力项目快速开发,助你实现弯道超车 面向独立开发者、创业公司、中小企业和大型机构,可开发微信小程序、网站、H5、安卓App、iOS应用、uni-app、Vue应用、游戏、工具等,适用于游戏、餐饮、电商、生活服务、教育、广告等不同行业。


没有后端也能快速开发H5应用,Vue + OkayApi最佳CP开发! - dogstar - 暗夜在火星的个人页面 - OSCHINA https://my.oschina.net/dogstar/blog/1608820

2、后端接口直接使用OkayApi小白接口(官网:http://www.okayapi.com/),用于保存和获取应用的数据 image.png


Aquameta首页、文档和下载 - 基于Web的IDE - OSCHINA https://www.oschina.net/p/aquameta

Aquameta 是基于Web的IDE,用于全栈Web开发。开发人员可以通过单个基于Web IDE来管理HTML,CSS,Javascript,数据库架构,视图,模板,路由,测试和文档,并执行版本控制,分支,推送,拉取,用户管理和权限。理论上。

在底层,Aquameta是一个完全在PostgreSQL中构建的“数据化” Web堆栈。典型的Web框架的结构在Aquameta中表示为大型数据库架构,具有6个postgreSQL架构,其中包含约60个表,约50个视图和约90个存储过程。在Aquameta中开发的应用程序完全表示为关系数据,并且所有开发在原子级别上都是某种形式的数据操纵


Veonim首页、文档和下载 - IDE 集成开发环境 - OSCHINA https://www.oschina.net/p/veonim

Veonim 是一个简单的模态框的 IDE 集成开发环境,基于 Neovim 和 VSCode 扩展,目标是创建作者心目中的理想编辑环境。 image.png


clever-nashorn: 使用Java nashorn Js引擎开发的在线开发平台 https://gitee.com/LiZhiW/clever-nashorn

什么原理呀 好厉害 Java nashorn Js引擎,使用了Java JIT(时编译器)运行时编译js代码成为Java字节码,只支持Java8

牛皮,TODO 里可以支持一下 datax。 主要使用场景之一就是“多数据源之间的数据同步”,会支持类似datax的功能,但不会使用datax,datax太重。这是一个轻量级的服务


clever-nashorn 第一个版本(0.0.1-SNAPSHOT)发布 - OSCHINA https://www.oschina.net/news/111231/clever-nashorn-0-0-1-released

后台API支持 脚本模块化支持(相互依赖导入,类似ES6语法) 支持加载使用第三方库,如:lodash、Underscore、等等 HTTP API支持 JDBC API支持 (支持多数据源) Redis API支持 (支持连接多个Redis) Elasticsearch API支持 (支持连接多个Elasticsearch) 支持实时监听解析MySQL binlog(基于canal实现,重写部分canal源码) (支持连接多个MySQL master)

image.png

image.png

image.png


clever-nashorn首页、文档和下载 - 在线开发平台 - OSCHINA https://www.oschina.net/p/clever-nashorn

使用Java nashorn Js引擎开发的在线开发平台,使用场景主要有: 数据集成类似ETL系统 多系统数据同步平台 在线接口功能开发(二次开发平台) 其他所有需要动态脚本逻辑开发的系统...

特性介绍 代码保存就能生效,不需要重启服务器 在线调试方便,所见即所得 Js生态 + Java生态,Java、Js代码库能混合使用(调用) Web IDE不需要安装开发环境,随时随地开发 高性能,与原生Java一致的性能 可扩展性强,新增自定义扩展简单方便

完善内置工具API支持,尽量做到只写业务逻辑代码 升级Js引擎到graaljs支持ES6或者更新的Js语法(后续版本计划) 引入GraalVM支持Java、Python、Ruby、R、Scala、Kotlin,甚至是C、C++语言的混用(后续版本计划)

  • 升级Web IDE基于Eclipse Theia做二次开发,IDE功能更加强大,交互更加友好(后续版本计划)


E-tools首页、文档和下载 - 跨平台开发小工具箱 - OSCHINA https://www.oschina.net/p/e-tools

image.png 能不能搞个离线加解密的工具,而且还是客户端形式的? 当时脑子热,Jquery 又是经常用的,重要的是 LayUI 也用的 Jquery,就选配这个了(后期准备用 Vue 重写)。

想做客户端,又要用前端,Electron 就成了首选。 当时对 Electron 也不是很了解,只是用 Electron 打了包。所以对后期重写的想法愈来愈浓烈。


鲁班 H5首页、文档和下载 - 基于 Vue 的拖拽式 H5 生成工具 - OSCHINA https://www.oschina.net/p/luban-h5

鲁班H5是基于Vue2.0开发的,通过拖拽的形式,生成页面的工具,类似易企秀、百度 H5 等工具

我们的初心也是希望能通过工程化的手段,大幅度提高简单H5页面的制作效率,提高工程师的幸福感,从这种需求频繁变更的简单任务中解脱出来 image.png

主要是给企业内部使用吧,类似于活动平台营销推广,这类页面需要推陈出新的


普加甘特图 - WEB甘特图高性能解决方案 http://www.plusgantt.com/

image.png 普加甘特图 普加甘特图,是WEB甘特图高性能解决方案。 适用于构建项目管理、生产排程等进度计划管理软件。

JavaScript实现,无需安装插件 支持Java、.Net、Php等服务端,支持任意数据库 能与jQuery、ExtJS、YUI、Dojo等第三方框架无缝集成 兼容IE6+、FireFox、Chrome、Safari等主流浏览器 支持导入、导出微软Project项目文件


jQuery MiniUI - 快速开发WebUI http://miniui.com/why/

  1. 开源 MiniUI是商业开源,提供100%源代码,切实保障客户的利益。


jQuery MiniUI V3.0 Demo http://miniui.com/demo/?gclid=CjwKCAiA3abwBRBqEiwAKwICAzBSbi5lZgq_WVh6rq-aLcux0DOi9K7F_MdJsbw1W7UxJJweFvthPBoCDEsQAvD_BwE#src=datagrid/celledit.html

image.png


myfat: MyFat是MyBatis的DAO功能增强插件 https://gitee.com/drinkjava2/myfat

简介 | Intro MyFat是MyBatis的DAO功能增强插件,利用全功能持久层工具jSqlBox来补足MyBatis的短板。

优点 | Advantages 无侵入性,对于使用MyBatis的项目唯一要做的只是添加MyFat依赖即可,不用更改任何其它配置文件和代码。 功能全,补足了MyBatis不提供CRUD的短板,以下为增强后的功能: 跨数据库分页、DDl生成、实体源码生成、函数变换、主键生成、多种SQL写法、DataMapper、ActiveRecord、Tail、实体越级关联查询、主从、分库分表、分布式事务等。 架构更合理,它不是基于MyBatis内核开发,而是整合了jSqlBox的功能,项目本身是模块式开发,可维护性好。 与其它Mybatis插件如Mapper或MyBatis-Plus的区别 源码少,MyFat本身不提供DAO功能,源码只有7个类,起到粘合剂的作用,jar包大小25k。 由jSqlBox提供的ActiveRecord可以只声明接口(Java8),不一定需要继承类,也不需要定义Mapper,更无侵入性。 它没有专门的分页方法,但是所有SQL查询都可以分页,无侵入性。 支持的SQL写法更多,如参数内嵌式SQL写法、实体越级关联查询等,实体类更符合JPA注解。

我感觉思路非常好,对于需求自由度高的 用起来还是很方便的。。。

分库分表是jSqlBox的功能,主要针对添加了@ShardTable, @ShardDataBase注解的实体,你可能没看jSqlBox的介绍。

项目中五花八门的写法,对于事后维护来说简直噩梦 习惯就好了,如果你理解了"pintea"这个词,就不会有问题。

恕我直言,XML管理SQL的方式,从维护的角度来说,比你们项目中的方式好了不知道多少倍 这就是为什么会编写MyFat插件的原因,你要是喜欢XML,那就接着用MyBatis吧。但不管怎么用,你都得再配一个如MyBatis-Plus、Mapper或MyFat之类的插件,因为MyBatis缺少CRUD功能。 管理角度和程序员的角度有时候是冲突的,对管理者太友好,可能对程序员就不友好了。管理者可不关心程序员从程序到XML两边跳过来跳过去,尤其当IDE插件没出来之前


jBeanBox: jBeanBox是一个微形但功能较齐全的IOC/AOP工具 https://gitee.com/drinkjava2/jBeanBox

jBeanBox是一个微形但功能较齐全的IOC/AOP工具,除了引入的第三方库之外,它的核心只有十多个类,源码只有1500行左右。它运用了“Box”编程模式,利用纯粹的Java类作为配置。jBeanBox运行于JDK1.6或以上。 jBeanBox的开发目的是要克服其它IOC/AOP工具的一些问题:

Spring: 源码臃肿,Java方式的配置不灵活,在动态配置、配置的继承上有问题、启动慢、非单例模式时性能极差。 Guice: 源码略臃肿(200个类),使用不太方便,对Bean的生命周期支持不好。 Feather:源码极简(几百行),但功能不全,只是一个DI工具,不支持AOP。 Dagger: 源码略臃肿(300个类),编译期静态注入,使用略不便,不支持AOP。 Genie: 这是ActFramework的内核,只是DI工具,不支持AOP。

我只知道声明式事务必须AOP。这个jBeanBox+AOP+类扫描,大小约500K,核心源码3000行以内。它主要用来作为ORM工具的一个组成部分,有了它,我的jSqlBox可以实现声明式事务,否则ORM功能不完整。它通常用于小项目或单元测试,你以前做过一个DI Benchmark应该知道它启动速度是非常快的。 当做大项目时,通常jSqlBox会采用SpringBoot的IOC工具和事务工具,因为后者更成熟,适合生产和团队开发。声明式事务都是单例,速度并不重要,因为数据库是瓶颈。

我说的是AOP,不是说通用。DAO工具的声明式事务实现可以不通用,但怎么都要实现AOP这个功能。 另外:通用的好处是DAO作者可以不用管事务这一块。比方说BeetlSql就没有开发自已的事务模块(代价就是必须依赖Spring)。EBean用一个不通用的AOP功能实现了声明式事务,代价就是单元测试时必须在IDE里安装Enhence插件。act-jpa-common里用@Transactional标记在方法上,但它的问题是:它的Bean必须由ACT框架来生成,而不能由第三方的DI容器来管理,这个入侵性太大了,因为引入了一个DAO工具,所以要换掉整个项目的DI工具? 另外一个问题是不知道它有没有实现全局配置功能,即ctx.bind(TxAop.class, "com.demo.*","insert*")这种通用AOP工具通常都有的用法。 我在jSqlBox的demo里有一个actframework的示例,整个项目是基于Guice内核来管理Bean,声明式事务使用jSqlBox自带的,mvc使用ACT,所以说MVC的、DAO工具自带的IOC工具不一定要侵入到整个项目里来接管,只需要有就行了,离了Spring也能转,但大项目最好还是用Spring来接管,因为MVC、DAO、数据库事务只是大项目的一部分,还有很多其它插件需要由IOC工具来配置,这方面Spring的生态是现成的,文档也全。

可以建立一个QQ群交流技术吗?建立一个开源生态系统 我没有QQ,有问题欢迎发issue或评论,因为是开源,什么技术都可以公开谈的


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

缘起 | Origin

一直认为,开发效率最高的方式不是让MVC架构极简(SpringBoot/jFinal),而是彻底省略掉MVC架构和后端程序员,直接由前端搞定一切,由多层架构变成两层,在前端直接写SQL,缩短界面和数据库之间的距离,才是最快的开发途径。基于此理念,在2011年本人在这里写了一句预言,没想到技术的发展如此之慢,现在要自己亲手去实现它了,这就是GoSqlGo项目,如果名字翻译成中文,可以翻成"Sql冲冲冲冲冲",这个比较形象,它表达了SQL为王,一路狂奔,冲到了前端的意思。

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

另外还有两个演示: 演示2:GoSqlGo结合Vue的使用。 演示3: 在前端定义一个完整的实体类并进行DDL生成、建表、表单输入检查、表单提交和存盘。 演示4: 演示在客户端嵌入Node.js代码。

GoSqlGo是一个工具,而不是一个框架,它是通过在Web容器里添加一个Servlet过滤器,处理.gsg访问,也就是说,它通常寄生在其它后端框架里,这样的优点是可以直接共享其它框架的Session和工具类。

GoSqlGo使用需要在客户端添加gosqlgo.js,业务逻辑和SQL直接写在客户端的Javascript里,示范项目里主要有以下方法:

$java(String, Object...) 执行多行服务端Java语句。第一个参数是Java本体,后面是参数,在Java里可以用$1,$2...来访问。
$javaTx(String, Object...) 执行多行服务端Java语句并开启事务,如果有异常发生,事务回滚。
$script(String, Object...) 执行多行服务端Node.js语句,第一个参数是Javascript文本,后面是参数,可以用$1,$2...来访问
$qry(String, Object...) 将SQL查询结果的第一行第一列作为字符串值返回,第一个参数是SQL,后面是SQL参数
$qryArray(String, Object...) 返回SQL查询的第一行数据,格式为Object[]的JSON字符串
$qryArrayList(String, Object...) 返回多行查询结果为List<数组>的JSON字符串
$qryTitleArrayList(String, Object...) 返回多行查询结果,为List<数组>的JSON格式,但第一行内容是各个列的标题
$qryMap(String, Object...) 返回SQL查询的第一行数据,为Map的JSON格式
$qryMapList(String, Object...) 返回SQL查询的多行数据,为List的JSON格式
$qryEntity(String, Object...) 返回第一行数据为实体的JSON格式,SQL写法是实体类名+逗号+SQL, 示例:$qryEntity(a.b.Demo, select * from demo); $qryEntityList(String, Object...) 返回多行数据为List<实体>的JSON格式,SQL写法是实体类名+逗号+SQL, 示例:$qryEntityList(a.b.Demo, select * from demo);

以上函数还可以用$$开头直接返回Javascript对象,例如$$qryMapList(...)就等效于JSON.parse($qryMapList(...))

开发和布署 | Develop & Product 开发阶段:GoSqlGo在服务端运行,它自带一个动态编译工具,前端发来的SQL和Java片段,被动态编译为Java类,并调用服务端ORM工具,最后返回文本或JSON对象。 如果前端发来的是脚本,如Node(或以后要加入的Php)之类,则服务端将调用相应的Web服务并返回文本结果(只支持utf-8文本格式),这个调用对客户端不可见。 在Sql/Java片段里面,返回值可以分为以下类型,但客户端最终收到的都是一个字符串:

为什么示例项目gsg-jBooox采用jSqlBox这么小众的DAO工具? 因为jSqlBox是本人写的DAO工具,打广告用的,它的DAO功能很全,可以号称SQL写法百科全书。如果前端对jSqlBox不感冒,可以对公司的后端提要求,搭配不同的DAO工具即可。GoSqlGo的所有方法命名和后台模板是可以自行定制的。目前只有gsg-jbooox示例,今后可能发行SpringBoot、jFinal等多个示范项目。 GoSqlGo与其说是个产品,不如说是个概念,稍有经验的后端都可以在它的概念上开发出支持其它ORM、MVC框架的后端平台, GoSqlGo核心是一个编译、打包工具,它不是一个框架

期望 | Futures GoSqlGo已发布,对它感兴趣的请加关注,或发issue提出完善意见。也欢迎同学们提交GoSqlGo演示示例,GoSqlGo如果用好了,结合前端的可视化组件,可以实现类似Delphi单机开发一样所见即所得的开发效率,不需要后端的参与,特别适合于原型、赶工期、或单人开发项目

// 因为添加了Node.js的Javascript支持,实际上在HTML的Javascript里的Javascript里也可以使用GraphQL查询了,而且可以省略掉GraphQL的服务端安全设定,不用担心各种GraphQL注入和DOS攻击了,因为最终客户端的GraphQL会被GoSqlGo包装转移到Java服务器端。当然这种方式只适用于客户端在产品阶段不允许自行创建各种GraphQL查询的场合。

这种比较适合小项目,面向对象的功能给省略了! 最适合于业务与页面关联密切,不考虑业务重用的情形,以达到快速、原型开发的目的。 但GoSqlGo本身可以配置成Servlet插件寄生在其它MVC框架上,和传统MVC框架是可以混合使用的公用的、复杂的业务类可以放在后端

IDE会有语法提示吗?毕竟 JAVA 的语法那么啰嗦,没自动提示功能,那。。。不是要好累 目前没有,这是远期目标,见issue#2。 如果这个工具有人用,用的人多了,自然会有人要求做IDE插件,如果没人用,也就没有做插件的必要了。 对于复杂的Java片段,目前只能利用goServ.bat先移到IDE里去调试通过了,再用goFront命令移回来,或干脆就留在服务端。

1.1.0版发布了。新增了一批查询方法,并允许添加自定义方法了。

大约7年前的时候我也有这样的想法,也写了一个前端页面上直接写sql传入数据库的框架,框架已经完成能用了。当时由于sql语句写在页面上不安全,我做了js混淆加密。但是最终还是解决不了安全问题就放弃了,在后来就忘了这个事。现在在想起这个idea应该是有办法实现的。兄弟加油啊!! 谢了兄弟。我现在正在精加工这个项目,争取让它实用一点。

大佬可以考虑一下 querydsl 基于 JPA 做成一个统一的接口,前端传必要的实体名,字段和判断条件就可以,后端通过 pathbuild 组合成sql条件查询 不想做得太复杂,querydsl的优点是写出支持重构的SQL,如果前端也引用querydsl 语法就失去了重构的意义。因为安全限制,前端的SQL方法是要被打包到后端去的,不能搞的太复杂,打包工具(DeployTool)会非常难写。目前GoSqlGo只支持一个最简单的qry()方法,今后再考虑加多一点点功能(如参数内嵌写法、允许返回实体、MapList对应的jason)就行了。另外本身在HTML里写SQL也不是处处适用的,因为它没有对输入参数验证,只适用于对安全性要求不要的网站如社交类、信息发布类网站等。真正复杂的企业逻辑或是切换到其它DAO工具如JPA、MyBatis等可以用java()方法来调用就可以了

https://www.jianshu.com/p/1df89befcba3 我写的思路, 基本思路都是简化开发, 不过大佬这种搞法确实太高端了 对于奋战在一线的程序员来说 还是需要一点通俗又解渴的东西 大佬如果愿意放下身段 可以发一些从思路到运行都更加亲民一点的工具 毕竟 有些时候 说服同事 和老旧技术兼容 才是更麻烦的问题 这个还没搞完,是个半成品,做了一半停下来,去捣鼓别的了。下一个版本发布至少要几周之后了。主要打算的改进是可以自定义Java方法,而不象目前只能有一个基类,局限性太大了。要好用又亲民的话必须要发布IDE插件才可以直接在html里面实现代码提示、报错等功能,不过这个难度就比较高了,适合大公司去做,象我这样个人开源的实在没精力去搞。 我只是觉得没必要跨度这么大 即使确实好用估计也很难推广 目前前端的API基本也够用和稳定了 后端要简化主要是添加一些通用接口就行了 这方面目前没有简单好用的方案 大佬可以稍微花点精力实现一个 就可以帮助很多人了 我觉得这样性价比更高

加上GoSqlGo与Vue集成使用的演示。允分体现大前端开发的便捷性。 (已添加,待Release) 允许自定义方法。目前只有qry和java两个方法,不够用。要添加一些SQL类方法,例如把jSqlBox中参数内嵌风格引入进来。(正在做) 另外,用TX这个关键字开启事务,这种固定编码方式是不对的,要改成允许指定继承类或实现接口的方式,如extends com.demo.TX,由TX类来决定具体操作。

不是的,在布属阶段,在项目的任意地方运行new DeployTool().goServ(); 这个打包工具将会把前端所有SQL、Java都移到后端。前端是看不到任何Java、SQL的,只能看到类似于$java('C8dD9fDf9df',参数1,参数2...)这样的调用语句。运行一下示例就知道了。(因为在开发期,第二个版本还未发布,这个项目还比较粗糙,运行gsg-tomcat示例前需要先运行core目录下的mvn_clean_install.bat安装一下。)

异想天开。后端用户只处理数据库存取的话,那逻辑是谁来做的?

举个最前线的校验例子: 数据表: 一个用户表里有三个字段:Name、Identity、Phone_number。

需求1 如下: Name 字段只能支持「简中字符集、繁中字符集、英文字母、整数、-、_ 」; Identity 字段只能支持「大陆、香港、台湾」地区的身份 ID,需要校验相应 ID 的格式正确性; Phone_number 字段只能支持「大陆、香港、台湾」地区的移动号,需要校验相应格式的正确性。

那这个校验逻辑谁来做?前端用 GoSqlGo 来做?

需求2 如下: Name 字段增加「日语、韩语」字符集支持; Identity 字段增加「日本、韩国」身份 ID 支持,并要校验正确性; Phone_number 字段增加「日本、韩国」地区移动号码支持,并要校验正确性。

这个逻辑又由谁来做?前端用 GoSqlGo 来做,然后发版?

需求3 如下: 与日本政策发生冲突,三个字段需要在接下来的15天内切断对日本地区的相应支持,完成整改后才能上线,接口需要作出字符集、格式、时间的判断后给出告示。

这个逻辑又由谁来做?前端用 GoSqlGo 来做,然后发版?

// 不是异想天开,针对你的问题,我做了一个表单输入的演示在[这里]。 这个例子中所有业务逻辑,包括实体bean定义、由实体生成DDL并建表、由表单生成JSON传给后端Java,表单内容的校验、表单存盘,都是写在一个html中,是一个单页面应用,校验逻辑只是演示了一下非空检验,我没必要为了写一个演示去研究日本ID格式。另外这个演示中没有前端校验,因为有后端校验兜底。 当然通常开发不是这样钻牛角尖的,一定要把所有逻辑写在html里,通常的做法是在后端将实体Bean定义、校验规则写成public类,前端在任意位置都可以调用基本原则是公用的要写在后端,只在这个html里用到的业务逻辑可以只写在html里

打算下个版本甩掉JSP,改成支持Servlet环境就行了,以更方便与其它MVC框架集成,而不是自成一家。这需要对jWebBox项目改造一下,将JSP做成可选模板之一。

1)GraphQL客户端在一个查询请求中,声明需要的数据结构和字段。这和大前端的开发方式是不一样的,后者不需要声明需要哪些数据,因为后者即是消费者,也是生产者,自已声明自已生产出来的数据格式应该是怎么样的,这纯属多此一举。 2)GraphQL是个数据接口标准而已,ORM层象是个想象中的玩具,实际不见得好使(即使对于Java界来说,ORM容器也不太好用,逐渐向面向SQL的DAO工具回归)。它不做输入验证、业务逻辑这些事,还是需要第三方语言来实现。而GoSqlGo只是一个简单的远程Ajax原生Java调用而已,没有什么复杂的技术,可以干任何输入验证、业务逻辑、用任意DAO工具存取数据库。 3)GraphQL有安全性问题,因为它允许根据用户传入的接口在服务器上拉取数据,这就造成可攻击的漏洞太多了,非常难以防范。所以通常只用于内容发布类网站如Facebook、github之类,有谁听过某银行开放了GraphQL查询没有? GoSqlGo的qry方法只允许客户端改变参数,但是不允许改变SQL内容,而且SQL是不可见的,所以安全性更高。对于需要绝对安全的网站,GoSqlGo可以一律走Java方法即可。

不是怕喷,喷至少说明被关注了,欢迎大家喷,但先前喷的让人啼笑皆非,安全性这一块不应该成为槽点。前端也好,后端也好,实际上没有什么明显的区分,因为要使用GoSqlGo,前端实际上就需要使用通常后端才了解的ORM等工具,也就成了所谓的全桟式角色了,本文所说甩掉后端,不过是一种修辞而已,实际上是想说,不再前后端分家了,而是一个角色就够了,这样可以免掉前后端之间的沟通,省掉很多接口和文档,可以进行快速、原型开发。当然这种方式的弊端也很明显,容易忽略输入检查、不利于测试

这样说的话就用php来开发就好了。 也是可以的,因为逻辑都写在前端,后端的语言、平台不限,习惯PHP的同学可以写个类似的支持PHP的项目在ajax里调用$php()方法就好了。GoSqlGo与其说是个项目,不如说是个思路。

技术本身没有问题,但是大多数程序员都讨厌标题党吧,省掉后端程序员看到这一句我就知道你要被喷了 距离标题党还差一点点,只能说是夸张吧。对于小型网站的开发,确实是可以将所有逻辑都写在前端的

关于开发中的打包工具:用goServ命令会抽取出Java/SQL到服务端,用goFront命令会塞回Java/SQL到前端HTML/Javascript中 对于Sql/Java字符串片段,开头设计以下可选控制字符: TX,表示开启事务 SERV,永远留在后端 FRONT, 永远留在前端 #xxxxx形式,手工指定ID

其他没什么说的,“因为后端除了写数据库,本来就没多少事干,现在这点活也由前端接管了”吓得我赶快多看了两眼readme 嘿嘿,发表一下看法:后端将来的主要工作是布署、维护、开发开发工具(例如GoSqlGo这种),而不应该涉足业务逻辑。因为谁对业务最了解?前端,这是直接与客户打交道的第一线。前端往往被忽视,实际上他们才是第一线战斗员,得前端者得客户,很多大网站,都是从简单的PHP页面起家的,为什么?因为他们最了解需求。相比于前端来说,后端的任务: 分布式事务、缓存、数据分片、备份、失效转移这些,有哪一项是和具体业务逻辑相关的?没有。而且这些技术有通用性,适用于所有业务。所以后端应该从业务中剥离开来,不应参与具体业务开发,而应该专心维护和开发开发工具,让前端傻瓜似的拿来用就行了。至于防止SQL注入、让前端不容易制造漏洞,这倒是后端开发开发工具时要考虑的。

其实实现起来稍微有点全栈基础的都可以.但是别人F12调试,别说权限了,就连数据库信息都得暴露,不怕别人把你数据库搞垮? 都说了无数遍,演示的是开发阶段,布署阶段要用打包工具抽取出来SQL和Java源码到服务端。客户端是看不到Java和Sql源码的。也怪我急着显摆,打包工具都没开发出来就往外推。

让我想起了直接在jsp上读写数据库 这就是模仿JSP,只不过jsp是用Java语法,这个是用JavaScript,真正的前端会来玩这个? 老大,java()方法里面的就是纯Java啊,要不哪来的Integer.parseInt()、SecurityException、getRequest这些东西啊,其实还有一个getPageContext方法获取的就是JSP的pageContext对象。

框架的思路起点很好 也有创新 但是往后实施就有点走弯路 这个东西做到最后其实就是java版的Node.js 一点都不错。但Java语言原来就在服务端一统天下,相比与Node.js这种新兴的弱类型语言来说,还是有优势的。

前端来做这个事确定适合吗??前端应该了解数据库结构?前端还要会写SQL脚本? 对于小公司来说,前后端可能是一个人搞,没有老板催着他要接口,要文档。这时候他最烦的不是后端,也不是前端,而是两者离得太远,不能很快将原型捣咕出来给老板看

N年前的jsp,就是前后外加数据库自己全搞,那大家全部回归jsp多好 嗯,大体上是这样,N年前是后端抵不住诱惑在HTML里写Java,现在该轮到前端抵不住诱惑在HTML里写Java了,区别在于,后端一出手,HTML就玩完了,前端再怎么折腾,HTML还是毫发无损。

没有。打包工具还没写出来。所以示例虽然能运行,但也只是表达了开发阶段的情形,在布署阶段Html/JavaScript中是不可能出现SQL文本和Java源码的。布署阶段就相当于标准的前后端分离开发情形了。顺便说一下,打包(或称布署)工具是可逆的,已被抽取出来的被修改后的SQL/Java还可以通过逆操作塞回到Html/Javascript中去

删库问题,数据库攻击问题,分布式问题,一致性问题??????????,没经验真可怕!!! 没经验真可怕。你确定你读完了Readme?

特地登录上来吐槽,把java代码写在js里面你也是个人才,就为了少一个java服务器?维护性来说呢??,js混合java代码是不是看起来很整洁,很容易维护?你想快速开发?那我干嘛不用php?干嘛不用node.js??? Java是世界上最好的语言!讲真的。 sql语句写在前端代码里面不好统一维护修改,还有现在流行前后端分离是为了方便维护,你现在都写在一起真的很冗余,还有就是建议你去看看 GraphQL ,任何东西不能只是为了做成某个效果而做

难不成 后端就写个CRUD。。。。

我也有这类想法 , 但是安全确实是个问题。 除了安全还有权限,a用户不能看b用户的信息 根据经验,很多后端调用不需要登录检查,比如一个社交网站真正属于用户机密的只是很少部分内容,大多数都是可以公开访问的。剩下的可以用Java片段解决java内含PageContext对象,可以获取Request、Session等Servlet对象,进行用户登录、权限安全检查

他这个模仿JSP,会生成Java类的,代码实际上还是跑在后端,可以防止sql注入的。但是,技术真的要退步吗?造个jsp的轮子?

忘掉后端程序员吧,因为后端除了写数据库,本来就没多少事干 这? 除了写数据库,后端还干了啥? 这句话还可以这么说:前端出了写页面,本来也没多少事干 是啊,所以说编程这活本来就很简单。

不如直接jsp靠谱 JSP不能访问Javascript变量。 其实beetl模板早就实现了他的功能,JavaScript语法,可以调用Java代码。

// 其实呢,你这样在前端写Java很难受的,黑盒子一样无法彻底调试,会有非常多的后期问题。再就是不友好,建议把java代码还是写在.java里面,通过注解设置一个Id,然后在前端调用Id。 1)不矛盾啊,打包工具的目的是自动生成ID,自动将Html里的Java抽取出来,通过ID来访问,手工当然也可以这么做,对于JavaScript端来说,两种方式可以同时支持。就好象有人就喜欢MyBatis给每个SQL起个ID,单独存放管理,有人就喜欢将Sql混在Java里。对于好的ORM工具来说这两种风格都应该支持。 2)当逻辑复杂时,一个HTML里可能有几十个小Java/Sql片段,如果由手工来管理Java/SQL, 手工给ID取名,就比较繁琐了,还不如直接省略ID起名这个过程,由打包工具来负责管理(随机生成的)ID->类的映射

很早之前也琢磨过类似方案,数据库侧都用存储过程,一直没有动手,作者可以考虑一下支持存储过程。 这种方式是支持存储过程的,它支持Javascipt调用Java, 而且自带一个ORM工具jSqlBox,它基于DbUtils内核,DbUtils本身就支持存储过程。

你还不如直接写jsp 原来后端程序员,只需要知道存取就行了。

不敢苟同,你这样会玩崩的 不会玩崩的,这叫大前端

这是在裸奔吧。。随便找个程序员就能攻击 架构上不存在安全问题,它不止是SQL,还可以执行Java。当然绝对的安全是没有的,粗心的程序员总是有的,比如,关键表格的访问没有检查用户是否有权限,但这是业务设计,与架构无关。

原理是写了个classloader,根据输入文本进行字符串拼接,形成class,然后加载并执行,所以他是动态编译,执行类似jdbc 但是简单的sql还不如直接使用数据库进行录入,还具有检验预编译功能,更直接有效 复杂的sql,用这个工具,连错在哪里都不知道,也是因为是动态编译,每次执行太费劲,虽然也写了cache,有模有样的

1.效率上正如你所说的,有cache支持。 2)对带参数的,参数将不参与动态编译,并不是每次执行都要动态编译的。例如 qry('select amount from account where id=? and amount<>?', 'A',0)将编译成如下Java类,并缓存起来(ID为键): Object ¥1=args[1]; Object ¥2=args[2]; pQueryForObject('select amount from account where id=? and amount<>?', ¥1,¥2) ; 3. 错在哪里都不知道这个暂时没办法,不过打包工具转换后再导入IDE就能找到错了。 (更正一下,打算采用静态编译的方式,所以打算去掉Cache功能了。因为打包后,Cache功能就无用了。)

以后 只剩下 前端程序员

直接执行Node.js不是更简单

那些黑灰产最喜欢你这类程序

一直以来 it行业 颠覆传统比较多。现在已经丧心病狂对 自己人下手了


gogo: 一行代码搞定RESTFul的轻量web框架。不依赖ORM https://gitee.com/konyshe/gogo

Go 语言轻量 web 开发框架,特点是一行代码搞定 RESTFul,不依赖第三方 ORM,也不需要生成一堆的 controllers 和 models 文件,快速使用。

背景 后台数据库有 100 多张表,用 BeeGo 等框架,需要生成 controllers 和 models 等文件共 200 多个,鼠标滑都滑不过来。每次表字段一有修改,代码就要统统跟着修改,想想都恐怖,于是就做了这个轻量的 web 开发框架,支持多协程任务、websocket、日志输出,批量增删改查。


TERSUS | 无代码电脑手机应用与企业管理软件快速开发工具 https://tersus.cn/

可开发各类型管理软件


客户服务系统CRM(类Salesforce.com)  办公管理系统(如Concor报销管理系统) 精益生产管理软件 (可视化看板 过程节拍抓取管理系统** 物料拉动管理系统**) 生产制造管理(MES)系统 计划库存订单管理(物料计划MRP、自动排产APS)  供应商采购收发货服务追踪(SCM)  **企业资源管理(ERP)系统 **零部件BOM图纸(PDM) 报告系统/任务系统 财务系统 人力资源管理系统 工程控制项目 (文件控制,BOM管理) 项目管理(避免单件流的事件处理流程)  内部与外部高效联系系统 (VMI管理,采购计划管理等)  销售及产品管理系统参考韩国全进重工欧洲公司案例) 拉动式管理安东系统(自动提示、邮件及短信提醒) 微信类应用(集成公众号可调用各类微信API)  钉钉微应用(集成钉钉可调用钉钉各类功能) 工业4.0工业互联网项目(集成各类设备数据采集器)  智能工厂项目(MES为中枢的全信息集成自动处理加各类数据采集硬件)

区别于其他低代码或配置式快速开发平台的优势: 软件开发逻辑不变,非配置式开发,开发逻辑仍旧一样;写代码过程采用拖放连线及模块化复用方式替代,小到x+y及x++这样最简单处理都有可视化可拖放的元件 从使用x+y及x++小元件开发、直接使用成熟的框架或已开发的增删改查页面,或将一段可重复使用的任何模块或逻辑在同一项目内或不同项目间的复用,让成熟开发者开发工作量相比传统有代码开发者减少70%以上 无代码开发:开发过程中框架及各类显示、逻辑处理、字符串操作及数学运算、数据库处理、服务器处理全部可视化无代码 后端采用最流行的JAVA语言作为无代码底层处理语言,JAVA强大且适用于企业复杂业务处理;前端采用Javascript和H5/LESS样式/Bootstrap前端设计框架,是目前互联网的页面设计风格 样式灵活:所有显示样式采用LESS样式(CSS的高级处理方式)来独立定义,有整套的预定义模板,可以修改或自定义为自有样式,集成了Bootstrap前端框架,引入H5元素 开放式平台:可以用可视化元件、连线方式传入参数及函数名称运行自定义或第三方服务的特定功能函数(如发送短信等服务) 开放式平台:可以用其他语言代码开发各类功能作为元件插件集成进TERSUS无代码开发平台

TERSUS隶属于上海尚识信息技术有限公司,TERSUS无代码开发工具,让任何人无需读写代码及编程知识,采用java模块图标拖放的方式开发电脑与平板应用、手机应用及各类企业管理系统(包括:ERP系统、CRM系统、MRP系统、SCM系统、PDM系统、财务系统、人事系统及报告系统等),开发速度快、成本低、维护及二次开发简单 TERSUS软件开发平台工具由以色列荷兹利亚(Herzeliya,?Israel) TERSUS SOFEWARE LTD于2003年开发,且一直在升级优化,TERSUS可视化无代码开发概念及技术能力超前

image.png image.png

image.png

image.png


画画一样开发软件 TERSUS无代码开发工具安装及使用介绍 http://www.sohu.com/a/210632880_100072031

image.png


无代码软件开发/Web软件开发/底层JAVA/Javascript/H5/Bootstrap-学习视频教程-培训课程-腾讯课堂 https://ke.qq.com/course/390888?tuin=5a20b1a&taid=3089120868300520

无需代码编程,任何人都能学会都可以开发软件。无代码开发可以快速开发各类企业管理软件。本课程为入门介绍课程,包括一个简单无代码开发演示、介绍什么是无代码开发,可以做什么,开发基础知识提前说明,学习方案说明等。请加QQ群941053018或微信15821992924获取无代码开发手册及60多个开发视频、一对一技术服务 

image.png


后端程序员都做些什么? - Freeking123 - 博客园 https://www.cnblogs.com/freeking123/p/8110387.html

原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。 image.png


技术探索-从全栈到双栈 - 简书 https://www.jianshu.com/p/1df89befcba3

目前感觉到开发中存在的问题: Spring Data Rest功能较弱, 不能方便的实现复杂查询. 目前是通过把数据一次全部加载到前端, 在前端进行查询处理. 后期还是要考虑通过后端接口查询, 需要引入新的实现方式. 前端组件标准化不够. 通过不同场景下的使用需求可以提炼出一些前端通用的需求, 为了避免代码重复做了一些组件封装, 但是只是粗略实现了基本功能, 不够清晰简洁. 需要手工对接的地方还是较多, 需要按照前端和后端的技术需要去适配同一个业务需求. 未来需要整理业务中通用的需求, 模式, 形成通用的声明化配置化的代码基础, 方便后续的开发.

所以接下来, 准备使用PostgreSql数据库替换Mysql, 经调查测试, 其在性能和功能方面都更优秀. 然后可以使用[PostgREST](https://github.com/PostgREST/postgrest)提供Http接口, 避免了手工维护后端接口, 前端在权限范围内可按需操作后端数据. 权限判断等必须在后端完成的功能通过在数据库中声明, 简化了开发, 也保证了数据的完整性. 关于这种后端自动生成接口的技术, 其实一直在关注. 原则上后端的很多工作就是把数据库的访问转成HTTP的接口, 这种工作应该自动完成更好. 如果数据库没法直接提供HTTP形式的接口(比如像CouchDB那样), 那么最好是只通过一层简单的封装, 对外暴露Web接口. 这方面目前感觉做的最成熟的就是PostgREST. 以前一直使用的是Spring Data Rest, 只提供了最简单的CRUD和分页功能, 并且需要Spring环境. 在后端只提供数据接口的情况下, 显得结构复杂, 功能单薄. github上有人建了一个列表automatic-api, 总体来看这方面的技术多数是小规模的探索, 没有形成整体的开发架构. 最近看到国内也有人在做这种尝试[APIJSON](https://github.com/TommyLemon/APIJSON). 这种思想和实现并不是很难, 和所有的ORM或数据访问框架一样, 都是拼SQL语句. 关键是要形成完整的开发模型, 需要一套相关项目和工具组成的生态系统. 其中首先要解决的是权限控制问题. 很多人说, 前端直接传SQL语句到后端执行最简单了, 但是不解决授权验证的问题, 就只能作为原型技术来用. PostgREST利用了PostgreSql数据库本身强大的权限管理和编程功能, 利用JWT传递权限角色到数据库, 所有的授权判断直接利用数据库本身的管理功能. 最大化的减少了代码的冗余, 也保证了用于生产环境的规范化. 原则上, 只要是权限范围内的操作都可以在前端执行, 后端不需要写业务相关代码. 当然, 如果需要写的话, 可以在数据库中写存储过程(函数), 前端通过Web接口调用. 这样的技术架构实际上把项目整体简化成了最为本质的两层: 数据 和 界面. 这是软件的本质功能, 其余所有的环节都属于中间步骤, 可以被简化, 规范化和通用化. 这是最初和最终的目标, 参见第一篇文章.

前端方面, 通用组件还需要继续优化整理, 保证通用功能不出现重复代码, 特定功能可以用简洁的声明式代码实现. 在此基础上加强前后端的整合, 屏蔽技术实现细节带来的差异, 提炼出业务常用类型和流程, 比如人员, 机构, 日期时间, 货币, 任务, 单据. 更多的建立起基于业务的抽象, 业务类型决定了数据库类型和前端组件类型. 对于简单通用的需求, 只要声明一次, 前后端都能够以统一的方式成功运行. 对于特定的需求, 能够在实际需要的地方(一般原则是权限范围内的在前端, 需要控制权限的在后端)插入声明代码, 即可运行. 并且争取做到用户可以简单的理解和配置, 在无需改动代码和开发人员不参与的情况下实现系统按需修改.

最终的目标是希望真正能实现业务和技术的解耦. 业务规则应该是数据化, 声明化的. 框架解析业务规则, 并产生能够在计算机上运行的程序. 业务的变化不需要修改技术实现代码, 技术的迭代也不会影响业务的正确运行. 这是软件开发的长远目标, 也是降低软件复杂性和开发维护成本的根本方式. 结合当前的技术情况, 具体形式采用DSL, 还是SQL, XML或LISP, 或者干脆用规则表, 现在不能确定, 但总的思路是业务是数据, 就像函数是数据一样. 声明式的业务规则在底层框架的支持下自动转换成程序在计算机上运行. 技术和业务的复杂性相互独立. 开发人员的主要精力应该是理解业务需求, 设计合适的数据库和界面, 并以声明的方式直白的翻译业务需求. 开发的难度大大降低, 无经验的人员, 甚至客户企业工作人员简单熟悉后都可以参与开发, 把软件的控制权交给用户. 而专业技术人员更多的是负责保证底层环境的稳定运行, 实际上就是现在的云模式.

希望在不远的将来, 码农, 996, 软件培训这些概念会像旧时的黄包车, 西洋景, 大哥大, BP机一样, 成为一种模糊的回忆. 生活在一个改变的年代, 我们都在努力奔跑的同时, 也享受着别人的努力所带来的便捷.


码农田伟 - 简书 https://www.jianshu.com/u/d08b9e3758f8

百度/360/bing/sogou: 码农田伟(简书) 简书: 码农田伟 微信/电话: 13011595650 QQ/邮箱: 872634214 Github/码云: Onesimu 脉脉/钉钉: 实名 线下: 石家庄/天津


dbohdan / automatic-api:可以将数据库变成REST / GraphQL API的软件列表 https://github.com/dbohdan/automatic-api

以下是为数据库以及具有内置HTTP API的数据库自动公开REST,GraphQL或另一种API的工具列表。


demo/gsg-jbooox/src/main/webapp/page/demo2.html · drinkjava2/GoSqlGo - 码云 Gitee.com https://gitee.com/drinkjava2/gosqlgo/blob/master/demo/gsg-jbooox/src/main/webapp/page/demo2.html

image.png


在Javascript中写SQL将成为流行_javascript,sql,平台_drinkjava的专栏-CSDN博客 https://blog.csdn.net/drinkjava/article/details/6935539

Javascript中写SQL?听起来吓死人,但不表示不可行, 安全问题通过其它方式解决如编译到服务端。薄的服务端平台不限。这将成为一种快速开发架构。此为预言,立此为证。

Drinkjava于2011/11/04


jSqlBox: 基于Apache-Common-DbUtils内核开发的全功能数据库持久层工具 https://gitee.com/drinkjava2/jsqlbox

优点 | Advantages 架构合理:模块式架构,各个模块都可以脱离DbUtil-Plus单独存在。 跨数据库:基于jDialects,支持80多种数据库的分页、DDl脚本生成、实体源码生成、函数变换、主键生成等功能。 与DbUtils兼容:内核基于DbUtils, 原有基于DbUtils的旧项目可以无缝升级到DbUtil-Plus。 多种SQL写法:Inline方法、模板方法、DataMapper、ActiveRecord、链式写法等。 多项技术创新:Inline风格、多行文本支持、实体越级关联查询、树结构查询等。 动态配置:除了支持实体Bean注解式配置,DbUtil-Plus还支持在运行期动态更改配置。 无会话设计:无会话设计(Sessionless),是一个真正轻量级的、全功能的持久层工具,也可以作为其它持久层工具的补丁来使用。 主从、分库分表:无需引入第三方工具,DbUtil-Plus本身就具备主从、分库分表功能。 自带声明式事务:内置微型声明式事务工具jTransactions。也支持配置成Spring事务。 自带分布式事务:内置分布式事务功能。


人工生命首页、文档和下载 - 开源项目初稿 - OSCHINA https://www.oschina.net/p/frog

image.png

理论 | Theory 为什么明明是个电脑程序,只要满足上述四个特点就可以称之为"真正"的人工生命? 这一点我不想多说,大家可以百度一下"zhangrex 人工生命"就知道我的观点了:意识从来就不存在,意识只是一种现象。风吹、树动和风吹、添衣,都只是一种现象而已,生命本质上是一种现象,换句话说,只要表现出生命现象的事物,就可以称其为生命了,不管它是高等还是低等,不管它的物质存在基础是怎样的。作为一个二十年前就思考人工智能(可能比在座的各位年龄都长)者的话,请仔细思考一下这个观点。哲学上、理论上对智能、意识的研究是很无聊的,相当于在研究“无”到底是什么,不必多纠缠在理论和算法上。是的,用模拟环境得到的人工神经网络模型,我们确实无法掌控它的算法是怎样生成的,但是我们知道,这符合大自然创造生命的规律。

项目架构 | Architecture 这是一个Java项目,分为Application、Env、Frog三个模块: Application模块: 用于项目的启动、关闭等基础服务。 Env模块: 目前是一个500x500象素点的虚拟空间,由Swing生成画像,这是程序员唯一可以控制的区域。 Frog: 这是人工生命的主体,目前起名叫青蛙,其实叫什么都一样。它具备以下器官: Leg: 与运动神经元相连,Leg的激活将导致Frog移动,Leg有五个方向:上下左右停 Mouth: 只有一个动作:eat 用来食用虚拟空间出现的虚拟食物,它是一个感觉器官,而不是一个运动器官,Frog本身具有一个能量字段,进食后能量字段会增加,运动或随时间流逝能量将减少,能量耗尽则Frog死亡。 Brain: 有眼、脑细胞、脑区、基因等对象

作者其它开源项目 | Other Project


人工生命: 这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体。 https://gitee.com/drinkjava2/frog

image.png 又更新了一下,但是是在history\003a_legs目录下了,在旧的2维脑基础上给青蛙加两条脚,看看它能不能单纯靠随机进化就用两条脚走路。结果它好象只选择一条腿走路(如果有人跑出两条腿的请告知)。不过这已经证明了就算脑神经完全随机变异,进化出会抬腿、落腿走路的生命体也是一件必然会发生的事。这个程序中没有身体、形状的诞生、进化演示。不过这不重要,因为这个项目的重点在智能上。具体身体物理结构的进化是实际的生物才不得不去实现的,否则无法生存。而人工生命就没这个物理结构问题了,要什么外设和传感器直接给它就行了,这是人工生命和实际生命的一个主要区别。 目前不能用两条腿的原因可能和它的脑太简单有关,没有逻辑和记忆器官,如果加入“与”、“或”、“非”之类的门逻辑器官,参与随机连接,可能会有帮助。不过先暂时放下,打算还是先完善3D脑,2D脑的局限性太多。

希望这个项目的趣味性、低门槛能吸引更多的人关注这个方向。

以后的一些打算:在3D脑上重现二维脑的随机进化,继继找食;引入果冻脑细胞,充当记忆和模式识别单元。小蛇要加上,以青蛙为食物; 试一试如果青蛙加两条腿,移动必须先抬腿、落下、转动腿带动身体这种方式移动,可以更形象地模拟生物的形态和运动机制。


中国古典颜色在线手册 - OSCHINA https://www.oschina.net/p/chinese-colors

可收藏喜欢的颜色 搭配显示诗词 可生成壁纸,屏幕多大,截图就有多大 (暂不稳定,欢迎反馈)。 image.png


wukong-robot首页、文档和下载 - 简单、灵活的中文语音对话机器人 - OSCHINA https://www.oschina.net/p/wukong-robot

image.png

wukong-robot 是一个简单、灵活、优雅的中文语音对话机器人/智能音箱项目,目的是让中国的 Maker 和 Haker 们也能快速打造个性化的智能音箱。

玩树莓派的时候用过这个作品。除了本体还有好多其他大佬写的插件,特别好玩


WePush首页、文档和下载 - 消息批量推送工具 - OSCHINA https://www.oschina.net/p/wepush

image.png

一款专注批量推送的小而美的工具。

目前支持的消息类型:

模板消息-公众号 模板消息-小程序 微信客服消息 微信企业号/企业微信消息 阿里云短信 阿里大于模板短信 腾讯云短信 华为云短信 百度云短信 又拍云短信 七牛云短信 云片网短信 E-Mail HTTP请求 image.png


commento首页、文档和下载 - 轻量级的嵌入式网站讨论系统 - OSCHINA https://www.oschina.net/p/commento

Commento 是一个轻量级的嵌入式网站讨论系统。您可以将其嵌入到您的博客,新闻文章以及您希望读者添加评论的任何地方。这是轻量级和简单的,可以快速页面加载。重点是还关乎隐私,评论引擎都关乎隐私。


WeHalo首页、文档和下载 - 简约微信小程序博客 - OSCHINA https://www.oschina.net/p/wehalo

WeHalo的诞生离不开下面这些项目:

Halo:轻快,简洁,功能强大,使用Java开发的博客系统

ColorUI:鲜亮的高饱和色彩,专注视觉的小程序组件库

iView Weapp:一套高质量的微信小程序 UI 组件库

Painter:微信小程序生成图片库,绘制一张可以发到朋友圈的图片

html2wxml:用于微信小程序的HTML和Markdown格式的富文本渲染组件,支持代码高亮

一言·古诗词:Hitokoto API,随机返回一条古诗词名句。采用 Vert.x + Redis 全异步开发,毫秒级稳定响应。 image.png


xenv/gushici: 一言·古诗词 API (Hitokoto API),随机返回一条古诗词名句。采用 Vert.x + Redis 全异步开发,毫秒级稳定响应。 https://github.com/xenv/gushici

古诗词·一言API 是一个可以随机返回一句古诗词名句的接口。具有以下特点:

快:使用 Vert.x Java 全异步框架开发,使用 Redis 数据库,确保毫秒级稳定响应。 全:支持 svg / txt / json / png 调用,满足你在任何地方的调用需求 准:可以根据你的喜好,在指定的分类中进行随机返回 稳:提供完整单元测试,已经过数百万次调用


Weex-CNODE首页、文档和下载 - Weex 开发 App 版本的 CNODE 社区 - OSCHINA https://www.oschina.net/p/weex-cnode

image.png


VNote首页、文档和下载 - 基于 Qt 框架的开源笔记软件 - OSCHINA https://www.oschina.net/p/vnote

VNote是一个受Vim启发开发的专门为Markdown而优化、设计的笔记软件。VNote是一个更了解程序员和Markdown的笔记软件。

VNote是一个基于Qt框架的、免费的开源笔记软件。VNote专注于Markdown的编辑与阅读,以提供舒适的编辑体验为设计目标。

VNote不是一个简单的Markdown编辑器。通过提供笔记管理功能,VNote使得编写Markdown笔记更简单和舒适! image.png


Markdown Nice首页、文档和下载 - 在线微信Markdown排版工具 - OSCHINA https://www.oschina.net/p/markdown-nice

Markdown Nice ( mdnice )是一个支持自定义样式的在线微信Markdown排版工具

支持自定义样式的 Markdown 编辑器 支持微信公众号排版 支持知乎、稀土掘金、博客园和 CSDN 等一系列平台 内容和自定义样式浏览器中实时保存 支持上传图片、脚注、公式 image.png