【问题标题】:node can't load app because it doesn't recognise jQuery节点无法加载应用程序,因为它无法识别 jQuery
【发布时间】:2019-07-27 13:45:48
【问题描述】:

我正在尝试使用 Node 来调试包含一些 JQuery 的 Javascript 文件。但是在加载文件时,它在 $ 上无法识别。 我已将 JQuery 安装到本地包 (npm install jquery -save-dev)。

npm jquery -version”结果为 6.9.8

代码

$("#modalAddRole").on("modal:visible", function () {
    $("#roleName").val("");
    $("#roleName").focus();
});

【问题讨论】:

  • 是否可以在节点中添加“jquery 语法”?
  • 看看this question的答案
  • @TheRuler — 没有“jQuery 语法”之类的东西。 jQuery 只是用常规 JavaScript 语法编写的对象集合。
  • @Quentin 这个集合就是语法。但请发表您的意见
  • @TheRuler — 这不是意见。语法有特定的含义。

标签: javascript jquery node.js debugging visual-studio-code


【解决方案1】:

jQuery 操纵 dom。

node.js 没有 dom。

您需要创建一个虚拟 dom(不显示)

为此使用 jsdom 加载您的网页/应用程序,然后执行您想要的任何 dom 操作代码。

示例:

const jsdom = require("jsdom");
const {JSDOM} = jsdom;
const jquery = require('jquery');

JSDOM.fromURL("https://url_To_Your_WebPage_Local_Or_Remote.com")
  .then(dom => {
    const $ = jquery(dom.window);
    //your jQuery code here
  })

【讨论】:

    【解决方案2】:

    我已将 JQuery 安装到本地包中

    安装它是不够的。您需要将其加载到您的程序中……

    const $ = require('jquery');
    

    ...然后$("#modalAddRole") 在您将 HTML 加载到其中之前不会执行任何操作。

    the documentation:

    要让 jQuery 在 Node 中工作,需要一个带有文档的窗口。 由于 Node 中本机不存在这样的窗口,因此可以模拟 jsdom 等工具。这对于测试目的很有用。

    require("jsdom").env("", function(err, window) {
        if (err) {
            console.error(err);
            return;
        }
    
        var $ = require("jquery")(window);
    });
    

    但这似乎是一种运行调试环境的非常复杂的方法。假设代码在浏览器中的生产环境,在在浏览器中调试它会更有意义。

    如今,浏览器内置了出色的调试工具,并且模拟浏览器默认执行的所有操作可能会使调试变得更加困难,因为调试环境与生产环境有很大不同。

    【讨论】:

    • 我平时都是用浏览器调试的,但总是好奇其他方法
    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 2016-06-16
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2018-03-15
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多