首页 > 解决方案 > 访问 Javascript ES6 模块中的函数

问题描述

最近我重写了我的第一个 JavaScript 程序的大部分内容,以使其更具可读性和清晰性。为了做到这一点,我决定将我的代码划分为 ES6 模块,但我在寻找使这些模块的功能可以从外部访问的最佳方法方面遇到了问题。

下面我包含了管理麦克风录音的模块的部分代码。我希望能够从外部访问变量和blob函数。我虽然直接导出两者,但这个选项对我来说似乎不是特别安全。否则,创建一个包含两个函数的新对象,但也许有一个更简单的选项。我很感激你的意见,谢谢。mediaRecorder.start()mediaRecorder.stop()blobmediaRecorderblob

export function mediaRecorderPrompt() {
  if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    navigator.mediaDevices.getUserMedia (constrains)
    .then(function(mediaStreamObj) {
      let chunks = [];
      const mediaRecorder = new MediaRecorder(mediaStreamObj);

      mediaRecorder.ondataavailable = (event) => {
        chunks.push(event.data);
      }

      mediaRecorder.onstop (event) => {
        let blob = new Blob(chunks, {type: 'audio/ogg; codecs=opus'})
        chunks = [];
      }

    })
    .catch(function(error) {
        console.log("The following getUserMedia error occured: " + error);
        alert("Error! Check if your browser is allowed to use your microphone");
      });
    }
    else {
      alert("Microphone recording is not supported by your browser");
    }
  };

标签: javascript

解决方案


您是否正在导出和导入功能?

// yourfilename.js

export { mediaRecorderPrompt };
const utils = require("./path/to/yourfilename.js");

utils.mediaRecorderPrompt();

推荐阅读