के बीच मुख्य अंतर 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