Как организовать приложение в дюрандале?

Я создал простой durandal SPA на основе учебника от @john_papa, в этом видео во множественном числе он устанавливает пакет nuget, но видео уже как год.

В этой версии при установке пакета durandal будет создана папка App, а затем папка durandal с множеством файлов js.

В новой версии durandal папка приложения не создается, вместо этого все файлы durandal создаются в папке / scripts /.

На основе учебника я создал свою структуру следующим образом: http://screencast.com/t/13B4YhqExVRQ

Однако, когда я запустил его, я получил в инструментах разработчика F12 эту ошибку: http://screencast.com/t/Sfdd0kLK

Я знаю, что путь отличается от этого учебника, поэтому я спрашиваю, как мне организовать и как использовать метод или функцию define.

Я пытался

define(['Scripts/durandal/system', 'logger'],

но это не сработало

Я заметил, что в моем main.js есть:

require.config({
    paths: { "text": "durandal/amd/text" }
});

define(function (require) {
    var system = require('durandal/system');
    app = require('durandal/app');


    system.debug(true);
    app().start().then(function () {
        app.setRoot('shell');
    });
});

person Luis Valencia    schedule 06.08.2014    source источник


Ответы (2)


Ваш вопрос довольно самоуверенный, поскольку структура проекта может сильно различаться в зависимости от того, кого вы спрашиваете. Учитывая, что я выскажу свое быстрое мнение -

  1. Все, что вы не планируете изменять, должно находиться в ваших сценариях или в папке поставщика. В структуре проекта, на которую вы ссылаетесь, я бы поместил свой Durandal и связанные с ним скрипты.
  2. Все, что вы планируете изменить, должно быть отдельным. Если это означает размещение папки приложения в корневом каталоге, сделайте это. Я бы посоветовал хранить все это в одном каталоге (например, в приложении), чтобы по соглашению вы могли настроить все свои маршруты и другой код приложения.
  3. Я всегда использую соглашение о разделении представлений и моделей представлений, как предлагает Durandal 2.x (root / app / views // root / app / viewmodels), и у меня есть четко определенная структура, такая как наличие домашнего каталога с каждой стороны.

Что касается того, почему он в настоящее время не работает, вам нужно указать конфигурацию require.js в main.js на правильный каталог, в котором живет Дюрандаль.

Я бы добавил это в ваш конфиг -

require.config ({

paths: { 
    'text': 'durandal/amd/text',
    'durandal': '../Scripts/durandal',
    'plugins': '../Scripts/durandal/plugins',
    'transitions': '../Scripts/durandal/transitions' }
});
person PW Kad    schedule 06.08.2014

Этот документ помог мне найти проблему.

http://durandaljs.com/documentation/Conversion-Guide.html

person Luis Valencia    schedule 06.08.2014