@GreatX

Как декомпозировать код?

Необходимо как-то вынести кусок кода в отдельный класс. Я с классами в js мало работал. Нужна помощь
На 1 картинке показано как сейчас работает
На 2 как я хочу, чтобы работало
На 3 структура приложения

5d57c10364cb0917750254.png

'use strict';

const HttpRequest = require('request');
const { Router } = require('express');
const path = require('path');

import FrontpadAPI from path.join('..', '/model/frontpad/frontpadAPI');

const router = Router();

const URL = 'https://app.frontpad.ru/api/index.php?';
const secret = 'Ключ api'

router.get('/', (req, res) => { 
    let promis = new Promise((resolve, reject) => {
        HttpRequest.post(URL + 'get_products', { form: { secret: secret } }, function (err, res, body) {
            if (err) {
                reject(err);
            }
            else {
                resolve(JSON.parse(body));
            }
        })
    });
    promis
        .then((d) => {
            res.render('index', {
                title: 'Главная',
                isHome: 'true',
                data: d
            });
        })
        .catch(err => console.log(err))
});

module.exports = router;


5d57c1082495a590470631.png

'use strict';

const HttpRequest = require('request');

export class FrontpadAPI {

    // eslint-disable-next-line node/no-unsupported-features
    constructor(url = "https://app.frontpad.ru/api/index.php?", key = "Ключ API") {
        this.url = url;
        this.key = key;
    }

    getProducts() {
        HttpRequest.post(URL + 'get_products', { form: { secret: this.key } }, function (err, res, body) {
            if (err) throw new Error(err);
            else return body;
        });
    }

    newOrder() {

    }

    getCertificate() {

    }

    getClient() {

    }

    getStatus() {

    }
}


5d57c10cb3f7b257325082.png
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
@kova1ev
во втором файле:
module.exports = FrontPadAPI

в первом:
const FrontPadAPI = require("../model/frontpad/frontpadAPI")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы