好的,正如我所见,您希望在项目中使用内部模块.好吧,在TypeScript 0.8.1.1中有一个解决方法,您可以定义非导出模块(内部)并在其上面添加导入.在0.8.2中,似乎这不再起作用了.我在这里看到的唯一选择是完全省略导入语法并使用节点模块的标准要求.我不知道这是不是一个好主意但是请分享你的意见.我知道使用import语法会使模块外部(语言规范),但在0.8.1.1中却不是这样,bug可能呢?
在TypeScript 0.8.1.1中,这工作并且在0.8.2中不再起作用:
import path = module('path');
import fs = module('fs');
module SomeNamespace.Controller {
export class Index {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在其他内部模块的文件顶部使用引用语法引用包含上面代码的文件,通常调用:
var ctrl = new SomeNamespace.Controller.Index;
ctrl.index();
Run Code Online (Sandbox Code Playgroud)
似乎在0.8.2中这是它对内部模块起作用的唯一方式:
var path = require('path');
var fs = require('fs');
module SomeNamespace.Controller {
export class Index {
...
}
}
Run Code Online (Sandbox Code Playgroud)
是否有其他可能将内部模块与Node.js模块混合使用?以上需要使用是否有问题(编译并运行正常......)?
我正在构建一个MooTools类,我在初始化函数中有这个:
this.css = null;
window.addEvent('domready', function(){
this.document = $(document);
this.body = $(document.body);
this.head = $(document.head);
}.bind(this));
Run Code Online (Sandbox Code Playgroud)
好的,现在问题......我应该在init中声明this.css = null或任何其他空变量:
this.css = null; // Maybe this.css = '' - empty string?
Run Code Online (Sandbox Code Playgroud)
接下来是关于窗口和文档......我应该把它放到$()中,因为它可以兼顾,所以我只想知道哪种方式更受欢迎?总结一下:
window.addEvent() // or should I use $(window).addEvent()
this.document = $(document) // or this.document = document
this.body = $(document.body) // or this.body = document.body
Run Code Online (Sandbox Code Playgroud)
我将这些值存储到对象中以避免多个DOM查询,这可以吗?或者每次调用$(selector)/ $$(selector)会更好吗?
还剩下两件事......关于绑定......每次都可以使用.bind(this),或者使用.bind(this.myDiv)更好,并在函数内部使用它,例如:this.setStyle (...); 而不是this.myDiv.setStyle(...)
(function(){
this.setStyle('overflow-y', 'visible');
}.bind(this.body)).delay(100);
Run Code Online (Sandbox Code Playgroud)
要么
(function(){
this.body.setStyle('overflow-y', 'visible');
}.bind(this)).delay(100);
Run Code Online (Sandbox Code Playgroud)
最后一件事是关于垃圾收集......我是否需要自己垃圾以及如何操作(据我所知,MooTools在卸载时自行完成).令人困惑的部分是我在MT文档中找到了函数:
myElement.destroy();
Run Code Online (Sandbox Code Playgroud)
他们说:清空所有孩子的元素,移除和吞噬元素.在pageUnload之前清除内存很有用.
所以我必须自己垃圾?怎么做?什么时候使用.destroy()?我正在研究一个庞大的项目,我注意到IE在脚本的多次执行上变得缓慢(所以如何处理它?可能需要一些清理,内存泄漏?).
我认为直接从node_modules目录导入模块会很棒,而不需要为它手动提供声明文件(让我们假设声明是由模块本身提供的).我想这个问题是声明附带的依赖(文件路径可以相对于模块解析,但这会导致重复,编译器无法处理).目前使用节点模块非常不方便,因为从npm存储库进行简单安装是不够的,我们必须手动搜索声明并在我们的项目中提供它们.假设我们的项目依赖于10个节点模块(所有模块都有声明),一年之后我们想要更新它们.我们必须手动搜索新的声明,让我们说我们有大约20个这样的项目(这将成为一场噩梦).也许应该有一个选项直接从节点模块导入.ts文件?
你有什么建议吗?
这是CodePlex的重新发帖,听取您的意见......
node.js ×2
typescript ×2
binding ×1
declaration ×1
external ×1
internal ×1
javascript ×1
module ×1
mootools ×1