0

我想在 Express 上的服务器和客户端之间共享一段咖啡脚本代码。我将服务器目录中的文件链接到/public目录中,以便客户端可以加载它。它确实具有外部依赖项,我为客户端静态解析。为了在客户端尝试调用时删除错误消息require,我认为一个简单的条件声明就可以了。

console.log require
unless require?
  require = (what) ->
    console.info "this is the client, you asked me to load #{what}"
    return {}

但是,当在服务器上运行时,undefined将被打印并被require覆盖。嵌入式 Javascript 也是如此:

`if( typeof require == "undefined" )
  var require = function(what) {
    console.info( "this is the client, you asked me to load "+what );
    return {};
  }
`

如果我只运行:

console.log require

在服务器上,它按预期打印一个对象结构。似乎require至少在评估并执行了条件之后才注入。

我怎样才能require安全地覆盖,或者我可以使用什么其他范例在客户端和服务器之间共享代码?

4

1 回答 1

2

我建议使用browserify在客户端和服务器之间共享代码。它允许您像编写服务器一样遵循通用 js 模式编写 javascript,但提供了一种机制来为客户端构建模块,其中require()在浏览器中工作。

通过转换过程 ,browserify 支持 CoffeeScript 。Coffeeify是 CoffeeScript 转换实现的一种实现。

于 2013-04-12T03:08:53.200 回答