Javascript ES6模块内的访问功能

时间:2019-09-05 16:27:10

标签: javascript

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

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

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");
    }
  };

1 个答案:

答案 0 :(得分:0)

您要导出和导入功能吗?

// yourfilename.js

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

utils.mediaRecorderPrompt();