Typescript. KnockoutJS. Неперехваченная ошибка ссылки: требование не определено

#typescript #knockout.js #npm

#typescript #knockout.js #npm

Вопрос:

В настоящее время я слежу за официальной демонстрацией ts-ko. Когда я помещаю прямую ссылку на Ko:

 /// <reference path="./node_modules/@types/knockout/index.d.ts" /> 
 

Ошибок нет. Но когда ссылка добавляется следующим образом:

 import * as ko from "knockout";
 

выдается ошибка:

Неперехваченная ошибка ссылки: требование не определено

Демонстрация Typescript утверждает, что:

Нам нужно захватить сам Knockout, а также что-то, называемое RequireJS .

Как правильно определить RequireJS? Почему требуется использовать requirejs для случая «импорта»?

package.json

   "dependencies": {
    "jquery": "3.1.1",
    "@types/jquery": "2.0.33",
    "knockout": "3.4.0",
    "@types/knockout": "1.1.5"
  }
 

Ответ №1:

С домашней страницы RequireJS. RequireJS — это загрузчик файлов и модулей JavaScript.

Как правильно определить RequireJS?

Вы можете просто ссылаться на свой RequireJS из тега скрипта.

 <script src="scripts/require.js" type="text/javascript"></script>
 

и определите свою конфигурацию RequireJS.

 require.config({
    baseUrl: 'app',
    paths: {
        text: "../scripts/text" //Path to text.js, you will use this to load html that will be used in your ko components,
        widgets: "widgets",
        app: "."
    }
});
 

Затем вы можете зарегистрировать свой компонент точно так же, как этот.

 ko.components.register(name, {
    viewModel: { require: path },
    template: { require: 'text!'  path  '.html' }
});
 

Почему требуется использовать requirejs для случая «импорта»?

Для асинхронной загрузки ваших компонентов ko вам нужен загрузчик модулей, такой как RequireJS. Смотрите эту документацию.

Комментарии:

1. Учебное пособие по requirejs: youtube.com/watch?v=eRqsZqLyYaU Структура папок для require js: github.com/volojs/create-template