在客户端和Node.js服务器上使用静态JavaScript文件

悖论

我有一个运行的具有静态内容文件夹的node.js服务器。我有希望服务器和客户端都拥有的模型代码,因此将其放在我的静态内容文件夹中。我使用过,module.exports = {MyClass}以便在服务器上可以使用导入const MyClass = require('./static-content/MyClass.js');这适用于服务器,但是,客户端无法执行require,如果我使用将脚本放置在html中<script language="javascript" src="MyClass.js" > </script>,则会收到错误消息:

ReferenceError:模块未定义

客户端和服务器都可以使用javascript文件而不创建模型代码重复的方法吗?上下文是我在服务器上有一个对象,需要在服务器和客户端之间来回传递。因为它具有循环引用和功能,所以我不能简单地JSON.stringify使用对象,因此我手动获取其状态,将其转换为JSON对象,通过WebSocket发送并在客户端上将其反转。

EOL

您可以简单地检查module范围内是否存在。如果是,则将其导出,否则不执行任何操作。考虑以下示例:

静态/Testclass.js

class TestClass {
    constructor(someParam = 'initial state') {
        this.someField = someParam;
    }
    doStuff() {
        return `${this.someField}`;
    }

}

const testClassInstance = new TestClass('some other state');

if (typeof (module) !== 'undefined' && module.exports) {
    module.exports = {
        TestClass,
        testClassInstance
    };
}

static / test.html

<!DOCTYPE html>
<head>
    <script src="/static/TestClass.js"></script>
</head>

<body>
    <p id="test"></p>
    <p id="test2"></p>
    <script>
        document.getElementById("test").innerText = new TestClass().doStuff();
        document.getElementById("test2").innerText = testClassInstance.doStuff();
    </script>
</body>

server.js

const TestClass = require('./static/TestClass').TestClass;
const testClassInstance = require('./static/TestClass').testClassInstance;
let  testObj = new TestClass();
console.log(testObj.doStuff());
console.log(testClassInstance.doStuff());

const express = require('express')
const app = express()
const port = 3000

app.use('/static', express.static('static'));
app.listen(port);

这将记录

initial state
some other state

启动服务器时将其连接到控制台,并且html页上的两个段落也将包含这些内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用套接字从服务器向客户端发送静态文件

node.js / mongoDB-如何在客户端和Web服务器之间管理ObjectID

使用socket.io和C#客户端与Compute Engine上的Node.js服务器代码进行通信

如何使用客户端JavaScript从MongoDB和没有框架的Node.js服务器中查找并返回数据?

如何在Node.js服务器上的多个客户端之间同步数据

使用Javascript和C#连接服务器和客户端

如何使用jquery ajax和node js在快速框架中将数据从客户端传递到服务器?

在本地使用Node.js时客户端和服务器的时间不同

Node.js-将多个文件作为附件从服务器推送到客户端

如何在Node-Opcua服务器中获得已连接的客户端和客户端证书

如何在Node.js中将文件从服务器发送到客户端

Socket.io Node Js服务器和React js客户端未连接

Node.js服务器和客户端之间的变量

从服务器端在客户端获取变量(express.js,node.js)

使用Chrome和Node.js时,客户端和服务器上是否已编译javascript?

客户端javascript与服务器node.js通信的简单方法

在本地和远程服务器上的git(客户端)上使用Netbeans

Node.js服务器(移动客户端)

Node.js服务器和android客户端

Meteor.js:解析服务器上的CSV并使用node-csv-string传递回客户端

在Node.js上使用soket.io进行服务器和客户端之间的连接

Express,用于浏览器客户端和node.js客户端的socket.io服务器

服务器和客户端之间的响应方法上的节点js错误

正确处理Node.js TLS服务器和C TLS客户端(openSSL)连接的方法

具有Node.js的服务器和具有XMLHttpRequest的客户端

Node.js:服务器和客户端之间的数据交换

无法在 Android 客户端和 Node.js socket.io 服务器之间通信

Node 和 elasticSearch 客户端 - 客户端注意到服务器不是 Elasticsearch 支持的发行版

ESP32 上的 CoAP 服务器和 Node 客户端