javascript - 访问 Javascript ES6 模块中的函数
问题描述
最近我重写了我的第一个 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");
}
};
解决方案
您是否正在导出和导入功能?
// yourfilename.js
export { mediaRecorderPrompt };
const utils = require("./path/to/yourfilename.js");
utils.mediaRecorderPrompt();
推荐阅读
- php - 数组问题:将php数组推入javascript数组,images.url未定义
- c# - MySql .NET 连接器在重负载 C# netcore 异步进程中的使用
- javascript - 将 setTimeout() 用于“会话”是一种很好的做法吗
- c# - 将重叠的时间范围与其权重合并
- asp.net - 无法为 .net 安装“LemmatizerPrebuiltCompact”库 - Visual Studio 错误
- javascript - ReactRedux 我想更新状态,但总是得到“TypeError:无法读取未定义的属性'地址'”相同的代码可以正常更新其他状态
- c++ - 为什么在 WM_NCCREATE 之后 MDI 子窗口不存在?
- sql - Oracle 查询显示错误“不是 GROUP BY 表达式”
- php - 如果php中的两个值相同,如何显示自动选择下一个值?
- r - Lubridate - 查找间隔和日期之间的重叠时间