2016-04-29 3 views
1

Я новичок в машинописном машинописном тексте и требую js. Я видел несколько способов импорта модулей в машинописный текст. но я не понимаю, что делают нижеприведенные коды.какие способы импорта модуля в машинописный текст и какова роль require js в загрузке модуля

1./// <reference path="foo.ts" /> 
2.import {utils} from "./util"; 
3.require(["bar"],function(bar){ 
    //use module here 
    }); 
4.define(["bar"],function(bar){ 
    //use module here 
    }); 
5.requirejs(["bar"],function(bar){ 
    //use module here 
    }); 

как они отличаются друг от друга. любой, пожалуйста, помогите.

ответ

1
  1. TypeScript-specific way of loading modules.
  2. Is the standard way of loading modules.
  3. и
  4. и
  5. являются как RequireJS загружает модули.

RequireJS - это библиотека, существовавшая до того, как JS имел официальный синтаксис для загрузки модулей. Модули RequireJS определяются с использованием вызова define, передачи зависимостей и функции, которая запускается при загрузке всех зависимостей. A require вызов - это то, что начинается с процесса загрузки, обычно находится в самом начале приложения.

import/export - стандартный синтаксис для загрузки модулей JavaScript. Синтаксис был стандартизирован iirc в прошлом году. Разрешение модуля не стандартизировано и не реализовано ни одним браузером на данный момент. Но этот синтаксис используется различными инструментами для «компиляции» JS.

Я не могу объяснить большую часть TypeScript. Статья должна предоставить вам все, что вам нужно.

Директива /// является самой распространенной из этой группы. Он служит объявлением зависимости между файлами.

0

Чтобы это понять, вы должны изучить историю модулей в JavaScript. Язык имеет только официальную поддержку модуля в самой последней версии, и не все браузеры поддерживают эту функцию. Вот список хороших статей.

http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html https://addyosmani.com/writing-modular-js/

Чтобы ответить на ваш вопрос, то первый тип используется для внутренних модулей (в настоящее время переименованы в пространствах имен). Вы бы использовали их, если у вас несколько исходных файлов, но они будут скомпилированы в один файл (с использованием опции компилятора outFile).

Второй тип - новый синтаксис модуля ES6. Вы использовали бы это в исходном коде, но на данный момент должны быть скомпилированы либо синтаксисом AMD, либо CommonJS или SystemJS (который следует стандарту ES6).

Оставшиеся синтаксис модуля AMD, define используется для определения модуля, который будет экспортировать некоторый код. require используется для импорта модулей, которые будут использовать ваш код. Вы не можете экспортировать какой-либо код с помощью require, поэтому вы обычно используете его только один раз для основного файла сценария.

С текущими версиями машинопись, вы бы не использовать AMD или CommonJS синтаксис, можно использовать стандартный синтаксис модуля ES6 и ваш компилятор затем компилировать его в соответствующий тип модуля согласно module собственности в файле tsconfig.json.