【问题标题】:how to a use client js code in nodejs如何在nodejs中使用客户端js代码
【发布时间】:2012-03-16 19:19:06
【问题描述】:

我为我的客户端编写了一个 js 库,用于将命令直接发送到 rmi'ish 服务器。它工作得很好,但现在我必须编写一些服务器代码来连接到同一台服务器。这就是我想尝试 Node.js 的原因。但是我在理解这些概念时有些困难。

我希望我的库可以在浏览器(chrome、firefox 和 ie)上工作,但也可以在 Node.js 上使用(带有小图案)。这样我就不必维护 2 段几乎相同的代码。

在浏览器系统上,您只需要声明一个命名空间并在其中填充所有功能。在 node.js 中,我使用 require 加载我的文件并将它导出的变量填充到一个变量中。

例如 './m4a.structure.js' 设置一个全局 m4a.structure。 './m4a.cmd.js' 使用该结构来生成一组方法(作为代理将 stuf 发送到服务器)。最后有一个'./jquery.m4a.initialize.js'将东西绑定到jquery以发送请求并处理现金和类似的东西。

前 2 个文件包含仍在快速变化(每周)的信息,因此我希望它们在浏览器和 Node.js 守护程序位上保持可用。当然,最后一个文件不是那么大,而是特定于浏览器,因此如果我不能移植它,我不会介意(甚至期望)。

我希望你已经很清楚了,希望你能帮我一些忙。

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    构建可用作例如模块的最简单方法一个 node.js 模块,在浏览器中是这样的:

    var Foo = function() {
    };
    
    Foo.prototype.bar = function() {
    };
    
    if(typeof exports !== 'undefined') {
      // Node.js or similar
      exports.Foo = Foo;
    } else {
      // Browser -- this is window
      this.Foo = Foo;
    }
    

    【讨论】:

    • Addy Osmani 写了一篇关于所有不同加载器框架的great article
    • 在node中,this指的是模块,所以你可以为浏览器导出同this.Foo = Foo;的函数。
    猜你喜欢
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多