最近,我重新编写了第一个JavaScript程序的大部分内容,以使其更具可读性和清晰度。为此,我决定将代码分成ES6模块,但是在寻找使外部模块可访问这些模块功能的最佳方法时遇到了问题。
下面,我包含了管理麦克风录音的模块的部分代码。我希望能够从外部访问变量blob
以及函数mediaRecorder.start()
和mediaRecorder.stop()
。虽然我已经直接导出blob
和mediaRecorder
,但是这个选项对我来说似乎并不是特别安全。否则,创建一个包含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");
}
};
答案 0 :(得分:0)
您要导出和导入功能吗?
// yourfilename.js
export { mediaRecorderPrompt };
const utils = require("./path/to/yourfilename.js");
utils.mediaRecorderPrompt();