适用于浏览器的通用JS和nodeJS以及单元测试

我想构建一个在nodeJS和浏览器上既可运行又可测试的代码库。

我在这里用以下代码介绍了nodeJS环境,并尝试在浏览器中使用,所缺少的是如何使相同的文件与浏览器一起工作,以及单元测试(无需重复代码),同时还要注意传输问题使用babel和webpack。

  1. 运行浏览器+ NodeJS
  2. 单元测试browser + nodeJS

src / Vehicle.js

class Vehicle {
    constructor() {
        this.wheels = 4;
    }

    getWheels() {
        return this.wheels;
    }
}

module.exports = Vehicle; 
// if (module != undefined) module.exports = Vehicle;
// if (window != undefined) window.Vehicle = Vehicle;

src / Truck.js

const Vehicle = require("./Vechicle");

class Truck extends Vehicle { 
    constructor() {
        super();
        wheels = 16;
    }
}

module.exports = Truck;

webpack.config.js 这不起作用。 (既要缩小,又要缩小)

module.exports = {
    module: {
        entry: "src/**",output: {
            filename: [
                "../dist/bundle.min.js" // with sources maps
                "../dist/bundle.js" // non minified
            ]
        }
        rules: [
            {
                test: /\.js$/,exclude: [/node_modules/,"test"],use: {
                    loader: "babel-loader"
                }
            }
        ]
    }
};

测试(带有mocha的nodeJS)

test / VehicleTest.js

describe("Vehicle Test",function () {
    const assert = require("assert");
    it("should test Vehicle wheels",function () {
        const Vehicle = require("../src/Vechicle");
        let v = new Vehicle();
        assert(v.getWheels() == 4);
    });
});

test / TruckTest.js

describe("Truck Test",function () {
    const assert = require("assert");
    it("should test Truck Wheels",function () {
        const Truck = require("../src/Truck");
        let t = new Truck();
        assert(t.getWheels() == 16);
    });
});

测试(浏览器)

test / index.html 浏览器测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/6.1.19/browser.js"></script>

    <script src="../dist/bundle.min.js"></script> <!-- all files from the src folder -->

    <script src="VehicleTest.js"></script>
    <script src="TruckTest.js"></script>
</head>
<body>

</body>
</html>
min9884 回答:适用于浏览器的通用JS和nodeJS以及单元测试

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3147203.html

大家都在问