Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeScript 类型系统 #31

Closed
beginor opened this issue Jun 4, 2019 · 17 comments · Fixed by #34
Closed

TypeScript 类型系统 #31

beginor opened this issue Jun 4, 2019 · 17 comments · Fixed by #34
Labels
question Further information is requested

Comments

@beginor
Copy link
Collaborator

beginor commented Jun 4, 2019

请问现在 SmartCode 支持 TypeScript 的类型系统么? 打算 SmartCode 做一套基于 Angular 的增删查改的模板, 如果有的话就可以直接使用了。

@ElderJames
Copy link
Member

ElderJames commented Jun 4, 2019

还没有,还是在typescript的模板里使用吧!感谢贡献。最好能使用ng-zorro+asp.net core的项目,就是官方的dotnet new angular模板

@Ahoo-Wang
Copy link
Member

@ElderJames 不是写好Razor模板然后运行SmartCode就好了么,是不是我对问题的理解有问题?

@Ahoo-Wang Ahoo-Wang added the question Further information is requested label Jun 4, 2019
@beginor
Copy link
Collaborator Author

beginor commented Jun 4, 2019

@ElderJames @Ahoo-Wang 这个贡献一个 pr 倒是不难, 问题是我已经 fork 一个 库 了,模板中引用了私有的类库, 不能提交 pr 。 貌似 github 只能 fork 一个库, 这个该怎么解决呢?

@ElderJames
Copy link
Member

@Ahoo-Wang 我觉得用razor做模板还是不太好,能不能参考dotnet模板,模板项目自身可以运行,在配置文件里配置需要替换的符号。

官方搜集的模板
https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new

@Ahoo-Wang
Copy link
Member

@ElderJames ok,我抽空看一下这种实现方式。对于 @beginor 的问题你有什么建议。
我本来计划想设计一个 SmartCode 模板市场类的东西,类似于 hub.docker.com ,大佬们 有什么建议。
比如 @beginor 提到的私有模板,如何提交,公共化的模板应该如何提交,以及官方模板提交的规范于标准 这些都需要讨论制定。

@beginor
Copy link
Collaborator Author

beginor commented Jun 4, 2019

@ElderJames 那个只是一个初始化项目的模板吧, 和 smartcode 要做的从数据库生成代码的模板区别比较大的。

@ElderJames
Copy link
Member

ElderJames commented Jun 4, 2019

@Ahoo-Wang @beginor 我觉得不能提交pr了,只能用链接来关联模板项目的地址

我本来计划想设计一个 SmartCode 模板市场类的东西,类似于 hub.docker.com ,大佬们 有什么建议。

用dotnet gobal tools下载模板,命令行生成吧?

创建模板项目:
smart new template -type dbfirst -name angular

上传模板:
smart publish -key xxx

安装:
smart new -i "Angular"

生成:
smart new angular -db "server=localhost;database=MyDb;"

@ElderJames
Copy link
Member

@ElderJames 那个只是一个初始化项目的模板吧, 和 smartcode 要做的从数据库生成代码的模板区别比较大的。

@beginor 数据源的问题,dotnet new 的数据源在cli参数,我们做成从数据库获取数据源的就行

@beginor
Copy link
Collaborator Author

beginor commented Jun 4, 2019

不错,这个想法好。希望早日实现 👍不过貌似已经偏离话题了。

模板库的问题, 用 git submodule 的方式是否可行呢?

@ElderJames
Copy link
Member

fork的库改个名吧,一般fork的都是提pr用的。
模板库应该独立存在,不在项目中维护了~

@beginor
Copy link
Collaborator Author

beginor commented Jun 4, 2019

改名是不行的, 还是提示已经 fork 过了。

我找到的方法是从历史记录中新建一个分支, 然后再合并 smartcode 的更新进来, 这样就在我的库中得到一个只包含 smartcode 的分支, 不包括我的修改, 用这个分支来提交 pr 是可以的。 以后我再慢慢整理, 把我的模板库移动到一个独立的分支或者库。

@beginor
Copy link
Collaborator Author

beginor commented Jun 5, 2019

@Ahoo-Wang 遇到了一点儿小问题, 请教一下。 我们的数据表名称遵循蛇形下划线规范, 比如 app_attachmentsapp_users 。 对应生成的 TypeScript 接口类型如下:

// Create By Beginor
// Date 2019-06-05 06:51
// Code Generated By SmartCode
// Code Generater Github : https://github.com/dotnetcore/SmartCode

/** interface for 附件表 */
export interface AppAttachment {
    /** 附件ID */
    id: number;
    /** 内容类型(HTTP Content Type) */
    contentType: string;
    /** 附件内容 */
    content: number[];
    /** 创建时间 */
    createdAt: string;
    /** 创建附件的用户ID */
    creatorId: string;
    /** 文件名 */
    fileName: string;
    /** 附件大小 */
    length: number;
    /** 附件所属的业务ID,可以是任意表的ID,如果业务表有附件, 则需要根据业务表记录的ID,删除对应的附件。 */
    businessId: number;
}

根据前端 Angular 的命名规范, 应该保存为 app-attachment.ts 。 这样表名称、接口(类)名与文件名各不相同, 这里和 C# 的规范不一致了, 因为 C# 的类名和文件名使用的相同的名称。

请问这种情况该怎么配置呢? 能否为文件名再单独配置一个转换器或者转换函数呢?

@ElderJames
Copy link
Member

Angular里不是attachment.model.ts这样的文件命名吗?
组合词会用-连接,如home-header.model.ts

@beginor
Copy link
Collaborator Author

beginor commented Jun 5, 2019

是的,我只是举例说明而已,请问有办法解决么? 建议参考下 angular 的 pipe 机制, 将转换器配置成管道,可以多个串联在一起

@ElderJames
Copy link
Member

扩展IWordsConverter接口应该可以满足你的需求

@Ahoo-Wang
Copy link
Member

@beginor 该问题下个小版本迭代开始支持,有什么好的建议也可以提交给我。下次有问题另外开个issue吧,这个issue已经偏离了主题好远了。😂

@beginor
Copy link
Collaborator Author

beginor commented Jun 6, 2019

OK,我先写 converter 吧实现吧,也就是几行代码的事儿

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants