我还在学习Knockout的正确使用方法,并且我发现自己ko.observable在设置我的viewmodel时很快就远离了键入,而只是定义了一个对象文字,并通过映射插件传递给它
var viewModel = ko.mapping.fromJS(data);
Run Code Online (Sandbox Code Playgroud)
或者至少,将所有数据填充到viewModel上的属性中,就像这样
var viewModel = {
... events etc ... ,
"data": ko.mapping.fromJS(data)
}
Run Code Online (Sandbox Code Playgroud)
说实话,我一直这样做的主要原因是为了解决必须打字ko.observable和ko.observableArray重复的问题.我只是想弄清楚这是否是一个好方法,如果有任何缺点,将var x = ko.observable()所有特定声明放在一起.此外,我正在加载所有这些,而不是响应任何ajax调用等,从我可以看出,这是映射插件的设计目的.
在使用knockout的工作中,你是否仍然手动逐个声明observable,或者你使用了我使用的mapping.fromJS方法?像这样经常使用映射插件有什么特别的缺点吗?
编辑:
在本文中,Steve通过这样做来设置他的viewModel
var initialData = [ { ... } , { ... } ]; // json from the serializer
var viewModel = {
gifts : ko.observableArray(initialData)
};
Run Code Online (Sandbox Code Playgroud)
通常,我也只是ko.mapping.fromJS用于这种情况,特别是为了确保数组中的对象也被转换为可观察对象.看看他做了什么,我的做法似乎有些过度,并增加了一些不必要的开销.
我正在寻找一种从ASP.NET核心Web应用程序(目前使用Visual Studio 2017RC和webpack)自动生成TypesScript客户端代码的方法.
是否有任何现有工具可以在visual studio或webpack的构建管道中生成TypeScript客户端?我试图使用swagger中间件,然后从swagger URL生成到客户端,但我不确定中间的swagger生成是否适合这项工作.此外,与构建工具的断开连接并不理想.
刚刚从Visual Studio市场安装了Web Essentials 2017,但是似乎缺少从C#类创建TypeScript定义的功能。在Web Essentials 2015中,我将鼠标悬停在C#类文件上,然后会有一个选项“创建TypeScript Intellisense文件”。
我检查了项目更改日志,它显示TypeScript定义文件生成器是在1.2中实现的,安装的版本是1.5.8。
https://github.com/madskristensen/WebEssentials2017/blob/master/CHANGELOG.md
我错过了什么?