注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞天心宏的博客

依稀旧梦似曾见,相逢只恨缘太迟

 
 
 

日志

 
 
关于我

出身数学,爱好文学,从事软件开发工作。一个阳光、幽默、热爱生活的男孩子,在追求理想的路上风雨无阻,勇往直前,崇尚“梦想有多远,我们就走多远”!

网易考拉推荐

如何:利用T4模版自动生成Extjs4MVC架构的Model代码  

2012-02-23 09:54:28|  分类: Extjs4 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

概要:

本文讲述如何利用T4模版自动生成使用Extjs4MVC架构的ModelJS代码。

关键词:T4模版、Extjs4MVCModel自动生成

在日常项目开发中,使用T4模版(Text Template Transformation Toolkit)来有针对性地生成部分代码,对开发人员来说是个不错的选择。在此,我不对T4进行介绍了,如有兴趣可以参考:http://www.olegsych.com/2007/12/text-template-transformation-toolkit/

Extjs4有关MVC的架构请参考官方文档“The MVC Application Architecture”:http://www.sencha.com/learn/the-mvc-application-architecture/

一个比较常用的Model代码类似如下:

Ext.define('CVMS.model.CaseInfo', {

    extend: 'Ext.data.Model',

    idProperty: 'FID',

    fields: [

        "FID",

                   "FCASENUMBER",

                   "FACCEPTEDNUMBER",

                   "FCASETYPE",

                   "FCASEDATE",

                   "FCASEADDRESS",

                   "FVICTIM",

                   "FFEATURES",

                   "FOTHERTRACE",

                   "FSUMMARY",

                   "FCASERESULT",

                   "FISDEL",

                   "FOPERATOR",

                   "FOPERATORTIME",

                   "FCURRENTCODE",

                  "FCURRENTNAME",

                   "FALLMEDIASSIZE",

                   "FPICTURESCOUNT",

                   "FMEDIASCOUNT"

    ]

});

这段代码看起来非常简单,fields配置项为属性集合。但是如果某个实体的字段特别多的话,那写起来也挺无聊,挺没趣的。这样的代码自动生成是最好不过了,T4模版应付这种可谓是小菜一叠,基础中的基础。

下面来看一下具体的生成步骤:

1.         在某个项目下或其一个文件夹下,右键点击“新建项目”

2.         在“添加新项目”对话框的“已安装的模版”窗格中,选择T4模版“tangible T4 Editor”,然后对应右边选择一个空白的T4模版,保存的名称自己随便取,但后缀名为.tt 。如下图所示:

如何:利用T4模版自动生成Extjs4MVC架构的Model代码 - 飞天心宏 - 飞天心宏的博客 

注:如果发现在已安装的模版未找到T4模版,请自行下载一个安装。

 

3.         把默认的代码清空,然后写我们自己的代码:

<#@ template debug="true" hostSpecific="true" language="C#" #>

<#@ output extension=".js" #>

<#@ import namespace="System.Reflection" #>

<#@ assembly name="$(SolutionDir)\CVMS.WebSites\bin\CVMS.Model.dll" #>  

<#@ import namespace="CVMS.Model" #>  

 

<#

     string modelName="CVMS.model.CaseInfo"; //前台Extjs4 MVC架构的Model层类名

#>

 

Ext.define('<#=modelName #>', {

    extend: 'Ext.data.Model',

    idProperty: 'FID',

    fields: [

<# 

     TCASEINFO  model = new TCASEINFO(); //后台定义的Model实体类,根据需要修改

     PropertyInfo[] pis = model.GetType().GetProperties();

     for(int i=0;i<pis.Length;i++)

    {

        PropertyInfo pi = pis[i];

        if(i==pis.Length-1)

        {           

Write("\t\t"+"\""+pi.Name+"\"");

        }

        else

        {

            Write("\t\t"+"\""+pi.Name+"\""+",\n");

        }

    }

#>  

    ]

}); 

4.         保存,自动生成一个后缀名为 .js的文件中,就生成了我们上面需要的代码

 

部分代码解释:

1.         debug="true":表示启动调试,当然如果要调试还需要如下代码

System.Diagnostics.Debugger.Launch();  

System.Diagnostics.Debugger.Break();    //这个是可选的,相当于单个断点

然后点保存,那么就会自动启动单步调试了,调试非常有用。

2.         hostSpecific="true"表示将名为Host的属性添加到由文本模版生成的类中,该属性是对转换引擎的宿主的引用,即可以使用this.Host。最常用的就是来获取项目中文件的相对路径:Host.ResolvePath(filename)

3.         language="C#"T4模版使用的语言,默认值为C#,所以可以不写。当然也可以改成VB

4.   <#@ output extension=".js" #>  T4输出指令:自动生成代码文件的后缀名

5.         <#@ assembly #> T4程序集指令:引用程序集

6.         <#@ import #> T4导入指令: 引用命名空间, 相当于C#using

7.         <# #> 标准控制块

8.         <#= #> 表达式控制块

 

 

                                                                                                                                   飞天心宏  2012-02-23

  评论这张
 
阅读(2140)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018