创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利。借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单。[文中的例子可以从这里下载]目录 二、创建自定义的Generator 三、ProcedureGenerator如何被使用?一、多文件代码生成器会带来多大的便利?我们先来直观的感受一下较之《上篇》提供的单一文件的代码生成器,基于多文件的代码生成解决方案会为开发人员带来多大的便利。 同样对于《上篇》创建的数据表T_PRODUCT,之前我们为了生成三个不同的存储过程,我们不得已需要创建3个不同的T4模板文件。实际上我们更需要的方式只需要创建一个T4模板,让我们的SQL Generator自动为我们生成3个包含相应存储过程的.sql附属文件,如左图所示(点击看大图)。有的时候,基于单个数据表的存储过程生成方式我们依然觉得不方便。如果我们能够在T4模板文件中指定的数据表的列表,让我们的SQL Generator为列表的每一个数据表都生成CUD三个存储过程,这样的方式更加具有吸引力。如右图所示(点击看大图),一个订单模块包含两个具有主子关系的两张表(T_ORDER和T_ORDER_DETAIL),现在我们在一个T4模板中指定这两个表明,通过SQL Generator可以帮助我们生成6个包含存储过程的.sql附属文件。甚至有的时候我们连数据表列表都无需指定,让SQL Generator为所有的表都生成相应的存储过程。我的例子中没有提供这样的功能,但是实现自来不会存在任何问题。二、创建自定义的Generator在《上篇》中我创建了一个抽象的ProcedureTemplate类,以及三个基于生成CUD存储过程的具体ProcedureTemplate:InsertProcedureTemplate、UpdateProcedureTemplate和DeleteProcedureTemplate。它们都将直接服务于我们今天将要提供的基于多文件的SQL Generator。在《上篇》中,这四个Template分别定义在4个不同的TT文件中,3个具体的ProcedureTemplate通过#@include指令将抽象ProcedureTemplate模板文件包含过来。由于我们将要创建的T4模板将会使用到这四个类,如果我们用四个#@include指令将四个TT文件包含过来,由于T4引擎将会导致对ProcedureTemplate的4次包含,最好将会导致变异问题。个人觉得这应该算是T4引擎解析包含关系的一个局限性,为了解决这个问题我们不得不抽象的ProcedureTemplate和三个具体的ProcedureTemplate都合并成一个TT文件。T4 ToolBox为类库中为了提供了一个抽象的T4Toolbox.Generator类用于实现多文件的代码生成。为此我们创建一个TT模板文件,定义了如下一个继承自该类的ProcedureGenerator。ProcedureGenerator的核心是通过属性Templates定义的类型为IEnumerableProcedureTemplate的ProcedureTemplate列表,这个列表在存储过程中进行初始化。而对于ProcedureGenerator的构造函数,处理定义了一个表示数据库连接字符串的databaseName的参数外,并以数组参数的形式指定了生成的存储过程基于的数据表名的列表。#@ import namespace="System.Collections.Generic" ##@ include file="ProcedureTemplate.tt" ##@ include file="T4Toolbox.tt" ##+publicclass ProcedureGenerator : Generator{public IEnumerableProcedureTemplate Templates{get; private set;}public ProcedureGenerator(string databaseName, paramsstring[] tableNames) {if(null == tableNames || tableNames.Length == 0) {thrownew ArgumentNullException("tableNames"); } this.Templates = InitlizeTemplates(databaseName,tableNames); }private IEnumerableProcedureTemplate InitlizeTemplates(string databaseName, string[] tableNames) { foreach(string tableName in tableNames) {yieldreturnnew InsertProcedureTemplate(databaseName, tableName);yieldreturnnew UpdateProcedureTemplate(databaseName, tableName);yieldreturnnew DeleteProcedureTemplate(databaseName, tableName); } }protectedoverridevoid RunCore() {foreach(ProcedureTemplate tempalte inthis.Templates) { tempalte.RenderToFile(tempalte.GetProcedureName() + ".sql"); } }}#真正的存储过程的T-SQL脚本实现在重写的RunCore中。由于具体的文本转化逻辑都定义在了ProcedureTemplate中了,所以在这里我们需要遍历的ProcedureTemplate集合中每一个Template对象,调用RenderToFile方法将相应的存储过程的脚本写入以存储过程命名同名的.sql文件中。三、ProcedureGenerator如何被使用?我们最后来看看我们创建的ProcedureGenerator最终如何被应用于具体的代码生成。其实很简单,我们只需要创建相应的模板文件,通过#@include将定义ProcedureGenerator类的TT文件包含近来,最后以代码语句调用块(#StatementCode#)的形式实力化该对象,并调用Run方法即可。在构造函数中指定数据库连接字符串的名称和数据表名的列表。下面是基于但表的T4模板。#@ template language="C#" hostSpecific="true" debug="true" ##@ include file="Templates\ProcedureGenerator.tt" ##new ProcedureGenerator("TestDb","T_PRODUCT").Run();#下面是基于多表的T4模板:#@ template language="C#" hostSpecific="true" debug="true" ##@ include file="Templates\ProcedureGenerator.tt" ##new ProcedureGenerator("TestDb","T_ORDER","T_ORDER_DETAIL").Run();#当你代码生成工作执行之后,会多出一个与TT文件同名的附属文件,你需要手工删除掉它。从数据到代码——通过代码生成机制实现强类型编程[上篇]从数据到代码——通过代码生成机制实现强类型编程[下篇]从数据到代码——基于T4的代码生成方式
谁有制作网站的代码生成器啊?
这个太多了
最常用的就是frontpage(office自带的软件),以及Dreamweaver(现在最流行的网页制作软件),最简单的制作软件就是用word来生成,就是在word里做好后,点击文件里的另存为网页(有些版本的word是另存为web页)。
这些软件市面上都有,自己买去吧
从网上下也多得很
谁有好用的工作流软件?最好带有代码生成器
以前一直在想如何构建一个灵活的OA工作流机制,可能开始有很多人用domino来做,后来到了ASP.NET的时候,好像大家都醒悟了,公司老板、CTO等都开始嚷嚷要上工作流引擎实现企业信息审批流程化。
基于企业的实际需求,公司也在近几年开发了标准企业级的工作流引擎(learun),并获得了双软认证,总体采用拖拽式设计,配合代码生成器,通用业务流程代码量接近于零,各项指标及客户反映都不错,其基本思路如下:
首先定义每个操作,就是定义流程步,定义流程步主要包括:操作的接口地址、操作参数、操作类型(起始操作、中间操作等)。定义操作的目的是接着为每个操作设置关系和定义流程时选用这些定义好的操作步。
第二定义操作的参数,有了接口地址外,还需要定义操作参数。
第三是定义操作步之间的关系。就是定义一个流程中每个操作步的前驱、后继的操作步。
第四是定义流程了,必要的信息是流程名称等基本信息和定义流程的各个操作步以及流转规则。流程基本信息就不用说了。流程步定义比较复杂,设置定义步骤类型(起始、中间、终结),入口步骤、出口步骤、通知模式、人员、角色、发送通知的内容。
第五是涉及跳步情况的定义,比如需要根据参数的不同提交到不同的步骤进行审批,这里叫做流程步骤变迁规则设置。设置的内容需要:原步骤、目标步骤、变迁方向(正/负)、条件规则(判断参数时用与还是用或)。接着设置参数和参数值及比较条件。
第六是授权管理。这个比较简单了,判断被提交的人是否处于授权状态,从而进行授权处理。
以上所说只是基础逻辑,实际编写过程中还要考虑各企业的实际情况,learun框架内置的工作流引擎,集合了各行业客户意见与建议,适用性强,稳定性高,使用便捷,欢迎体验指正。
有哪些生成前端代码的神器呢?
在前端开发的过程中,很多相同的代码会写很多遍。如:开始新项目的时候,要写和旧项目类似脚手架代码;新建一个组件的时候,要按约定写组件结构。如果这些重复代码能用工具来生成,能提升前端的开发效率。
生成代码的工具分为两类:基于命令的和基于图像界面的。
基于命令的工具的优点是,可配置高,效率快。缺点是,可发现性差。适合配置项目很多,配置可以组合的情况。
基于图像界面的优点是,可发现性强,操作简单。缺点是如果配置项很多,容易变得很难用。
罗嗦了一堆,下面开始介绍正题。
项目脚手架代码生成工具
项目脚手架主要做的项目的构建流程,环境的配置等。做到开箱即用。
基于命令的
yo 曾经流行过的一个脚手架生成工具。支持定义脚手架内容。基于 yo 的第三方脚手架也很多。
vue-cli 。 Vue 项目脚手架。支持自定义脚手架内容,感兴趣的可以读读 从vue-cli源码学习如何写模板。
create react app React 脚手架。比较轻量级,只是整合 webpack 和 react-router。
react boilerplate React 脚手架。比较重量级,整合了webpack 和 react router, redux, redux suga, reselect 等。
基于图形界面的
定制 Bootstrap 3
组件代码生成工具
基于命令的
react boilerplate 的 nam run generate 可生成组件的脚手架代码。
页面代码生成工具
基于命令的
代码编辑器的代码片段(Code Snippent)功能。主流的代码编辑器(Sublime,Atom,VS Code,Web Strom等) 都支持代码片段。也有写好的代码片段的编辑器插件。主流的框架基本都有对应的代码片段工具。
Emmet 提供 HTML,CSS,JS 的自动补全功能。
Bootstrap 3 Snippets
Vuejs Snippets
基于图形界面的
H5营销页面生成工具。有一大堆。
Maka
初夜
兔展
GrapesJS 强大的网页生成器。开源。
LayoutIt 托拽 Bootstrap 组件,生成页面。
动软代码生成器生成的代码怎么用
动软代码生成器 是一款为程序员设计的全功能自动代码生成器,也是一个智能化软件开发平台,它可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。主要实现在对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、Model类构造等基础代码片断,支持不同架构代码生成,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发。新版本中除了程序集组件模板,也同样支持用户自定义文本模板,像写ASPX代码一样写模板,一键代码生成,更方便,更灵活。
动软让软件开发变得轻松而快乐!让企业不断提升开发效率,同样的时间创造出更大的价值。
介绍一款最好的代码生成器《中文版》
office里面的一个专做网页的程序:
FrontPage
,就这个,你将整个网页不用代码的情况下做好后,可以转为代码,也可以半个屏幕是代码,而另一半是网页的预览!
代码生成器是干什么用的,谁用过
代码生成器是按照特定编码规范输出代码的软件,可以直接生成项目,也可以单页生成
比如动软,生成项目可以选择vs版本的,其实嘛,动软挺垃圾的,不如你去学学orm框架,很简单的,比动软的三层好得多
有什么增删改查代码生成器可以推荐?
自动化开发工具,我用过,比较著名的有普元,浪潮楼上平台等。 首先,我要纠正下,ANT并不是自动生成代码用的工具; 那些所谓的自动代码生成器根本原理就是根据实现写事先好的模板,再根据你提供的数据库结构,生成一系列的增删改查方法。的确是可以减少程序员的工作量,但是不能包含复杂或者特殊的业务逻辑,否则程序员全都失业了。