Nodejs 设置全局函数并调用嵌套函数

Nodejs Set a global function and call a nested function

我的主要功能

import AppLauncher from './Applauncher'

function Mainfunc() {
 global.app=  AppLauncher()
 global.app.start('index')
}

AppLauncher.js

    function AppLauncher() {
      function start(opts){
              console.log('functions start called with' + opts)
        }
     }

   export default AppLauncher

我想将 AppLauncher 函数指定为全局函数,并调用嵌套在其中的启动函数

构造函数是必经之路。你可以这样做:

// AppLauncher.js
function AppLauncher() {
  // run some code...
  // notice `this`
  this.start = function(opts) {
    console.log('start function called with', opts);
  }
}
export default AppLauncher;

在您的主函数中,使用 new 关键字调用它:

import AppLauncher from './AppLauncher';
function Mainfunc() {
  global.app = new AppLauncher();
  global.app.start('index');
}

构造函数也可以写成类(你可以像我上一个例子那样使用):

class AppLauncher {
  constructor() {
    // Anything in here gets executed when once you create an object from this class with the `new` keyword
  }
  // Instead of `this` we add a method to the class:
  start(opts) {
    console.log('start function called with', opts);
  }
}

export default AppLauncher;

关于构造函数的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor

如果你不想使用构造函数,你也可以return一个对象:

// AppLauncher.js
function AppLauncher() {
  // Some code here...
  return {
    start(opts) {
      console.log("function start called with", opts);
    }
  };
}
export default AppLauncher;

您可以像您想象的那样使用它:

import AppLauncher from `./AppLauncher`;
function Mainfunc() {
  global.app = AppLauncher();
  global.app.start('index');
}

附带说明一下,通常使用 PascalCase 调用构造函数,而使用 camelCase.

调用常规函数