【问题标题】:Node.js re-usable code server-clientNode.js 可重用代码服务器-客户端
【发布时间】:2012-02-11 23:48:01
【问题描述】:

我正在对 Node.js 进行一些研发,目前我很喜欢它,我只是好奇如何重用代码以便在客户端和服务器之间共享一些代码。

我使用 npm 安装的 Backbone.js 就是一个很好的例子。

目前我有一个如下所示的目录:

app.js
    public/
    routes/
    views/
    node_modules/
    tests/

显然我使用的是 express.js,而我所有的客户端代码都位于 cssimagesjs 文件所在的 public 文件夹下。

那么我如何在主干中建立一个模型,我可以在服务器和后端使用它?

此外,我曾经使用 JavaScript AMD 和 Require.js 来构建和模块化我的应用程序,我已经习惯了它并且我倾向于喜欢它我看到 require.js 可以通过 npm 获得,但现在我安装了它'我不确定如何在客户端使用它,因为我曾经有这样的东西:<script data-main="js/main" src="js/libs/Require/require.js"> 但由于 require.js 是通过 npm 安装的,它不在公共文件夹下,所以我看不到任何可能加载方式。

谢谢

【问题讨论】:

  • public/modelspublic/collectionspublic/views,把骨干的东西公之于众。至于重用 require,可以考虑改用 modul8 或 browserify
  • @Raynos 如果我在模型中有 var Backbone = require('backbone'); ,那么当我尝试加载这个 JS 文件时,它会抛出 require 方法未定义的异常,否则它会搞砸加上我在客户端使用的 require.js,所以我如何拥有一个 hybrid 模型,以便我可以在客户端和服务器端使用它,因为我在客户端使用 require.js我的脚本以 define([... 开头,这就是为什么我想在两边都使用 requireJS。
  • 不要两边都使用requireJS。在节点上使用node,在客户端使用browserify/modul8。
  • 好的,我明白了,但说真的,为什么不在客户端甚至不需要 require.js?我的意思是它有多糟糕?

标签: node.js backbone.js npm requirejs


【解决方案1】:

我想这有点晚了,但我只是想补充一点,您可以在服务器端使用 https://npmjs.org/package/define,而不是在客户端使用 browserify,它允许您以 AMD 样式定义模块,但需要它们使用节点的 require()

【讨论】:

    【解决方案2】:

    您可以将符号链接 (ln -s) 添加到 public 文件夹中的 require.js。

    我认为您也可以将主干模型公开,然后在服务器和客户端上使用 requirejs 来加载相同的文件。

    【讨论】:

    • 我会避免在服务器上使用requirejs,只需使用节点的require
    • 没错,我认为你也可以做一些包装,使模块同时使用 requirejs 和 node,我现在找不到它。
    • 是的,你可以,不过这很麻烦,只是不要使用 requireJS 而是使用 modul8 或 browserify。
    • 你好,我喜欢符号链接的方法我只是好奇为什么我应该避免在服务器上使用 requireJS?
    • 只是提到 ln -s 没有锻炼但 ln -P 工作就像一个魅力我不知道为什么软链接没有成功,但硬链接完成了这项工作并且现在很酷:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多