javascript - 在nodejs require语句之后无法操作dom对象

标签 javascript node.js

我正在尝试学习nodejs,但在 server.js 文件中使用 require 语句后无法操作 DOM 对象。然而,没有它它也能正常工作。当我在浏览器中单击该段落时,它不会改变。有谁知道为什么吗?

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
    </script>
</head>
<body>
    <p id="demo">Click me to change my HTML content (innerHTML)</p>

    <script src="server.js"></script>
</body>
</html>

server.js

var config = require('./config');

document.addEventListener('DOMContentLoaded', function() {
    $("#demo").click(function () {
        document.getElementById("demo").innerHTML = "Paragraph changed!";
    })
});

最佳答案

如果您使用 Node 运行服务器文件,document 将不会引用您的浏览器。 Node.js 无法使用您的浏览器。只有前端 javascript 才能引用 DOM。此外,如果您没有使用某些 bundler (例如 browserify),则在前端 javascript 中使用 require 应该会引发错误。因此下面的 jQuery 代码将不会运行。打开浏览器的开发人员工具,您应该在控制台中看到错误。

Node 不适合与 DOM 一起使用,并且服务器文件不应插入到 HTML 中。将服务器代码与前端代码分开。 Node 的目的是设置服务器并提供文件,而不是使用 DOM。尝试阅读有关 Node 及其用途的更多信息,也许还可以阅读一些教程来熟悉它。

关于javascript - 在nodejs require语句之后无法操作dom对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44147395/

相关文章:

javascript - While 循环内的 SQL 查询无法使用 PHP 和 JS 运行

javascript - 访问 JSON 对象中的数组元素

javascript - 浏览器和 Node 有什么区别?

javascript - Nodejs编译流程

angularjs - meanjs 路由到服务器 Controller

javascript - 隐藏选项集中的选项而不在 MS CRM 2011 中删除它

javascript - 禁用组上的复选框

javascript - 使用 Node 6.3 设置 Koa 2

javascript - Node.js:使用 csvtojson 将 CSV 转换为 JSON 后,如何将 jsonObj 存储在全局变量中

node.js - 使用两个不同异步函数的结果