Arasındaki büyük fark require
ve import
, yani require
otomatik olarak tarar node_modules
modülleri bulmak için, ama import
, ES6 geliyor ki, olmaz.
Çoğu insan derlemek için babil kullanır import
ve export
bu da import
aynı şeyi yapar require
.
Node.js'nin gelecekteki sürümü import
kendini destekleyebilir (aslında, deneysel sürüm zatenimport
destekliyor) node_modules
ve Node.js'nin notlarına bakılırsa desteklenmez , ES6'ya dayanır ve modülün yolunu belirtmelidir.
Bu yüzden import
babel ile kullanmamanızı öneririm , ancak bu özellik henüz onaylanmadı, node_modules
gelecekte destekleyebilir , kim bilir?
Referans olarak, aşağıda babil ES6'nın import
sözdizimini CommonJS'nin sözdizimine nasıl dönüştürebileceğinin bir örneğidir require
.
Dosyanın app_es6.js
bu içe aktarmayı içerdiğini varsayalım:
import format from 'date-fns/format';
Bu, format işlevini date-fns düğümü paketinden içe aktarmak için bir yönergedir .
İlgili package.json
dosya böyle bir şey içerebilir:
"scripts": {
"start": "node app.js",
"build-server-file": "babel app_es6.js --out-file app.js",
"webpack": "webpack"
}
İlgili .babelrc
dosya şöyle olabilir:
{
"presets": [
[
"env",
{
"targets":
{
"node": "current"
}
}
]
]
}
Dosyada build-server-file
tanımlanan bu komut package.json
dosyası, babel'in app_es6.js
dosyayı ayrıştırıp çıktısını alması için bir yönergedir app.js
.
build-server-file
Komut dosyasını çalıştırdıktan sonra app.js
, date-fns
içe aktarmayı açar ve ararsanız, bu dosyaya dönüştürüldüğünü görürsünüz:
var _format = require("date-fns/format");
var _format2 = _interopRequireDefault(_format);
Bu dosyanın çoğu çoğu insan için gobbledygook, ancak bilgisayarlar bunu anlıyor.
Ayrıca bir modül oluşturulur ve yüklerseniz, projenize içine alınabilir nasıl bir örnek olarak referans için date-fns
ve daha sonra açmak node_modules/date-fns/get_year/index.js
İçerdiği görebilirsiniz:
var parse = require('../parse/index.js')
function getYear (dirtyDate) {
var date = parse(dirtyDate)
var year = date.getFullYear()
return year
}
module.exports = getYear
Yukarıdaki babel işlemini kullanarak app_es6.js
dosyanız şunları içerebilir:
import getYear from 'date-fns/get_year';
// Which year is 2 July 2014?
var result = getYear(new Date(2014, 6, 2))
//=> 2014
Babel ithalatı şu şekilde değiştirir:
var _get_year = require("date-fns/get_year");
var _get_year2 = _interopRequireDefault(_get_year);
Ve işleve ilişkin tüm referansları buna göre ele alın.
express
olacaktırany
. Tanımları buradan ekleyebilirsiniz npmjs.com/package/@types/express