Я бы хотел использовать пространства имен, как в javascript, используя ключевое слово «with», но CoffeeScript сообщает об этом как зарезервированное ключевое слово и отказывается компилировать. Есть ли способ использовать пространства имен в cs?
В частности, я хочу включить файл CoffeeScript динамически (надежный источник), например, загрузку моделей для схемы базы данных, но я хочу, чтобы включенный скрипт имел доступ к локальному пространству имен.
Редактировать:
Вот что я хочу сделать.Я настраиваю веб-фреймворк, который отображает дерево каталогов в приложение на основе Express и Mongoose.Например, есть подкаталог «models», в котором содержится файл «user.coffee» с кодом, подобным следующему:
name:
type: String
unique: on
profiles: [ Profile ]
, где Profile
- это класс, который находится в локальном объекте с именем model
.Когда пользовательская модель загружается, я хотел получить доступ к классам моделей, которые находятся в моем локальном хранилище моделей.
Мой обходной путь - написать model.Profile
в файл 'user.coffee'.Надеюсь, понятно, о чем я.
2nd Edit
Вот как я это сделал без использования with
:
пользователя.кофе
name:
type: String
unique: on
profiles: [ @profile ]
profile.coffee
content: String
А вот как он динамически загружается:
for fm in fs.readdirSync "#{base}/models"
m = path.basename fm, '.coffee'
schema[m] = (()->
new Schema coffee.eval (
fs.readFileSync "#{base}/models/#{fm}", 'utf8'
), bare: on
).call model
mongoose.model m, schema[m]
model[m] = mongoose.model m
Мне кажется, это хорошее решение.