В чем разница между функцией экспорта и module.exports? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть Javascript файл utils.js, который содержит некоторые служебные функции. Вот пример:

export function RemoveHTML(Str) {
    return Str.replace(/<[^>]*(?:>|$)/gi,'');
}

Я могу использовать эти функции, импортировав файл utils.js, например:

import {RemoveHTML} from '../js/utils.js';

У меня также есть файл model.js для некоторых запросов данных вот так (псевдокод для краткости):

async function getStuff() {
    await DBConnection.connect();
    return results
}

module.exports = {
  getStuff
}

Для «согласованности» я решил изменить model.js на следующее:

export async function getStuff() {
    await DBConnection.connect();
    return results
}

Если я это сделаю, то Я получаю приложение из sh об ошибке:

SyntaxError: неожиданный токен 'export'

В чем разница между экспортом функции с использованием export function() и module.exports?

ОБНОВЛЕНИЕ:

Я использую Babel в Webpack, как показано ниже, так почему я получаю ошибку?:

{
      test: /\.js$/,
        include: [ srcPath ],
      exclude: ['/node_modules/'],
      use: {
        loader: 'babel-loader',
        options: {
          presets: ["@babel/preset-env"]  //Preset used for env setup
        }
      }
    },

Ответы [ 2 ]

1 голос
/ 01 мая 2020

@ JonasWilms определенно прав насчет того, что он высказал. Я вижу, что вы используете общий js в коде сервера и es6 на стороне клиента.

Нет разницы между module.export или export. В вашем проекте код вашего сервера использует общие js модули, поэтому вы должны использовать module.exports. В своем клиентском коде продолжайте использовать синтаксис экспорта (es6) JavaScript.

Но если вы хотите написать javascript глобально с es6, вам придется установить некоторые зависимости и настроить ваш babel.

Проверьте эту ссылку https://www.codementor.io/@iykyvic / writing-your- nodejs -apps-using-es6-6dh0edw2o

1 голос
/ 01 мая 2020

export function() - это синтаксис ES6, используемый для экспорта, в то время как module.exports - это или exports - специальный объект, который по умолчанию включается в каждый файл JS в приложении Node.js.
Вы также можете использовать синтаксис ES6 для экспорта / импорта модуля в Node.js, но для его использования вам придется преобразовать новый код ES6 в Node.js поддерживаемый формат ES5. Вы можете легко это сделать используя babel (который является инструментом для переноса JavaScript).

...