Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   По закрытым частям модулей (https://javascript.ru/forum/misc/80798-po-zakrytym-chastyam-modulejj.html)

micscr 03.08.2020 14:10

По закрытым частям модулей
 
Приветствую.
Я вот думаю как покошерней оформляется сейчас вспомогательный код в модуле.
Видел что просто функциями делают, ну и я то же пока так:
import axios from 'axios'

let apiKey = 'овововоов';
let baseUrl = 'https://api.someurl.com';

export default {
    async fetchMovies(movieType, page = null, cb, errorCb = null, ) {
        await axios.get(createUrl(movieType, page))
        .then((response) => {
            cb(response.data);
          })
          .catch(function (error) {
              if (errorCb) {
                errorCb(error);
              }
          });
    }   
}

function createUrl(movieType, page = null) {
  let url = baseUrl . movieType + '?api_key=' + apiKey;
  return url;
}


Функция эта снаружи, я так понимаю, видна не будет. В том числе когда и сборщиком все это собирается, ведь да?
Но вот насколько этот результат ООП...
Вот даже просто когда пишешь модуль для vuex у vue
const state = () => ({
    omegas: []
  })
  
  // getters
  const getters = {
    omegas(state) {
      return state.omegas;
    },
    lastOmega(state) {
      return state.omegas.length ? state.omegas[state.omegas.length - 1] : null;
    }
  }
  // actions
  const actions = {
    setOmegas ({ commit }, payload) {
      commit('setOmegas', payload)
    }
  }
//...
  export default {
    namespaced: true,
    state,
    getters,
    actions,
    mutations
  }

, где всю дополнительную работу делать, тот же код, который общий для разных экшенов?

Может это как то по-хипстеровей сейчас делается?

Например, вот как я этот модуль с api подключаю в других модулях, так и внутри него подключать модуль, который экспортирует объект с методами, требуемыми текущему.


Часовой пояс GMT +3, время: 22:30.