title: getter inside module.exports and es6 style import (react navigator)
body: <p>Can somebody explain how the module system in <a href="https://github.com/react-navigation/react-navigation/blob/master/src/react-navigation.js" rel="nofollow noreferrer">react navigation</a> works? There are getters inside module.exports (with node.js-like require()), and also es6 style export default in other files.
  I completely stuck how to make sense of it. I tried to look into git history, but the initial git commit (first public release) already had this solution in place.</p>
  
  <p>The <a href="https://github.com/react-navigation/react-navigation/blob/master/src/react-navigation.js" rel="nofollow noreferrer">main file</a> (<code>src/react-navigation.js</code>):</p>
  
  <pre><code>module.exports = {
    get createKeyboardAwareNavigator() {
      return require('@react-navigation/native').createKeyboardAwareNavigator;
    },
  };
  </code></pre>
  
  <p><a href="https://github.com/react-navigation/react-navigation-native/blob/master/src/createKeyboardAwareNavigator.js" rel="nofollow noreferrer">react-navigation-native/src/createKeyboardAwareNavigator.js</a>:</p>
  
  <pre><code>export default (Navigator, navigatorConfig) =&gt;
    class KeyboardAwareNavigator extends React.Component {
  };
  </code></pre>
  
  <p>So why 
  1. there is module.exports instead of export?
  2. why there is a getter inside <code>module.exports</code>?
  3. how can <code>require</code> and <code>export default</code> be mixed?</p>