その投稿を読んだ後、名前空間関数を取得して、それを独自のファイルに入れました。
namespace.coffee
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
console.log "created namespace "+ name
root = exports ? window
root.namespace = namespace
そしてReplで:
> namespace = require('./assets/js/namespace.js').namespace
[Function]
toString()なら、それは正しいです。
OK、それで今私はそれを使いたいです:(ns.coffee
サンドロの答えから)
namespace = require('./namespace.js').namespace
class MyFirstClass
myFunc: () ->
console.log 'works'
class MySecondClass
constructor: (@options = {}) ->
myFunc: () ->
console.log 'works too'
console.log @options
namespace "Project.Something", (exports) ->
exports.MyFirstClass = MyFirstClass
exports.MySecondClass = MySecondClass
console.log 'done with exports'
次に、Replで実行します。
ns = require('./ asset / js / ns.js')#
エクスポートでコンパイルされたns.coffeeは、
名前空間Project.Something
{} を作成しました。
動作していないようです:
> ns.MyFirstClass
undefined
> ns.MySecondClass
undefined
> ns.Project.Something.MySecondClass
TypeError: Cannot read property 'Something' of undefined
私はここで何か間違ったことをしていますか?