के बीच मुख्य अंतर requireऔर import, यह requireस्वचालित रूप node_modulesसे मॉड्यूल खोजने के लिए स्कैन करेगा , लेकिन import, जो ES6 से आता है, नहीं होगा।
अधिकांश लोग संकलन करने के लिए बैबल का उपयोग करते हैं importऔर export, जो importएक्ट को समान बनाता है require।
Node.js का भविष्य संस्करण importस्वयं का समर्थन कर सकता है (वास्तव में, प्रायोगिक संस्करण पहले से ही करता है ), और Node.js के नोटों को देखते हुए , यह importसमर्थन नहीं करेगा node_modules, यह ES6 पर आधारित है, और मॉड्यूल का पथ निर्दिष्ट करना चाहिए।
इसलिए मैं आप का उपयोग नहीं सुझाव है कि importकोलाहल के साथ, लेकिन इस सुविधा की पुष्टि अभी तक नहीं है, यह भी समर्थन कर सकता node_modulesहै भविष्य में, जो जानते हैं कि होगा?
संदर्भ के लिए, नीचे एक उदाहरण है कि कैसे बैगल ईएस 6 के importसिंटैक्स को कॉमनजेएस के requireसिंटैक्स में बदल सकता है।
मान लें कि फ़ाइल app_es6.jsमें यह आयात है:
import format from 'date-fns/format';
यह नोड पैकेज दिनांक-fns से प्रारूप फ़ंक्शन को आयात करने का एक निर्देश है ।
संबंधित package.jsonफ़ाइल में कुछ इस तरह हो सकता है:
"scripts": {
"start": "node app.js",
"build-server-file": "babel app_es6.js --out-file app.js",
"webpack": "webpack"
}
संबंधित .babelrcफ़ाइल कुछ इस तरह हो सकती है:
{
"presets": [
[
"env",
{
"targets":
{
"node": "current"
}
}
]
]
}
फ़ाइल build-server-fileमें परिभाषित यह स्क्रिप्ट package.jsonफ़ाइल को पार्स करने और app_es6.jsफ़ाइल के आउटपुट के लिए एक निर्देश है app.js।
build-server-fileस्क्रिप्ट चलाने के बाद , यदि आप खोलते हैं app.jsऔर date-fnsआयात की तलाश करते हैं, तो आप देखेंगे कि इसे इस में बदल दिया गया है:
var _format = require("date-fns/format");
var _format2 = _interopRequireDefault(_format);
उस फ़ाइल का अधिकांश मनुष्यों के लिए gobbledygook है, हालाँकि कंप्यूटर इसे समझते हैं।
संदर्भ के लिए, एक मॉड्यूल के रूप में कैसे बनाया जा सकता है और अपनी परियोजना में आयात किया जा सकता है, उदाहरण के लिए, यदि आप स्थापित करते हैं date-fnsऔर फिर खोलते node_modules/date-fns/get_year/index.jsहैं तो आप देख सकते हैं इसमें शामिल हैं:
var parse = require('../parse/index.js')
function getYear (dirtyDate) {
var date = parse(dirtyDate)
var year = date.getFullYear()
return year
}
module.exports = getYear
ऊपर दी गई बाबेल प्रक्रिया का उपयोग करते हुए, आपकी app_es6.jsफ़ाइल तब सम्मिलित हो सकती है:
import getYear from 'date-fns/get_year';
// Which year is 2 July 2014?
var result = getYear(new Date(2014, 6, 2))
//=> 2014
और बेबल आयात को निम्न में बदल देगा:
var _get_year = require("date-fns/get_year");
var _get_year2 = _interopRequireDefault(_get_year);
और उसी के अनुसार फ़ंक्शन के सभी संदर्भों को संभालें।
expressप्रकार का होगाany। आप यहाँ से परिभाषाएँ शामिल कर सकते हैं npmjs.com/package/@types/express