【问题标题】:What's the proper way to require in Node.js?在 Node.js 中要求的正确方法是什么?
【发布时间】:2017-01-08 11:39:17
【问题描述】:

我刚刚开始使用 Node.js 和 Electron,我已经在文档和示例代码中看到了关于如何需要模块的各种方法。具体来说,我正在尝试遵循this 教程。在这个特定的例子中,我想我需要app,它位于electron

1) 在教程中,你可以做到:

var app = require('app')

2) 在electron-quick-start 示例中,由 Electron 提供以帮助您入门,他们让您这样做:

const electron = require('electron')
const app = electron.app

3) 在Electron documentation,他们使用:

const {app} = require('electron')

4) 在Electron boilerplate program 中,我发现:

import { remote } from 'electron'
var app = remote.app

这里发生了什么?我主要在 Internet 上看到 #1,并且似乎 varconst 基本上可以互换,因为您不修改这些模块。我不明白的是,如果appelectron 中,那么为什么#1 可以直接要求它(而不是像require('electron.app') 这样的东西)?我更加困惑,因为#4 似乎暗示应用程序实际上在electron.remote 中。其次,#3 是首选,因为它在文档中使用?还是#4首选? #4 程序中的注释说“对所有内容都使用新的 ES6 模块语法”。这是否意味着这是 JavaScript 的未来?当然,我想知道这些只是语法上的差异,还是它们实际上会影响程序的运行方式。

【问题讨论】:

  • 恕我直言,只需使用var http = require('http')varconst 由你决定。
  • 在某些情况下,我在电子的 main.js 文件中仅使用 var 时遇到了问题。没有给我带来问题的是const {app} = require('electron')。唯一的区别是它们的打字标准不同
  • 如果您有constlet 可用,我会完全避免使用var。查看示例here

标签: javascript node.js require electron


【解决方案1】:
  • #1 不再适用于 Electron v1.0+。
  • #2#3 是等价的,#3 只是使用 destructuring assignment
  • #4 使用 NodeJS 尚未原生处理的 ES6 module import 语法,因此它仅在您使用 Babel、TypeScript 或其他可以将这些 import 语句转换为 require 语句的编译器转换代码时才有效。

【讨论】:

  • 谢谢!难怪我在使用 #1 时遇到问题,我没有意识到它不再起作用了。
猜你喜欢
  • 2020-12-02
  • 2023-03-10
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
相关资源
最近更新 更多