当前位置: 首页 > 面试题库 >

如何在Node.js和浏览器之间共享代码?

蓝夕
2023-03-14
问题内容

我正在使用JavaScript客户端(在浏览器中运行)和Node.js服务器创建一个小型应用程序,并使用WebSocket进行通信。

我想在客户端和服务器之间共享代码。至少可以说,我才刚刚开始使用Node.js,而我对现代JavaScript的了解还有些生疏。因此,我仍然对CommonJS
require()函数有所了解。如果我使用“导出”对象创建程序包,那么我将看不到如何在浏览器中使用相同的JavaScript文件。

我想创建一套在两端使用的方法和类,以方便编码和解码消息以及其他镜像任务。但是,Node.html" target="_blank">js /
CommonJS打包系统似乎使我无法创建可在两侧使用的JavaScript文件。

我也尝试使用JS.Class来获得更严格的OO模型,但是我放弃了,因为我无法弄清楚如何使提供的JavaScript文件与require()一起使用。我在这里想念什么吗?


问题答案:

如果您想编写一个可以同时在客户端和服务器端使用的模块,那么我在简短的博客文章中介绍了一种快速简便的方法:
为Node.js和浏览器编写,本质上如下(this与相同window) :

(function(exports){

    // Your code goes here

   exports.test = function(){
        return 'hello world'
    };

})(typeof exports === 'undefined'? this['mymodule']={}: exports);

另外,也有一些旨在在客户端实现Node.js API的项目,例如Marak的 gemini

您可能还对DNode感兴趣,它使您可以公开JavaScript函数,以便可以使用基于JSON的简单网络协议从另一台计算机上调用它。



 类似资料:
  • 问题内容: 我的网站上有一些值,要在关闭浏览器时清除这些值。我选择存储这些值。当选项卡关闭时,它们确实被清除,并且如果用户按下f5则保留;但是,如果用户在其他选项卡中打开某些链接,则这些值不可用。 如何在应用程序的所有浏览器选项卡之间共享值? 用例:将值存储在某个存储器中,使该值可在所有浏览器选项卡中访问,并在所有选项卡都关闭时清除它。 问题答案: 您可以使用localStorage及其“存储”

  • 用例:将一个值放入某个存储区,在所有浏览器选项卡中保持该值可访问,并在所有选项卡关闭时清除该值。

  • 问题内容: 我有一堂课要protobuf。在该类中,一个字段是枚举(在它自己的类中)。我可以避免在.proto文件中定义相同的枚举值吗?还是我必须手动确保Java代码中的枚举定义与.proto文件中的相同? Java代码: .proto文件对应的代码: 问题答案: 保持此类同步的最佳解决方案通常是代码生成。确定您的定义中的哪一个是真相,然后从中创建其他定义。协议缓冲区内置了对Java代码生成的内置

  • 我需要在两台计算机之间转移我的Selenium会话。 要通过Selenium导出和导入cookie,您必须单独访问每个网站,然后才能设置其cookie,我希望避免这种情况。我还想复制本地存储。 以下是我迄今为止所尝试的: 1-启动新鲜硒会话: 2 - 在%temp%中找到其临时Chrome用户配置文件,并将其复制到我的应用程序的文件夹中 3-使用此用户配置文件启动新驱动程序: 上面的工作-本地存储

  • 我想使用@SessionAttributes注释在SpringMVC中的两个控制器之间共享会话属性。 下面是我用来测试属性共享的一个简单代码:AController。JAVA a.jsp BController.java b.jsp 我期望的行为是转到 /aURL,myParam将被设置为0到99之间的随机值,然后该值将在两个控制器之间共享。 但是,会发生以下情况:我转到/a URL,myPara

  • 问题内容: 嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。 假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile 据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。 我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是 现在