【问题标题】:How to require additional modules in node.js app如何在 node.js 应用程序中要求附加模块
【发布时间】:2016-02-25 16:43:05
【问题描述】:

嘿,我正在尝试为我的应用程序获取一个表格排序器。我想和这个(https://github.com/tristen/tablesort)一起去,但我在让它工作时遇到了问题。我将它放在我的 package.json 文件中,并在整个 NPM 中安装它,然后在 var tablesort = require('tablesort'); 之类的代码中需要它。主要问题在于它附带的模块。在 github 项目中,它们的要求如下:<script src='tablesort.number.js'></script>。我怎样才能将这种代码转换为节点/需要友好的代码来加载所有这些模块并让我对我的表进行排序?我不知道如何让这个 tablesorter 与 nodejs 应用程序一起运行。

【问题讨论】:

  • 您是在使用 Browserify 或 Webpack 等构建工具来捆绑您的应用程序,还是尝试直接从您的 node_modules 加载文件?
  • 我正在使用 browserify。

标签: javascript node.js require tablesort


【解决方案1】:

既然you use Browserify,你应该没事。

TableSort 库的源代码中有一个与 CommonJS 兼容的 export。添加

var TableSort = require("tablesort");

您的源代码应该足以将库包含到您的构建包中,并为您提供对 TableSort 构造函数的引用。该项目的 README 甚至是has that example

但是,捆绑的排序方法并非如此,因为它们希望找到对 TableSort 原型的全局引用,然后使用其扩展方法对其进行扩展,例如TableSort.date.

您可以Browserify-shim 使 CommonJS 不兼容的模块与 CommonJS 兼容。然而,在我的快速实验中,如果没有切片和切块,我就无法让它正常工作。由于某种原因,在包的子文件夹中包含文件时,browserify-shim 的文件解析失败。

我确实设法通过将排序方法复制到我的项目文件夹中来包含它们。我做了一个Gist demo,其中包括一个垫片排序方法。克隆它,运行npm install && npm run build,然后在浏览器中打开index.html

【讨论】:

    【解决方案2】:

    您可以将tablesort.jshere 下载到您的目录,然后 将此添加到文件中:

      module.exports =  Tablesort;
    

    然后,如果您想要一个特定的表格排序,例如“数字”。你应该从here 下载tablesort.number.js

    然后,您应该将此更改添加到tablesort.number.js

        var Tablesort= require('./tablesort.js')
    
        module.exports =  Tablesort;
    

    最后,在你的文件中使用这个:

    var tablesort = require('./tablesort.number.js')
    

    【讨论】:

    • 我试过了,但它不是这样工作的。它表示未定义 Tablesort(例如,如果我需要数字模块,则在数字模块内部)。
    • 我已经到了渲染表格的地步,但排序仍然不起作用。虽然没有错误,只是表头不可点击。它是一个基本的 html 表,没什么特别的。我应该在表头中包含一些类似 html 的类吗?我在示例中看到使用了 sort-header 类,但在任何地方都没有提到,并且在主表中也有排序类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多