万事通生活网

导航菜单



当前位置: 首页  /  科技  /  正文

国内低代码平台有哪些?

阅读:51

国内低代码平台有哪些?

自荐一波:织信Informat(企业级低代码开发平台)

深圳市基石协作科技有限公司是一家专业为企业提供一站式低代码解决方案的科技公司。公司通过独立研发的织信Informat低代码平台为企业提供可视化的应用开发环境,降低企业应用开发成本,助力企业通过低成本、高效率、一站式的方式实现数字化转型升级。

织信团队在软件行业深耕十余年,大型企业项目经验丰富,涉及金融、电商、教育、地产、政府、互联网、物流及新能源等10+主流行业。丰富的数字化实施经验再配合织信强大灵活的自定义拓展能力,可轻松满足多个行业、多个场景的企业数字化需求。


织信Informat低代码的特点

(1)零成本起步:所见即所得,信息化战略灵活调整;

(2)灵活调整:即改即用,快速适应市场变化;

(3)快速上线:想法立现,用实践检验效果;

(4)全员参与:数字化不再只是决策者的口号;

(5)私有化部署:将重要数据部署在本地,最大程度保证企业信息安全;

(6)国产化适配:兼容多个国产CPU、操作系统、中间件、数据库;

(7)超强应用配置能力:38种字段类型、12种数据视图、28种图表卡片、19种角色权限、10余种工具插件(具备极细颗粒单元组件,轻松满足多行业、多场景数字化需求);

(8)灵活拓展:自动化(低门槛的图形化编程工具)、脚本(传统代码编写工具)、网站(应用程序一键托管发布)。


织信Informat低代码解决的问题?

1、消灭信息孤岛,从数字化战略上与业务强关联


2、产生能力转移,让业务与IT认知一致


3、提升采购价值,平台能力持续产生效应


4、统一技术平台,提升开发效率



织信Informat低代码核心定位

1、大型企业:低代码可以帮助其快速实现自建生态,在企业需求过剩的情况下,也能成为企业级的研发工具,帮助其高效开发应用,还能配合企业实现多个系统之间的集成,成为真正的数据中台。

2、中型企业:专注解决企业数字化死角(就是以前系统管理不到的地方),通过高效率的开发方式全面企业的个性化需求。

3、小微企业:提供成熟专业的行业通用系统,无论是ERP,还是MES,或者是OA、CRM、OKR、项目管理等系统均可在较短的时间内实现上线。


总结:毋庸置疑,低代码开发平台适用于各行各业企业的每一个阶段,通过低代码开发软件的解决方案,能解决大量的业务问题。所以合理并且有效地运用低代码开发平台,不仅可以让我们工作高效地运行,还能最大程度保证团队目标的达成。我推荐织信Informat,它内置了100+的应用模板,覆盖OA、ERP、CRM、绩效、人事、企业服务、个人及组织等多个应用场景,支持试用。

给大家推荐一款国内低代码平台,它是专注私有化、组件定制的快速开发平台JVS。

JVS是面向软件开发团队可以快速实现应用的基础开发框架,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容器化构建,集合持续化构建。

技术栈说明:

部分截图展示:

登录页面


在线demo:http://frame.bctools.cn/

仅个人用过的平台有JNPF快速开发、简道云。

简道云平台(零代码开发平台),非常适合没有开发团队的中小企业。开发场景相对简单,业务逻辑标准,简单云以表单驱动,可快速搭建企业内部工作流工具,没有什么开发灵活性,企业需要适应简道云低业务逻辑,为了后期开拓更复杂的业务需求,我司pass了这一款。

引迈的JNPF平台(低代码开发平台),因为公司用的是这一款,会比较熟悉一点。商业授权采用的是全源码交付,这在市面上不多见,价格经济,没有产品捆绑消费,私有化部署、K8s、多租户、单点登录均支持。后期也可以再次二次开发,适合有开发人员的企业用。

最佳的低代码“规则引擎”平台,即低代码配置平台

一 、什么是低代码开发平台

许多企业都在问,我们的低代码规则引擎平台是什么样的,这里和大家一起分享我们对规则引擎的理解心得。“低代码开发平台”指的是一种快速开发应用软件的系统,用户通过少量代码即可以快速构建出OA协同、MES系统、ERP系统、CRM、项目管理、采购管理、生产管理、供应链管理等一系列职能类和业务类管理系统。适合业务人员、IT开发及其他各类人员使用的数字化开发平台,它可以快速构建应用,并适应企业的各种需求变化,用户在几天甚至几个小时内 就能完成系统的开发、测试和部署,并能够 随时调整或更新。

低代码开发平台出现后,虽然减少了开发人员大量敲代码的时间,但市面上仍有较多低代码开发平台的效果并不是特别理想,例如平台的集成性受限制、复杂业务场景难实现等。

项造营自主研发的低代码”规则引擎”, 是目前最先进的软件快速开发方式之一,只需在开发后台进行配置,即可完成软件开发的过程,由于过程中没有生成或修改底层源码,平台可以统一维护和升级,轻松实现复杂的业务逻辑。

我们把低代码平台分成不同的工具(单据配置,流程配置,权限配置,报表配置,集成配置,业务组件等),工具与方法相互配合,即:工具+方法论=成果目标

二 、低代码可以实现

二 、低代码“规则引擎”的价值

可视化操作,无需开发编辑工具,不用从零开始,容易上手;即配置即验下证。

我们制定的规则引擎是根据一些算法执行规则的一系列软件系统。规则引擎整合了传入系统的输入集合和规则集合,从而去触发一个或多个业务操作。规则通常以声明式的方式在业务代码中实现,我们可能以为它很少会被改变。但事实上,这些业务逻辑的判断条件经常会被改变。

项造营的业务逻辑或规则,通常是可以表示为“在某些条件下,执行某些任务。在拥有大量规则和字段对象的业务系统中,可能会出现多个字段的输入都会导致同样的输出,这种情况我们通常称作规则冲突。规则引擎可以采用不同的冲突解决方案来确定冲突规则的执行顺序。同时规则还能进行复用,即A规则可能会被其它规则引用,减少规则复用性。

三、规则引擎的优势

软件使用规则引擎可以给系统带来如下优势:

高灵活性:将规则保存在知识库中,可以在规则变动轻易做出修改。

容易掌控:规则比过程代码更易于理解,因此可以有效地来弥补业务分析师和开发人员之间的沟通问题。

降低复杂度:在程序中编写大量的判断条件,很可能是会造成一场噩梦。使用规则引擎却能够通过一致的表示形式,更好的处理日益复杂的业务逻辑。

可重用性:规则集中管理,可提高业务的规则的可重用性。而且,传统的代码程序通常会添加不必要的变数,很难进行重复利用

案例:项造营的项目管理产品是基于规则引擎进行配置,包括项目全生命周期的管理,以及与外部系统的集成:金蝶,用友分享销客,钉钉考勤机,实现业财一体化项目信息化管理。

随着低代码概念的火热,相关的技术及产品也是层出不穷,不管是老牌行业软件厂商还是开放平台厂商,不论是互联网行业企业SAAS软件新动向还是新兴的低代码创新产品服务,都在第一时间打出了低代码这张牌。各个平台虽然各有优势,但大多又是自成体系,真正在企业方面进行选择时却一时难以抉择。对于低代码平台的功能评价,以及各平台组件间的互联互通则成为了市场上迫切需求。

在刚刚过去的2022年,在平台互联互通的方面,阿里在第二季度推出开源引擎 “LowCodeEngin”,国家队信通院也应市场需求在第四季度推出了《低代码开发平台通用技术要求》,针对低代码相关概念以及功能点新型了进一步的规范和梳理。

在全面开放的大背景下,CodeBee团队,推出了基于开源LGPL协议 低代码引擎(LowCodeEngine)。

二,产品组成

低代码引擎,由界面设计器、OneCode通码框架以及,DSM领域建模工具 三部分支撑体系相互支撑的部分来组成,通过开放标准的组件协议完成相互继承支持。

(1) 视图设计器引擎

设计器,采用的是拖拽引擎+插件的构造模型,用户可以通过开放的低代码协议编写插件。支持JS和JAVA两种扩展语言。样式构建提供了标准CSS3编辑器,支持事件动作以及函数动态扩展。支持自定义函数库扩展,支持阿里字体图片等资源库。


(2)OneCode通码编辑器:

OneCode,是一款为低代码语言定制的统一语法体系,采用Java语言作为原生语言,运行在JVM环境中,用户可以通过Java语言与低代码应用进行交互,也可以通过Java语言完成引擎插件,调用代码引擎完成编译部署应用。

(3)DSMEngine领域建模:

DSMEngine 是独立于设计器的OneCode建模工具,平台采用领域建模模型,支持仓储管理、聚合应用,以及CodeFactory输出为OneCode代码编译输出。


DSM模型支持三种建模模式:

(1)CodeFrist 代码优先模式

通过Java语言 OneCode 模式原生撰写。

(2)ViewFrist 视图优先

通过视图引擎拖拽完成前期的交互模型,反向完成DSM模型。

(3)ModuleFrist 模型优先

通过数据库,微服务接口等模式,构建基础模型。

DSM逆向转换

通过不同方式完成的DSM模型,可以通过OneCode 在视图、Code 、以及Module 三种方式之间自由切换,利用相关工具完成仿真调试以及部署运行。

DSM第三方语言转换

DSM出码模块采用了独立的模板架构,除了可以以OneCode形式存在,还可以支持独立的出码模块定制独立的第三方语言模型输出。


三,设计器引擎介绍

(1)功能概览

(2)设计器布局

设计器引擎是低代码引擎前端的SDK,面向开发人员,他本身不是一套可以适应所有人的低代码平台,而是技术开发人员可以通过扩展插件,周边生态,完成自身业务的定制,实现协同办公,CRM客户管理、物联网平台等通过低代码能力赋能业务系统

(3)物料库


"物料":低代码引擎的核心目的之一是建设跨行业的低代码框架,而每个行业由于其应用的领域不同,使用的人员以及方法方式不同,在一些底层组件方面会有会有加大差距。比如:政府业务中会大量使用的非规则表单元素,企业应用中各个行业自有的图标体系,物联网行业大量的设备图标图片以及实时联网图。

(4)组件库

组件定义:可以用于低代码平台的组件,包含了搭建体验增强配置,可以在设计器中 进行拖拽、配置等操作。有两种分类方式:按照场景可以分为基础组件、业务组件、图 表组件、布局组件和复合组件等。通常用户可以自主完成相关设定,并根据业务特点在视图引擎中进行自行扩展(后续章节中会演示实际注册示例)


组件通常是一组完成特定功能的可交互组件,根据不同的引擎模式,在引擎中完成加载渲染配置。

配置示例


Code转换

组件调试导入

(5)支撑管理

公共资源导入

(6)样式体系

DOM树透视样式盒

DOM树透视

添加图片注释,不超过 140 字(可选)

配图示例代码

{ "alias":"BuildTreeTreeView", "key":"xui.UI.TreeView", "host":this, "properties":{ "name":"BuildTreeTreeGrid", "items":[ { "borderType":"none", "caption":"JAVA树", "dynDestory":false, "hidden":false, "id":"getBuildTree", "imageClass":"bpmfont bpmgongzuoliuxitongpeizhi", "tagVar":{ } } ], "iniFold":false, "dynDestory":true }, "CS":{ "KEY":{ "color":"#000000", "font-weight":"lighter", "border-radius":"0px 2px 0px 0px" }, "BAR":{ "font-family":"tahoma,geneva,sans-serif" } } }


动态样式盒

添加图片注释,不超过 140 字(可选)


代码配置示例

{ "alias":"xui_ui_cssbox1", "key":"xui.UI.CSSBox", "host":this, "properties":{ "className":"xui-css-ame", "normalStatus":{ "color":"#eeeeee", "border-radius":"6px", "box-shadow":"inset 0px 1px 0px #87C1DD", "text-shadow":"0 1px 0 #297192", "$gradient":{ "stops":[ { "pos":"0%", "clr":"#4BA3CC" }, { "pos":"70%", "clr":"#3289B2" } ], "type":"linear", "orient":"T" }, "cursor":"pointer", "border-top":"solid #3899C6 1px", "border-right":"solid #3899C6 1px", "border-bottom":"solid #3899C6 1px", "border-left":"solid #3899C6 1px" }, "hoverStatus":{ "border-radius":"0px 3px 0px 0px" } } }

(7)事件框架


添加图片注释,不超过 140 字(可选)

配置代码示例:

{ "alias":"BuildTreeTreeView", "key":"xui.UI.TreeView", "host":this, "properties":{ "name":"BuildTreeTreeGrid", "items":[ { "borderType":"none", "caption":"JAVA树", "dynDestory":false, "hidden":false, "id":"getBuildTree", "imageClass":"bpmfont bpmgongzuoliuxitongpeizhi", "tagVar":{ } } ], "iniFold":false, "dynDestory":true }, "events":{ //获取数据 "onGetContent":{ "actions":[ { "args":[ "{page.ReloadChild.setQueryData()}", null, null, "{args[1].tagVar}", "" ], "desc":"设置扩展参数", "method":"setQueryData", "redirection":"other:callback:call", "target":"ReloadChild", "type":"control" } ] }, //数据项选择 "onItemSelected":{ "actions":[ { "args":[ "{args[1].id}" ], "conditions":[ { "symbol":"non-empty", "right":"", "conditionId":"_nonempty_{args[1].className}", "left":"{args[1].className}" } ], "desc":"删除存在页", "method":"removeItems", "target":"BuildTreeTab", "type":"control" } ] } } }

(8)动作调用

功能概览

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

配置实例代码:

{ "args":[ "{page.ReloadChild.setQueryData()}", null, null, "{args[1].tagVar}", "" ], "desc":"设置扩展参数", "method":"setQueryData", "redirection":"other:callback:call", "target":"ReloadChild", "type":"control" }, { "args":[ "{page.ReloadChild.invoke()}", "temp", null, "{args[2]}" ], "desc":"子节点装载", "method":"invoke", "redirection":"other:callback:call", "return":false, "target":"ReloadChild", "type":"control" } ] }

(9)插件体系

插件是嵌入到设计器的内置管理功能,不同于业务组件,插件更多的是系统极的扩展功能。在实际应用中也比较常见,如系统运行期我们要根据用户不同显示不同内容数据,这就需要权限插件来完成,而业务用户在使用过程也会涉及到大量的业务和数据的流转功能而这些功能则需要动态的来管理页面的属性,甚至动态生成注入页面。这就需要流程插件来辅助完成。 在实际开发过程中特别是真实项目的工程开发时,我们往往要针对工程方面的进行很多的宏操作比如批量的修改特定组件样式,按特定条件检索复制组件特性,自动添加动作等等。这些都需要类似的宏插件来完成,OneCode 在整合后端运行以及服务部署方面也是按插件体系来规范的。分别针对,DSM建模提供了DSM插件,发布管理及运行提供了OPS插件, API整合方面提供了代理服务器插件,系统插件部分采用全开源方式共有需要的用户自行修改方便用户后期可以参照插件体系来修改自身的插件体系。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)


四,OneCode中后台

OneCode 本身基于JAVA语言体系,是在Java Spring 注解基础上的一套扩展子集,可以在普通额Java程序中通过添加注解,来实现前后台与低代码引擎的交互处理。

(1)渲染原理

(2)示例展示

添加图片注释,不超过 140 字(可选)

(3)完整模块OneCode

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

@Controller @RequestMapping("/admin/org/person/") @MethodChinaName(cname = "人员管理", imageClass = "spafont spa-icon-login") @Aggregation(sourceClass = PersonService.class) public class PersonAPI { @RequestMapping(method = RequestMethod.POST, value = "Persons") @GridViewAnnotation() @ModuleAnnotation( caption = "人员列表") @APIEventAnnotation(autoRun = true, bindMenu = {CustomMenuItem.reload}) @ResponseBody public ListResultModel<List<PersonGridView>> getPersons(String orgId) { ListResultModel<List<PersonGridView>> resultModel = new ListResultModel<List<PersonGridView>>(); List<Person> personList = new ArrayList<>(); try { personList = getService().getPersons(orgId); resultModel = PageUtil.getDefaultPageList(personList, PersonGridView.class); } catch (Exception e) { e.printStackTrace(); } return resultModel; } @MethodChinaName(cname = "人员信息") @RequestMapping(method = RequestMethod.POST, value = "PersonInfo") @NavGroupViewAnnotation() @APIEventAnnotation(callback = {CustomCallBack.ReloadParent, CustomCallBack.Close}, bindMenu = {CustomMenuItem.editor}) @DialogAnnotation @ModuleAnnotation(caption = "编辑人员信息", width = "800", height = "550") @ResponseBody public ResultModel<PersonNav> getPersonInfo(String personId) { ResultModel<PersonNav> resultModel = new ResultModel<PersonNav>(); return resultModel; } @MethodChinaName(cname = "添加人员") @RequestMapping(method = RequestMethod.POST, value = "AddPersonView") @FormViewAnnotation @APIEventAnnotation(bindMenu = {CustomMenuItem.add}, autoRun = true) @Disabled @ModuleAnnotation( caption = "添加人员信息", width = "370", height = "260") @ResponseBody public ResultModel<AddPerson> AddPerson(String orgId) { ResultModel<AddPerson> resultModel = new ResultModel<AddPerson>(); CtPerson person = new CtPerson(); person.setOrgId(orgId); resultModel.setData(new AddPerson(person)); return resultModel; } @MethodChinaName(cname = "保存成员信息") @RequestMapping(value = {"savePerson"}, method = {RequestMethod.GET, RequestMethod.POST}) @APIEventAnnotation(callback = {CustomCallBack.ReloadParent, CustomCallBack.Close}, bindMenu = CustomMenuItem.save) public @ResponseBody ResultModel<Boolean> savePerson(@RequestBody CtPerson person) { ResultModel<Boolean> userStatusInfo = new ResultModel<Boolean>(); getService().savePerson(person); return userStatusInfo; } @MethodChinaName(cname = "删除人员") @RequestMapping(value = {"delPerson"}, method = {RequestMethod.GET, RequestMethod.POST}) @APIEventAnnotation(callback = {CustomCallBack.Reload, CustomCallBack.ReloadParent}, bindMenu = CustomMenuItem.delete) public @ResponseBody ResultModel<Boolean> delPerson(String iD) { ResultModel<Boolean> userStatusInfo = new ResultModel<Boolean>(); getService().delPerson(iD); return userStatusInfo; } PersonService getService() { return EsbUtil.parExpression(PersonService.class); } } @PageBar // @GridAnnotation(event = CustomGridEvent.editor, customService = PersonService.class, customMenu = {GridMenu.Add, GridMenu.Delete, GridMenu.Reload}) public class PersonGridView { @CustomAnnotation(pid = true, hidden = true) String orgId; @CustomAnnotation(pid = true, hidden = true) String roleId; @CustomAnnotation(uid = true, hidden = true) String iD; @CustomAnnotation(caption = "用户名称", required = true) String name; @CustomAnnotation(caption = "账户信息", required = true) String account; @CustomAnnotation(caption = "邮箱") String email; @InputAnnotation(inputType = InputType.password) @CustomAnnotation(caption = "密码", required = true) String password; @CustomAnnotation(caption = "手机") String mobile; @CustomAnnotation(caption = "部门名称") String orgName; public PersonGridView(Person person) { this.iD = person.getID(); this.orgId = person.getOrgId(); this.name = person.getName(); this.account = person.getAccount(); this.password = person.getPassword(); this.mobile = person.getMobile(); this.email = person.getEmail(); Org org = null; try { org = OrgManagerFactory.getOrgManager().getOrgByID(person.getOrgId()); this.orgName = org.getName(); } catch (OrgNotFoundException e) { e.printStackTrace(); } } } @BottomBarMenu @FormAnnotation(bottombarMenu = {CustomFormMenu.Save, CustomFormMenu.Close}, customService = PersonService.class, col = 1) public class AddPerson { @CustomAnnotation(uid = true, hidden = true) String iD; @CustomAnnotation(caption = "用户名称", required = true) String name; @CustomAnnotation(pid = true, hidden = true) String orgId; @CustomAnnotation(pid = true, hidden = true) String roleId; @CustomAnnotation(caption = "账户信息", required = true) String account; @CustomAnnotation(caption = "邮箱") String email; @InputAnnotation(inputType= InputType.password) @CustomAnnotation(caption = "密码", required = true) String password; @CustomAnnotation(caption = "手机") String mobile; public AddPerson(Person person) { this.iD = person.getID(); this.orgId = person.getOrgId(); this.name = person.getName(); this.account = person.getAccount(); this.password = person.getPassword(); this.mobile = person.getMobile(); this.email = person.getEmail(); } }


(五)DSM建模工具

DSM建模,百度百科是这样定义的:

特定域建模Domain-specific modelingDSM),是一种设计和开发系统(如电脑软件)的软件工程方法学。它系统使用图形化特定域语言(DSL),表现系统的各个方面。DSM的语言倾向于支持比通用建模语言更高级别的抽象,因此需要较少的努力和更少的底层细节来描述特定系统。

低代码技术应用可以通过提供更强的工具,提升程序员的代码效率。但其本质上也是一种特定场景下的软件描述方法,这个层面上低码技术和DSM思想是有其相通相同之处的,产品在设计之初就将DSM建模语言的构建以及工具支撑作为了底层支撑设计,将应用中积累的建模应用采用DSM的思想进行重构整合在底层打通。

我们将现有的资源类的工具,统一到仓库应用中,包括统一的物料库导入,统一的数据源(数据库,外部存储)管理。并通代码工厂的辅助构建统一到Contenxt(OneCode)的当前环境技术模型中。在各个特定的业务模型中,完成独立的聚合实体整合,以及相应的服务管理,并为相关的方法模型透视管理服务。在OneCode 的基础之上,摆脱传统的 代码模板与生成机制。实现代码向模型的逆向能力。将DSM设计能贯穿整个项目开发实施管理过程,打造结余真实的代码之上的建模语言。

(1)仓储建模

(2)聚合应用

(3)视图工厂

(4)支撑域


添加图片注释,不超过 140 字(可选)

(5)流程建模

添加图片注释,不超过 140 字(可选)

六,应用集成

(1)内核最小集合集成(JS离线应用)

设计器内核完全采用JS脚本完成,是独立的前端框架。内核版本包括:RAD 页面设计编辑器,xui运行运行脚本两部分。

添加图片注释,不超过 140 字(可选)

最小集合仅包含,页面设计及器以及插件框架。

设计界面集成:

下载开源包后,运行debug.html 即可打开编辑器。

添加图片注释,不超过 140 字(可选)

集成到自由应用时只需要,引入两个关键的js lib包即可集成到自有的应用。

<script type="text/javascript" src="/RAD/xui.js"></script> <script type="text/javascript" src="/RAD/index.js"></script> <script type="text/javascript"> var lang = (function () { var dft = 'zh-cn', map = { 'en-us': 'en', 'zh-cn': 'cn' }, n = navigator, l = (n.language || n.browserLanguage || '').toLowerCase(); return map[l] || map[dft]; })(); xui.include("xui.Locale." + lang + '.doc', "/RAD/Locale/" + lang + ".js", function () { xui.Module.load('RAD', function () { SPA = this; }, lang); });

运行支撑环境集成:打开:


设计完成的文件再应用环境中引入如下代码即可

<script type="text/javascript" src="/xui/js/xui-all.js"></script> <script type="text/javascript" src="./xuiconf.js"></script> <script type="text/javascript" src="/xui/Locale/cn.js"></script>

(2)团队协作版

团队协作版是独立的服务器部署版,在官网上申请账号后,可以在独立的服务器上运行。启动后通过浏览器访问 http://demoserver:83 用管理员 sysadmin 登录:


首次登录 会进入默认的工程配置界面


配置工程


关联API


设定团队管理员

标签

国内代码平台


相关文章列表

国外有很多低代码开发平台,国内有类似的平台吗?

国外有很多低代码开发平台,国内有类似的平台吗?

随着低代码概念的火热,相关的技术及产品也是层出不穷,不管是老牌行业软件厂商还是开放平台厂商,不论是互联网行业企业SAAS软件新动向还是新兴的低代码创新产品服务,都在第一时间打出了低代码这张牌。各个平台...


为什么感觉国内程序员都很少进行代码重构?

为什么感觉国内程序员都很少进行代码重构?

为什么国内程序员都没有或很少进行代码重构?至少在我呆过的几家公司是这样的,一些资历深的也是这样,更甚是不格式化。 都是些快销产品,重构啥?!上家公司有一个活生生的例子,有一个历史遗...


做国内电商应该从哪个平台开始?

做国内电商应该从哪个平台开始?

主要电商平台该,阿里系的三个:阿里巴巴(1688),天猫,淘宝。京东,苏宁易购,唯品会等。后面两个份额站的不多,咱就不说了,只说前三个吧。BtoB平台只有阿里巴巴(1688)值得做,是企业对企业的,不...


你认为国内最看好的十部谍战剧有哪些,会怎么排名?

你认为国内最看好的十部谍战剧有哪些,会怎么排名?

《对手》真不错其它千篇一律,换汤不换药。20年内评分最高的十部谍战剧,《悬崖》第八,第一,堪称谍战巅峰。第十名、《胜算》《胜算》这部由谍战教父柳云龙的监制和主演剧,本来我对此寄予厚望。可惜正如它海报上...


Seewo希沃:领导中文数字教育的品牌巨头

Seewo希沃:领导中文数字教育的品牌巨头

一次去女儿学校开家长会,看到小学里面用的已经不是传统写粉笔的黑板了,而是一个巨大的智能交互平板。中间好像是一个电脑屏幕,可以显示老师做好的ppt,可以触屏翻页,可以播放视频和音频节目。如果把屏幕关闭的...


马航不满,亚航平台难以实现

马航不满,亚航平台难以实现

国人熟悉的“亚洲航空”疫情期间曾做出战略调整,它将母公司的名字改成了“Capital A”。托尼老师的这一战略举措之目的,是要向“多元化”进军。也就是不只卖机票,还要做OTA;不仅搞航空,还要搞旅游!...


友情链接