gpt4 book ai didi

javascript - coffeescript 中的命名空间

转载 作者:搜寻专家 更新时间:2023-11-01 04:47:47 25 4
gpt4 key购买 nike

我想像在 javascript 中那样使用命名空间,方法是使用关键字“with”,但 CoffeeScript 将其报告为保留关键字并拒绝编译是否有任何方法可以在 cs 中使用命名空间?

特别是,我想动态地包含一个 CoffeeScript 文件(可信来源),例如为数据库模式加载模型,但我希望包含的脚本能够访问本地命名空间。


编辑:

这是我想做的。我正在建立一个将目录树映射到基于 express 和 mongoose 的应用程序的 Web 框架。例如,有一个子目录“models”,其中包含一个文件“user.coffee”,其中包含如下代码:

name:
type: String
unique: on
profiles: [ Profile ]

Profile 是位于名为 model 的本地对象中的类。加载用户模型时,我希望它访问位于本地模型存储中的模型类。

我现在的解决方法是将 model.Profile 写入文件“user.coffee”。希望你明白我的意思。


第二次编辑

这是我在不使用 with 的情况下的做法:

用户.咖啡

name:
type: String
unique: on
profiles: [ @profile ]

个人资料.咖啡

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

对我来说似乎是一个不错的解决方案。

最佳答案

有别人的意见强加给你吗?现在是 Hack Time™!

o =
a: 1
b: 2
c: 3

`with(o) {//`
alert a
`}`

“编译”为:

var o;
o = {
a: 1,
b: 2,
c: 3
};
with(o) {//;
alert(a);
};

很遗憾,这是另一个将Doug Crockford的观点奉为福音的领域。 with Statement Considered Harmful基于属性写入的歧义性拒绝它,但在与只读上下文对象一起使用时忽略它的用处,例如定义类 DSL API 的上下文对象。

关于javascript - coffeescript 中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6359989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com