2017-02-15 20 views
1

Меня немного путают различные термины, используемые в конфигурации SystemJS. Это говорит о модуль, местоположение, пакет и т.д ...Что такое модуль Vs location Vs package в конфигурации SystemJS?

Не модуль в JS является одним файлом, и пакет представляет собой набор модулей или файлов? Если да, то каким образом модуль может быть псевдонимом для пакета?

Это из documentation page:

Опция карта похожа на пути, но действует очень рано в процессе нормализации. Это позволяет отображать модуль псевдоним местоположение или пакет:

ответ

1

Да Модуль представляет собой один файл, в JavaScript это просто имя файла (с предполагаемой .js расширения) в кавычках после from ключевого слова в

import ... from 'some-module'; 

В конфигурационном файле SystemJS paths и map могут использоваться для определения, что такое фактический файл или URL-адрес, на который ссылается some-module.

packages в файле конфигурации позволяет применять набор параметров конфигурации (расширение по умолчанию, формат модуля, пользовательский загрузчик и т. Д.) Для всех модулей в определенном месте или под ним (ключ в объекте packages).

Одним из параметров в packages является main, который похож на main в package.json в узле (кроме того, что это значение по умолчанию пусто, не index.js): он определяет, какой файл, когда сам пакет местоположение отображается в from в загрузке import заявление.

Итак, я думаю, «как модуль может быть псевдонимом для пакета?» вопрос об этом

Опция карты похожа на пути, но действует очень рано в процессе нормализации . Это позволяет отображать модуль псевдоним для расположения или пакета:

можно объяснить на примере:

paths: { 
    'npm:': 'node_modules/' 
}, 
map: { 
    'some-module': 'npm:some-module' 
}, 
packages: { 
    'some-module': { 
     main: './index.js' 
    } 
} 

когда эти map, packages и path настройки применяются SystemJS к

import something from 'some-module'; 

они приведут к тому, что SystemJS загрузит модуль с node_modules/some-module/index.js под номером baseURL.

и

import something from 'some-module/subcomponent'; 

отображается node_modules/some-module/subcomponent.js.

Примечание: это основано на моем опыте с SystemJS 0.19. Я еще не пробовал 0.20.