繁体   English   中英

如何将模块模式 function 导出到另一个 JavaScript 文件

[英]How can I export module pattern function to another JavaScript file

我有两个 JavaScript 文件,想将具有模块模式的文件导出到另一个文件。 带有模块模式的文件,我只想导出公共成员。 当我尝试执行测试时,它说“计算器不是构造函数”。

文件:calculator.js

var Calculator = function(){
    var total = null;

    return {      
        add: function(x,y){
            total = x + y; 
        },

        getTotal: function(){
            return total;
        };

        display: function(){
            console.log(total);
        }
    }
}

第二个文件:testCalculator.js

const calculatorObj = require('calculator.js');

describe("Calculator test suite", function(){
    var calculatorObj = new Calculator();

    it('Verify sum method', function() {        
        try{
            calculatorObj.add(5,5);                

            //assertive
            expect(10, calculatorObj.getTotal());
        }
        catch(err)
        {
            alert(err);
        }
    });
});

它不起作用,因为您需要在使用之前导出一些东西。

添加此代码以使其工作

module.exports = function(){
    var total = null;

    return {      
        add: function(x,y){
            total = x + y; 
        },

        getTotal: function(){
            return total;
        };

        display: function(){
            console.log(total);
        }
    }
}

我必须列出所有要导出的 function 名称吗?

是的,你必须导出所有你想稍后导入的东西。 或者您可以导出一个 object 以及您需要的所有代码。

我需要使用“import”还是“require()”

对于 Node.js, require是常见的做法。 最新的 Node.JS 支持import构造,但至少目前,使用 require 更可取。

对于浏览器,您将使用import符号。

而您的 function 不是经典构造函数,请查看class符号

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM