2016-01-04 31 views
12

Zauważyłem, że przełączanie się między używaniem const a importem jest wskazane w przypadku odwoływania się do bibliotek w aplikacjach node.js przy użyciu składni es6 z Babel.Jaka jest różnica między importem a const, a która jest preferowana w commonjs?

Jaka jest preferowana metoda i jaka jest różnica między używaniem const a importem? Zakładając, że importujesz tę samą bibliotekę w wielu plikach/komponentach.

const

const React = require('react') 

import

import React from 'react' 

Oto definicje każdego ale ja nadal nie jestem pewien, który w użyciu.

import

Oświadczenie import służy do importowania funkcji, obiektów lub prymitywów, które zostały wyeksportowane z modułu zewnętrznego, innego skryptu itp

const

const deklaracja tworzy odczytu - jedyne odniesienie do wartości. Nie oznacza to, że wartość, którą posiada, jest niezmienna, tylko że identyfikator zmiennej nie może być ponownie przypisany.

+1

Drugi pochodzi ze standardu (ES2015), pierwszy nie. – zerkms

+0

Składnia 'import' to nowa * natywna * składnia ES2015 dla systemu modułu JavaScript. – Pointy

+1

Naprawdę pytasz, jaka jest różnica między wymaganiami węzła a importem ES2015, co sprawia, że ​​jest to [duplikat] (http://stackoverflow.com/questions/31354559/using-node-js-require-vs-es6 -import-export) – adeneo

Odpowiedz

7

Jaka jest preferowana metoda i jaka jest różnica między używaniem const a import?

W 2016 r. Warto trzymać się z numerem import, ponieważ jest to część standardu.

Nie ma powodów technicznych preferuje import nad require choć: wszystko, co można zrobić za pomocą require można zrobić z import i vice versa. W niektórych przypadkach jeden będzie bardziej zwięzły, w innym - drugi.

Podsumowując: wybierz ten, który pasuje do konwencji/konsystencji kodu projektu.

+0

Dzięki, użyję wtedy 'import'. Byłem po prostu zdezorientowany, ponieważ niektóre biblioteki redux i przykłady wykorzystywały podejście "const", które uważałem za dostrzegalną korzyść, że byłoby to tylko do odczytu. Jak wspomniałeś w komentarzach, ** importowany identyfikator nie może zostać zmieniony **, co oznacza, że ​​nie ma żadnej korzyści. Dobre linki dostarczone przez ciebie [tutaj] (http://ecma-international.org/ecma-262/6.0/#sec-createimportbinding) i @adeneo [tutaj] (http://exploringjs.com/es6/ch_modules.html # sec_imports-as-views-na-export) pomagają go wyjaśnić. –

+2

Główną zaletą podejścia 'const' jest to, że działa on w węźle 4/5 bez transpozycji, co jest prawdopodobnie powodem, dla którego go zobaczyłeś. – loganfsmyth

Powiązane problemy