cpo*_*pow 4 namespaces coffeescript
大家好:我正在尝试创建一个命名空间,这样我就可以在整个应用程序中使用不同coffeescript文件中的一个类(至少这是我对你使用命名空间的理解)
我在这里找到了一个很好的例子:Coffeescript'Namespace'中的类
摘抄:
namespace "Project.Something", (exports) ->
exports.MyFirstClass = MyFirstClass
exports.MySecondClass = MySecondClass
Run Code Online (Sandbox Code Playgroud)
但是,当我实现它时,我得到:命名空间未在我的控制台中定义.
我的命名空间在上面的示例中完全按照它的外观实现.我的命名空间定义似乎不被coffeescript以某种方式识别.
有任何想法吗?可能会出现版权问题吗?
提前致谢!!!
该namespace问题的功能:
namespace = (target, name, block) ->
[target, name, block] = [(if typeof exports isnt 'undefined' then exports else window), arguments...] if arguments.length < 3
top = target
target = target[item] or= {} for item in name.split '.'
block target, top
Run Code Online (Sandbox Code Playgroud)
不是CoffeeScript的一部分,你必须自己定义帮助者.大概你不想在每个文件中重复它,所以你有一个包含定义的namespace.coffee文件(util.coffee或者......)namespace.但是,你的问题就是让你的namespace函数进入全局命名空间.你可以手工完成:
namespace = (target, name, block) ->
[target, name, block] = [(if typeof exports isnt 'undefined' then exports else window), arguments...] if arguments.length < 3
top = target
target = target[item] or= {} for item in name.split '.'
block target, top
(exports ? @).namespace = namespace
# or just (exports ? @).namespace = (target, name, block) -> #...
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/Uv646/
或者你可以变得时髦并且习惯于namespace将自己置于全球范围内:
namespace = (target, name, block) -> #...
namespace '', (exports, root) -> root.namespace = namespace
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/3dkXa/
一旦你完成了其中一个,你的namespace功能应该随处可用.
| 归档时间: |
|
| 查看次数: |
3935 次 |
| 最近记录: |