CN105760181B - 一种跨代码语言的开发框架 - Google Patents

一种跨代码语言的开发框架 Download PDF

Info

Publication number
CN105760181B
CN105760181B CN201610214954.1A CN201610214954A CN105760181B CN 105760181 B CN105760181 B CN 105760181B CN 201610214954 A CN201610214954 A CN 201610214954A CN 105760181 B CN105760181 B CN 105760181B
Authority
CN
China
Prior art keywords
access
development
page
function
authentication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201610214954.1A
Other languages
English (en)
Other versions
CN105760181A (zh
Inventor
李敬塔
伍仲文
陈建良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Baimi Life Co Ltd
Original Assignee
Shenzhen Baimi Life Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Baimi Life Co Ltd filed Critical Shenzhen Baimi Life Co Ltd
Priority to CN201610214954.1A priority Critical patent/CN105760181B/zh
Publication of CN105760181A publication Critical patent/CN105760181A/zh
Application granted granted Critical
Publication of CN105760181B publication Critical patent/CN105760181B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种跨代码语言的开发框架,它涉及互联网技术开发技术领域,它采用开源jquery插件实现页面异步刷新能力,使页面只刷新要展示的内容,页面form表单将自动绑定jquery插件的ajaxForm函数,提交表单时,自动采用异步方式提交;后端通过nginx服务器配置根据请求url的后缀来识别开发语言从而分发到对应的服务器去处理,后将结果原路返回到界面。它适用于不同开发风格的程序员,对程序员技术门槛要求低,不需要合并代码,功能模块开发完成只需要在框架上配置功能模块运行路径即可。

Description

一种跨代码语言的开发框架
技术领域:
本发明涉及一种跨代码语言的开发框架,属于互联网技术开发技术领域。
背景技术:
跨代码语言的开发框架,大部份创业型公司通常会在系统开发前,确定好系统的某种代码语言,如:php\java\python\c++,但通常要么单一的代码语言人员招聘难度大或者由于公司人员掌握的代码语言熟悉程度不一。把不同模块分给不同人员开发时只能要求程序员掌握当前系统的代码语言开发,假如:系统A主开发语言为php,在系统还未达到解偶条件下,又由其它代码语言闲暇的工程师开发,难度较大。
发明内容:
针对上述问题,本发明要解决的技术问题是提供一种跨代码语言的开发框架。
本发明的一种跨代码语言的开发框架,它采用开源jquery插件实现页面异步刷新能力,使页面只刷新要展示的内容,页面form表单将自动绑定jquery插件的ajaxForm函数,提交表单时,自动采用异步方式提交;后端通过nginx服务器配置根据请求url的后缀来识别开发语言从而分发到对应的服务器去处理,后将结果原路返回到界面,具体步骤如下:
1.采用开源jquery插件实现页面异步刷新能力,用户点击页面链接,框架自动向服务器端发起ajax请求,返回内容后将返回的内容填充到显示的区域;
2.页面form表单通过onsubmit属性绑定自定义封装函数ajaxPost再由ajaxPost自动封装好form表单中的参数后调用jquery插件的ajaxForm函数,来实现异步提交功能,如:onsubmit="mm.ajaxPost({formId: this}, mm.check);";
3.页面删除操作则绑定自定义封装函数ajaxDelete,后续由ajaxDelete函数内部处理提交及提示工作;
4.页面加载完成后所有的a链接,将自动绑定hashchange事件,绑定所有不在新窗口打开的a链接,当链接的href属性和hash值一样时触发hashchange事件,以确保所有的链接请求都将以ajax的形式发送请求,请求成功则将更新到指定区域显示,失败tip提示失败信息;
5.为支持地址栏直接输入地址(或点击浏览器刷新)框架也能执行异步刷新(AJAX)动作,页面第一次加载时,地址栏url自动在功能模块前加“#”号,用以区分功能模块(如: xxx.100msh.com/#adstat/index?a=1&b=2,其中“#”号后adstat/index 为功能模块路径,a和b 为参数, 没有参数则“?”后的部分省略);
6.安装项目中需要用到的开发语言解析容器(如:tomcat\uwsgi\php-fpm\\IIS…),后续也可以随之扩展增加;
7.后端服务器采用nginx来识别开发语言,nginx根据url相对应的开发语言分发到对应用服务容器处理,开发语言识别分为两种,一种通过url后缀(如:.jsp|.jspx|.do|.wsdl|.php|.net|.py|.pyc|.pyw|.pyo.|.pyd…)另外一种通过特定模块名称(如:xxx.100msh.com/py/、xxx.100msh.com/java/、xxx.100msh/cgi/、xxx.100msh/net/…);
8.框架提供统计的权限控制接口,各语言开发模块统一调用框架的权限接口,来控制操作权限,具体处理流程如下:
1)、在数据库表t_accessrights 中增加字段 access_type【1、php开发2、其他语言开发】,如果为2,access_link 需要设置为完整的地址,例如:xxx.100msh.com/[java|python]/;
2)、系统根据access_type的值建立相应的菜单项url+
值为1:保持跟现有一致
值为2:生成规则为: xxx.100msh.com/[java|python]/?p=xxx 其中p的值为:access_id与access_token[在t_adm_access_token表中]加密处理后的值;
3)、其他语言处理方式
代码头部增加鉴权判断,如:访问 xxx.100msh.com/[java|python]/?p=xxx 时,根据p的值进行鉴权,鉴权接口为:
http://[auth].cgi?p=xxx ,返回结果为:
返回true:表示鉴权成功,可以正常访问这个功能
返回false:表示鉴权失败,提示没有访问权限;
4)、鉴权接口说明:
接口对收到的p参数,进行解密,解析出access_id与access_token, 根据这两个参数鉴权算法如下:
(1) 根据access_token找出当前登录的user_id [在t_adm_access_token表中]
(2) 根据user_id找出该用户有哪些职位 pos_id [在t_adm_pos表中]
(3) 判断职位pos_id是否有access_id权限 [在t_posaccess表中],如果有:鉴权成功, 否则鉴权失败;
9.模块开发完成后,配置好运行环境,只需要在框架功能权限菜单上增加功能项链接,即可使用新模块功能;
10.当用户登录超时(如:用户登录后走开了,未退出系统,过了超时间后,再回来操作),框架会自动识别并跳出操作界面,回到登录界面提示用户登录。
本发明的有益效果为: 它适用于不同开发风格的程序员,对程序员技术门槛要求低,不需要合并代码,功能模块开发完成只需要在框架上配置功能模块运行路径即可。
附图说明:
为了易于说明,本发明由下述的具体实施及附图作以详细描述。
图1为本发明访问过程时序图,
图2为本发明中NGINX配置示例图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图中示出的具体实施例来描述本发明。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本具体实施方式采用以下技术方案:如图1所示,它采用开源jquery插件实现页面异步刷新能力,使页面只刷新要展示的内容,页面form表单将自动绑定jquery插件的ajaxForm函数,提交表单时,自动采用异步方式提交;后端通过nginx服务器配置根据请求url的后缀来识别开发语言从而分发到对应的服务器去处理,后将结果原路返回到界面,具体步骤如下:
1.采用开源jquery插件实现页面异步刷新能力,用户点击页面链接,框架自动向服务器端发起ajax请求,返回内容后将返回的内容填充到显示的区域;
2.页面form表单通过onsubmit属性绑定自定义封装函数ajaxPost再由ajaxPost自动封装好form表单中的参数后调用jquery插件的ajaxForm函数,来实现异步提交功能,如:onsubmit="mm.ajaxPost({formId: this}, mm.check);";
3.页面删除操作则绑定自定义封装函数ajaxDelete,后续由ajaxDelete函数内部处理提交及提示工作;
4.页面加载完成后所有的a链接,将自动绑定hashchange事件,绑定所有不在新窗口打开的a链接,当链接的href属性和hash值一样时触发hashchange事件,以确保所有的链接请求都将以ajax的形式发送请求,请求成功则将更新到指定区域显示,失败tip提示失败信息;
5.为支持地址栏直接输入地址(或点击浏览器刷新)框架也能执行异步刷新(AJAX)动作,页面第一次加载时,地址栏url自动在功能模块前加“#”号,用以区分功能模块(如: xxx.100msh.com/#adstat/index?a=1&b=2,其中“#”号后adstat/index 为功能模块路径,a和b 为参数, 没有参数则“?”后的部分省略);
6.安装项目中需要用到的开发语言解析容器(如:tomcat\uwsgi\php-fpm\\IIS…),后续也可以随之扩展增加;
7.后端服务器采用nginx来识别开发语言,nginx根据url相对应的开发语言分发到对应用服务容器处理,开发语言识别分为两种,一种通过url后缀(如:.jsp|.jspx|.do|.wsdl|.php|.net|.py|.pyc|.pyw|.pyo.|.pyd…)另外一种通过特定模块名称(如:xxx.100msh.com/py/、xxx.100msh.com/java/、xxx.100msh/cgi/、xxx.100msh/net/…),如图2所示;
8.框架提供统计的权限控制接口,各语言开发模块统一调用框架的权限接口,来控制操作权限,具体处理流程如下:
1)、在数据库表t_accessrights 中增加字段 access_type【1、php开发2、其他语言开发】,如果为2,access_link 需要设置为完整的地址,例如:xxx.100msh.com/[java|python]/;
2)、系统根据access_type的值建立相应的菜单项url+
值为1:保持跟现有一致
值为2:生成规则为: xxx.100msh.com/[java|python]/?p=xxx 其中p的值为:access_id与access_token[在t_adm_access_token表中]加密处理后的值;
3)、其他语言处理方式
代码头部增加鉴权判断,如:访问 xxx.100msh.com/[java|python]/?p=xxx 时,根据p的值进行鉴权,鉴权接口为:
http://[auth].cgi?p=xxx ,返回结果为:
返回true:表示鉴权成功,可以正常访问这个功能
返回false:表示鉴权失败,提示没有访问权限;
4)、鉴权接口说明:
接口对收到的p参数,进行解密,解析出access_id与access_token, 根据这两个参数鉴权算法如下:
(1) 根据access_token找出当前登录的user_id [在t_adm_access_token表中]
(2) 根据user_id找出该用户有哪些职位 pos_id [在t_adm_pos表中]
(3) 判断职位pos_id是否有access_id权限 [在t_posaccess表中],如果有:鉴权成功, 否则鉴权失败;
9.模块开发完成后,配置好运行环境,只需要在框架功能权限菜单上增加功能项链接,即可使用新模块功能;
10.当用户登录超时(如:用户登录后走开了,未退出系统,过了超时间后,再回来操作),框架会自动识别并跳出操作界面,回到登录界面提示用户登录。
本具体实施方式具有以下优点:
1.可扩展性强:功能模块独立,随时可增减功能模块,不受开发语言限制,任可web端开发语言都可融合;
2.开发简单:适用于不同开发风格的程序员,对程序员技术门槛要求低,不需要合并代码,功能模块开发完成只需要在框架上配置功能模块运行路径即可;
3.松偶合:模块间可独立运行,在大并发访问量情况下,功能模块间可分布式部署;
4.局部刷新:页面局部刷新,只会刷新当前操作的窗口,数据交互自动压缩以json格式传输,对网络要求低;
5.轻量级: 整个框架只依赖jquery插件,然后就是一个权限控制链接的组合,不依赖其它插件库,体积非常小。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (1)

1.一种跨代码语言的开发框架,其特征在于:它采用开源jquery插件实现页面异步刷新能力,使页面只刷新要展示的内容,页面form表单将自动绑定jquery插件的ajaxForm函数,提交表单时,自动采用异步方式提交;后端通过nginx服务器配置根据请求url的后缀来识别开发语言从而分发到对应的服务器去处理,后将结果原路返回到界面,具体步骤如下:
步骤1.采用开源jquery插件实现页面异步刷新能力,用户点击页面链接,框架自动向服务器端发起ajax请求,返回内容后将返回的内容填充到显示的区域;
步骤2.页面form表单通过onsubmit属性绑定自定义封装函数ajaxPost再由ajaxPost自动封装好form表单中的参数后调用jquery插件的ajaxForm函数,来实现异步提交功能;
步骤3.页面删除操作则绑定自定义封装函数ajaxDelete,后续由ajaxDelete函数内部处理提交及提示工作;
步骤4.页面加载完成后所有的a链接,将自动绑定hashchange事件,绑定所有不在新窗口打开的a链接,当链接的href属性和hash值一样时触发hashchange事件,以确保所有的链接请求都将以ajax的形式发送请求,请求成功则将更新到指定区域显示,失败tip提示失败信息;
步骤5.为支持地址栏直接输入地址框架也能执行异步刷新AJAX动作,页面第一次加载时,地址栏url自动在功能模块前加“#”号,用以区分功能模块;
步骤6.安装项目中需要用到的开发语言解析容器,后续随之扩展增加;
步骤7.后端服务器采用nginx来识别开发语言,nginx根据url相对应的开发语言分发到对应的应用服务容器,开发语言识别分为两种,一种通过url后缀,另外一种通过特定模块名称;
步骤8.框架提供统计的权限控制接口,各语言开发模块统一调用框架的权限接口,来控制操作权限,具体处理流程如下:
1)、在数据库表t_accessrights中增加字段access_type,access_type的值为1时为php开发,access_type的值为2时为其他语言开发,如果为2,access_link需要设置为完整的地址;
2)、系统根据access_type的值建立相应的菜单项url+:
access_type的值为1:url+保持跟现有一致;
access_type的值为2:url+生成规则为:
xxx.100msh.com/[java|python]/?p=xxx其中p的值为:access_id与access_token在t_adm_access_token表中加密处理后的值;
3)、其他语言处理方式
代码头部增加鉴权判断,访问
xxx.100msh.com/[java|python]/?p=xxx时,根据p的值进行鉴权,鉴权接口为:
http://[auth].cgi?p=xxx,返回结果为:
返回true:表示鉴权成功,可以正常访问这个功能;
返回false:表示鉴权失败,提示没有访问权限;
4)、鉴权接口说明:
接口对收到的p参数,进行解密,解析出access_id与access_token,根据这两个参数鉴权算法如下:
(1)根据access_token找出当前登录的user_id;
(2)根据user_id找出这个user_id用户有哪些职位pos_id;
(3)判断职位pos_id是否有access_id权限,如果有:鉴权成功,否则鉴权失败;
步骤9.模块开发完成后,配置好运行环境,只需要在框架功能权限菜单上增加功能项链接,即可使用新模块功能;
步骤10.当用户登录超时,框架会自动识别并跳出操作界面,回到登录界面提示用户登录。
CN201610214954.1A 2016-04-07 2016-04-07 一种跨代码语言的开发框架 Expired - Fee Related CN105760181B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610214954.1A CN105760181B (zh) 2016-04-07 2016-04-07 一种跨代码语言的开发框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610214954.1A CN105760181B (zh) 2016-04-07 2016-04-07 一种跨代码语言的开发框架

Publications (2)

Publication Number Publication Date
CN105760181A CN105760181A (zh) 2016-07-13
CN105760181B true CN105760181B (zh) 2020-03-17

Family

ID=56333720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610214954.1A Expired - Fee Related CN105760181B (zh) 2016-04-07 2016-04-07 一种跨代码语言的开发框架

Country Status (1)

Country Link
CN (1) CN105760181B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783197A (zh) * 2019-01-18 2019-05-21 北京百度网讯科技有限公司 用于程序运行时环境的调度方法和装置
CN113254914A (zh) * 2021-04-24 2021-08-13 中电长城网际系统应用广东有限公司 基于可视化展示的前后端同步管理方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101155030A (zh) * 2006-09-29 2008-04-02 维豪信息技术有限公司 基于注册鉴权的网络资源整合访问方法
CN102043798A (zh) * 2009-10-14 2011-05-04 上海通路快建网络服务外包有限公司 表单提交流程控制方法及其装置
CN103166916A (zh) * 2011-12-12 2013-06-19 深圳市金蝶中间件有限公司 页面更新方法及系统
CN103747015A (zh) * 2014-01-26 2014-04-23 中国科学技术大学苏州研究院 基于Web的泛在资源鉴权控制方法
CN104320458A (zh) * 2014-10-24 2015-01-28 国家电网公司 基于Domino和Nginx服务器实现的信息化系统
CN104469477A (zh) * 2014-11-28 2015-03-25 广东欧珀移动通信有限公司 媒体资源推送方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101155030A (zh) * 2006-09-29 2008-04-02 维豪信息技术有限公司 基于注册鉴权的网络资源整合访问方法
CN102043798A (zh) * 2009-10-14 2011-05-04 上海通路快建网络服务外包有限公司 表单提交流程控制方法及其装置
CN103166916A (zh) * 2011-12-12 2013-06-19 深圳市金蝶中间件有限公司 页面更新方法及系统
CN103747015A (zh) * 2014-01-26 2014-04-23 中国科学技术大学苏州研究院 基于Web的泛在资源鉴权控制方法
CN104320458A (zh) * 2014-10-24 2015-01-28 国家电网公司 基于Domino和Nginx服务器实现的信息化系统
CN104469477A (zh) * 2014-11-28 2015-03-25 广东欧珀移动通信有限公司 媒体资源推送方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
使用jquery发送Ajax请求;John_Venn;《https://blog.csdn.net/John_Venn/article/details/50383226》;20151222;第1页-第2页 *
关于form表单提交ajaxForm和ajaxSubmit的用法与区别;最天才;《http://www.cnblogs.com/xiaosama/p/4747848.html》;20150821;第1页-第3页 *

Also Published As

Publication number Publication date
CN105760181A (zh) 2016-07-13

Similar Documents

Publication Publication Date Title
EP3593254B1 (en) Editing a database during preview of a virtual web page
US11163851B2 (en) Method, apparatus, computer device and storage medium of page displaying
Subramanian et al. Hands-On RESTful API Design Patterns and Best Practices: Design, develop, and deploy highly adaptable, scalable, and secure RESTful web APIs
CN111026470B (zh) 用于输入数据的验证和转换的系统和方法
EP3011442B1 (en) Method and apparatus for customized software development kit (sdk) generation
CN105940654B (zh) 特权静态被托管的web应用
CN102597993B (zh) 利用统一资源标识符管理应用状态信息
US10725625B2 (en) Displaying webpage information of parent tab associated with new child tab on graphical user interface
US11070648B2 (en) Offline client replay and sync
US8543869B2 (en) Method and system for reconstructing error response messages under web application environment
CN106897251B (zh) 富文本展示方法及装置
CN105793862B (zh) 动态程序在隔离环境中的受指导执行
CN103838558B (zh) 网站建站系统及方法、访问网站的方法及网页适配系统
CN108173875B (zh) 页面登录方法及装置、电子设备、存储介质
CN112328342B (zh) 基于在线文档的待办事项处理方法及装置
CN112988599B (zh) 一种页面调试方法、装置、电子设备和存储介质
CN110213105A (zh) 一种跨平台微应用创建方法
CN105760181B (zh) 一种跨代码语言的开发框架
US20130124971A1 (en) Real time web script refresh using asynchronous polling without full web page reload
CN110909290A (zh) 多个系统组合成大型单页应用的方法和系统
US9436669B1 (en) Systems and methods for interfacing with dynamic web forms
CN117850771A (zh) web服务的业务应用开发平台、方法及存储介质
US20140283080A1 (en) Identifying stored vulnerabilities in a web service
US20160070564A1 (en) Dynamically schematized log messages for software applications
CN116346660A (zh) 基于依赖替换服务的数据处理方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200317

Termination date: 20210407