Arasındaki büyük fark requireve import, yani requireotomatik olarak tarar node_modulesmodülleri bulmak için, ama import, ES6 geliyor ki, olmaz.
Çoğu insan derlemek için babil kullanır importve exportbu da importaynı şeyi yapar require.
Node.js'nin gelecekteki sürümü importkendini destekleyebilir (aslında, deneysel sürüm zatenimport destekliyor) node_modulesve Node.js'nin notlarına bakılırsa desteklenmez , ES6'ya dayanır ve modülün yolunu belirtmelidir.
Bu yüzden importbabel ile kullanmamanızı öneririm , ancak bu özellik henüz onaylanmadı, node_modulesgelecekte destekleyebilir , kim bilir?
Referans olarak, aşağıda babil ES6'nın importsözdizimini CommonJS'nin sözdizimine nasıl dönüştürebileceğinin bir örneğidir require.
Dosyanın app_es6.jsbu 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.jsondosya 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 .babelrcdosya şöyle olabilir:
{
"presets": [
[
"env",
{
"targets":
{
"node": "current"
}
}
]
]
}
Dosyada build-server-filetanımlanan bu komut package.jsondosyası, babel'in app_es6.jsdosyayı ayrıştırıp çıktısını alması için bir yönergedir app.js.
build-server-fileKomut dosyasını çalıştırdıktan sonra app.js, date-fnsiç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-fnsve 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.jsdosyanı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.
expressolacaktırany. Tanımları buradan ekleyebilirsiniz npmjs.com/package/@types/express