惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
博客园_首页
H
Help Net Security
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
B
Blog
I
InfoQ
SecWiki News
SecWiki News
T
Tailwind CSS Blog
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
P
Palo Alto Networks Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
M
MIT News - Artificial intelligence
S
Schneier on Security
T
Threat Research - Cisco Blogs
F
Fortinet All Blogs
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The Cloudflare Blog
Recent Announcements
Recent Announcements
Security Latest
Security Latest
G
GRAHAM CLULEY
IT之家
IT之家
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
Google DeepMind News
Google DeepMind News
V
V2EX
S
Securelist
TaoSecurity Blog
TaoSecurity Blog
B
Blog RSS Feed
S
SegmentFault 最新的问题
博客园 - 叶小钗
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
F
Full Disclosure

博客园 - 廖勇军

关于c++的头文件依赖 增强资源管理器右键功能,含源代码 VC中结构体的内存布局 进程间共享句柄三种方式 SocanCode连接Oracle的方法 不用再纠结反射影响效率了 javascript总结 IIS7.0中使用MVC3,静态页正常,其它404 ashx的使用 一起来灭掉IE6! iis express感觉还不错 关于sqlite使用entity framework的布署问题 - 廖勇军 - 博客园 负margin实现div的左右排版 原来Jquery.load的方法可以一直load下去 错误1067进程意外终止 关于省市联动的问题想法 javac编译多个带package文件 远程服务器返回了错误 NOTFOUND Java程序放到Linux上出现的问题
SocanCode7之模板编写
廖勇军 · 2012-09-09 · via 博客园 - 廖勇军

本软件使用javascript作为模板,软件将数据库和设置项分成组成json作为参数,调用模板入口main函数,返回值一个数组。

模板示例:

/**

* 函数入口

*/

function main(databaseJson, settingJson) {

    var codes = new Array()

    codes.push({ title: '错误', path: 'error.txt', code: '模板暂未完成。' });

    return codes;

}

1. 传入参数格式

1.1.    databaseJson

{

  "ConnString": "Data Source=127.0.0.1,7788;User ID=sa;Password=;Initial Catalog=test;",

  "Name": "test",

  "Type": "Sql2000",

  "Selects": [

    {

      "Name": "tbl_Item",

      "IsView": false,

      "Fields": [

        {

          "Pos": 1,

          "Name": "ItemId",

          "IsId": true,

          "IsKey": false,

          "Size": 4,

          "Length": 10,

          "AllowNull": false,

          "DefaultValue": "",

          "Descn": "ItemId",

          "FieldType": "int"

        },

        {

          "Pos": 2,

          "Name": "TypeID",

          "IsId": false,

          "IsKey": false,

          "Size": 4,

          "Length": 10,

          "AllowNull": false,

          "DefaultValue": "",

          "Descn": "TypeID",

          "FieldType": "int"

        },

        {

          "Pos": 3,

          "Name": "RoleId",

          "IsId": false,

          "IsKey": false,

          "Size": 4,

          "Length": 10,

          "AllowNull": false,

          "DefaultValue": "",

          "Descn": "RoleId",

          "FieldType": "int"

        },

        {

          "Pos": 4,

          "Name": "CreateTime",

          "IsId": false,

          "IsKey": false,

          "Size": 8,

          "Length": 23,

          "AllowNull": true,

          "DefaultValue": "",

          "Descn": "CreateTime",

          "FieldType": "datetime"

        }

      ]

    }

  ]

}

1.2.    settingJson

[

  {

    "Name": "CacheFrame",

    "Description": "缓存结构",

    "Value": "ObjectCache"

  },

  {

    "Name": "BLFrame",

    "Description": "业务层样式",

    "Value": "BLL"

  },

  {

    "Name": "CommandType",

    "Description": "读写数据库方式",

    "Value": "SQL"

  },

  {

    "Name": "FilterDefaultableField",

    "Description": "是否过滤带默认值的字段",

    "Value": "false"

  },

  {

    "Name": "DBHelperName",

    "Description": "DBHelperName的名称",

    "Value": "dbHelper"

  },

  {

    "Name": "DALFrame",

    "Description": "DAL项目名称",

    "Value": "DAL"

  },

  {

    "Name": "ModelStyle",

    "Description": "实体层样式",

    "Value": "CS3"

  },

  {

    "Name": "SlnFrame",

    "Description": "三层结构样式",

    "Value": "Simple"

  },

  {

    "Name": "NamespaceSuffix",

    "Description": "命名空间后缀",

    "Value": ""

  },

  {

    "Name": "NamespacePrefix",

    "Description": "命名空间前缀",

    "Value": ""

  },

  {

    "Name": "VSVersion",

    "Description": "VisualStudio版本",

    "Value": "2010"

  }

]

2. 返回值

main函数通过传入databaseJson和settingJson返回一个数组,数组中的每个元素都是json,可以有2种形式:

1、拷贝文件(夹)

{

        type: 'copy', //类型为拷贝

        isfolder: true, //是否是文件夹拷贝

        source: 'folder\\Model', //文件源路径,相对于模板路径地址

        target: 'Model' //目标路径,相对于输出路径

}

2、输出代码

{

        type: 'code', //类型为代码,此项可省略

        title: 'Model-internal', //用于在生成代码时显示在标题上

        path: 'folder\\test.cs', //输出代码时的文件路径

        code: 'console.write(“hello,world”);' //要输出的代码

}

3. 注意事项

1.         模板的设置项使用xml格式

2.         生成代码将加载模板下所有的js文件

3.         生成代码时,调用main函数,main函数是入口函数

4.         传入参数可以从软件的“调拭”窗口中查看

5.         使用软件的“添加模板”功能,会自动生成4个文件,其中的Helper.js是辅助函数,内含对模板编写的实用函数; DbType.js是为field添加DbType属性的方法, 可以将各种数据库类型转化到对应于c#的DbType类型, 如要修改字段对应生成的字段类型, 可以修改此文件.