为什么我不能使用require()导入的javascript文件中的函数?

Edw*_*ard 5 javascript require electron

我开始使用电子.

电子快速启动index.html中包含使用的JavaScript文件require().

<script>
  // You can also require other files to run in this process
  require('./renderer.js')
</script>
Run Code Online (Sandbox Code Playgroud)

现在我定义了一个名为flash()in 的简单函数renderer.js,以及一个日志输出:

function flash(text) {
  alert("Text: " + text + "!");
}

console.log("Renderer loaded.");
Run Code Online (Sandbox Code Playgroud)

启动电子应用程序后,我在dev-tools的控制台中输出日志.但是打电话flash()不起作用.

使用时包含脚本

<script src='./renderer.js'></script>
Run Code Online (Sandbox Code Playgroud)

我可以调用这个函数.

  • require()功能来自哪里?
  • 为什么我在使用包含文件时不能使用该功能require
  • 如何使用所需文件中定义的函数?
  • require()应该何时使用,何时使用src=""

Sal*_*Sal 7

require()函数来自哪里?

require在电子是非常相似require的Node.js的 Electron不仅仅是一个网络浏览器; 它旨在使用HTML,CSS和JavaScript构建桌面应用程序.因为它的目的不仅仅是网络,我认为Electron的创造者添加了他们自己的小触摸,使其成为您可以使用的更加精彩的技术.您可以在此处阅读更多相关信息:https://nodejs.org/api/modules.html#modules_modules.

为什么我在使用require包含文件时不能使用该功能?

这是因为它们被封装在模块内部,因此它不能用于任何其他脚本文件.

如何使用所需文件中定义的函数?

要使用该flash功能,您需要将其导出,如下所示:

function flash(text) {
  alert("Text: " + text + "!");
}
module.exports.flash = flash;
// Note: this is how we export. We assign properties to the `module.exports`
//   property, or reassign `module.exports` it to something totally
//   different. In  the end of the day, calls to `require` returns exactly
//   what `module.exports` is set to.

console.log("Renderer loaded.");
Run Code Online (Sandbox Code Playgroud)

但仅凭这一点就不会让你随时使用这个flash功能; 你将不得不从require调用中明确地抓住它,如下所示:

<script>
  // You can also require other files to run in this process
  var renderer = require('./renderer.js');

  renderer.flash('Some text');
</script>
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用require(),什么时候应该使用src =""?

免责声明:我的意见.

require总是喜欢使用.仅script src=''在您要导入不使用的库时使用require,而是选择全局声明变量.