почему использование узлов не требует импорта? - PullRequest
0 голосов
/ 29 сентября 2018

Я изучаю node.js и мне интересно, почему он использует синтаксис require вместо синтаксиса import, который использует React.

то есть

const Validator = require("validator");

VS

import Validator from "validator";

Я полагал, что import - это es6, но я не думаю, что это объясняет, почему он не используется в узле.

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

import и default - новые функции ES6, еще не используемые узлом. Узел фактически уже реализует новые функции в качестве эксперимента, хотя : с флагом --experimental-modules и только для файлов, сохраненных с расширением .mjs.

Транспортеры типа babel позволяют писать современные, одобренные спецификации и / или экспериментальные ECMAScript .В экосистеме упаковщиков, таких как Webpack с транспиляторами, такими как babel, становится легко писать поддерживаемый, ориентированный на будущее javascript, в то время как код остается широко поддерживаемым, поскольку он преобразован в commonjs (формат, который вы видите узнаваемым поrequire (старая школа import) и module.exports (старая школа export).

0 голосов
/ 29 сентября 2018

Я считаю, что импорт - это es6, но я не думаю, что это объясняет, почему он не используется в узле.

Точно так же, как NodeJS реализует всю свою библиотеку, в которой множество асинхронных функций, которыеподдерживает только обратный вызов.Подумав так, вы поймете, что рано или поздно инфраструктура NodeJS определенно будет поддерживать синтаксис import и обновит все эти асинхронные функции для поддержки на основе обещаний.

0 голосов
/ 29 сентября 2018

Вероятно, по историческим причинам.node.js и chrome (механизм v8) старше стандарта ES6.

С другой стороны, см .: Как использовать импорт es6 в узле?

Вы также можете использовать импорт.

...