- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我该怎么做?
我见过的一些例子,看起来可怕,例如下面的,它读起来根本不像 OO 代码,因此如果 TypeScript 会成为 hack,它还有什么意义.由于没有类定义,我根本无法完全了解以下内容。所以我有一个编译代码,没有智能感知,无法强制封装等 - 那么为什么要浪费时间呢?
/// <reference path="../durandal/durandal.d.ts" />
/// <reference path="../../scripts/knockout.d.ts" />
import app = require("durandal/app");
import http = require("durandal/http");
export function activate() {
.
.
.
}
其他示例甚至更时髦,通过导出变量声明。
生成的代码并没有好多少,它对这个名为 exports
的变量进行 DI 并且代码只是不断地向它添加属性,这是没有意义的。
如果我用 javascript 编写这一切,我返回一个新对象可能是 JSON 符号——我能理解,一个适当的工厂方法/类。更少的工作,更干净,没有时间浪费在编译上。
有人能解释一下这是怎么回事吗?
exports
对象上创建属性?这就像一个突变的引用传递。最佳答案
The resulting code is not much better, it's DI-ing this variable called exports And the code just keeps adding properties to it, which does not make sense.
这是 web (amd) 的工作方式。它依赖于 requirejs:http://requirejs.org/甚至 jquery(从 https://github.com/jquery/jquery/tree/master/src 中选择任何文件)也使用类似的模式,例如: https://github.com/jquery/jquery/blob/master/src/deferred.js#L1-L5
If I were to write this all in javascript, I return a new object may be in JSON notation - that I can understand, a proper factory method/class. A lot less work, cleaner and no time wasted compiling.
您也可以使用 TypeScript 执行此操作,方法是不使用外部模块并使用 --out
标志进行编译。
Why is the code creating properties on a DI-ed exports object? It's like a mutant pass by reference. Is there a more OO way of doing this? I can see myself exporting a class, but this is just too weird and goes against everything I believe to be right and just. Ok that was an exaggeration, but sure feels that way.
您需要了解外部/内部模块。简而言之,外部模块依赖于模块系统(amd 用于浏览器,由例如 requirejs 提供,commonjs 用于服务器,例如 nodejs)。如果您从未听说过 amd/commonjs,您可能不应该在意。除了您尝试使用的库 (durandal) 需要您使用它。这意味着您的 JavaScript 代码不会像您想象的那么简单。
PS:我有一个解释 typescript 模块系统的视频:http://www.youtube.com/watch?hd=1&v=KDrWLMUY0R0
关于javascript - 使用 TypeScript 定义 Durandal ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163970/
Nuget 说我已经为我正在检查的项目安装了 Durandal Transitions 包,但是 ~/Scripts/durandal/transitions仅包含默认过渡 entrance.js 其
每次我读到有关 Javascript 的新内容时,我都会阅读有关 Durandal 和 Aurelia 的内容。我在很多博客上听到开发人员要求从 Durandal 升级到 Aurelia 或类似的版本
在我基于 HotTowel 的项目中,我使用 Durandal 1.1.1 进行路由。 我有一个登录路由,如果用户未登录,我想激活该路由。 我的路线配置如下: var routes = [ {
每次我读到有关 Javascript 的新内容时,我都会阅读有关 Durandal 和 Aurelia 的内容。我在很多博客上听到开发人员要求从 Durandal 升级到 Aurelia 或类似的版本
Durandal route 星号的用途是什么?这是来自 the Docs 的示例: route:'knockout-samples*details' 编辑:使用 Durandal 2.0 最佳答案
Durandal 路由中星号的用途是什么?这是来自 the Docs 的示例: route:'knockout-samples*details' 编辑:使用 Durandal 2.0 最佳答案 您引用
我的 Durandal 路由配置如下。 var routes = [ ....... More Routes Here..... { url: 'login', moduleId: '
我正在使用 Durandal 2.0。我有一个搜索 View ,想将所选项目传递到详细信息 View 。我知道如何传递 Id,但由于在这种情况下搜索具有整个对象,因此我想在导航时传递对象。我以为我可以
我搜索如何在撰写数据绑定(bind)上停用转换, 因为我在 chrome 上的内容 html 并不美观而且小错误。 因为我在过渡时有一个滚动水平打印,并且在移动鼠标后消失了。 内容在 iFrame 中
在我的 shell 中,我按照以下方式设置了路线: router.map([ { route: '', title: 'Search', moduleId: 'viewmode
我正在尝试使用 John Papa 的 HotTowel 模板实现 SPA。我可以做多少级的 ko compose 有限制吗? 在它调用的 shell.html 中 在我的事件 View 中,我尝试
我需要帮助在 Durandal 路由器中动态添加/删除路由。我想要的是在用户登录后,我将能够根据登录用户的类型添加或删除特定路线。 我试图从 visibleRoutes/allRoutes 数组中添加
我正在看的文章是Durandal Router . 下 mapAuto ,它说我们可以在 url #/customers/1 中传递 splat 参数.和 activate viewmodel 中的函
我正在查看这些路由信息对象结构的文档,但没有找到任何内容。由于 Durandal 使用其他 JS 库,我不确定它属于什么(也许是 sammy?)。 我面临两个问题:问题 #1 我想在路线信息中使用一个
我有一个现有的 Durandal.js 应用程序,它利用了所有 ES5 功能,但我想将它升级到新的 Aurelia 平台。什么是正确的升级路径?最简单的升级方式是什么?是否有包含升级路径的文档? 最佳
我正在开发 Hottowel 项目,并更新到 Durandal 2.0。我已经关注了Converting from 1.x to 2.0 guide ,但我仍然有一些问题: 1.加载router插件总
在我看来......这种方式的初始路线是通过以下方式定义的: { route: '', moduleId: 'viewmodels/customers', title: 'customers', na
我想知道是否有人在 Durandal.js 上遇到过类似的问题。 我收到间歇性的“未找到 View 。搜索”错误,很难复制,因为只是偶尔发生。 当 createView 函数无法定位 View 时,它
当您在 SPA 代码中的某处遇到脚本错误时,整个应用程序变得完全没有响应并且您无法导航到任何其他页面(视图)。似乎 durandal 只是卡住了! (唯一的出路是点击刷新再次启动SPA) 在 Du
两者有什么区别,什么时候适合使用它们?我已经看过文档,但还没有完全弄清楚。 最佳答案 这两个事件都是 Durandal 生命周期回调的一部分。 activate() 允许新对象执行自定义激活逻辑。 (
我是一名优秀的程序员,十分优秀!