Мы создаем приложение с Durandal, которое сейчас довольно велико, и в настоящее время мы изучаем объединение всех JS-файлов, находящихся в папке App, в файл main-built.js. Довольно простой и обычный материал, я думаю.Оптимизация Durandal с Gulp и Gulp-Durandal не работает
Я использую Gulp с расширением Gulp-Durandal. Вот наш gulpfile:
var gulp = require('gulp');
var durandal = require('gulp-durandal');
gulp.task('build-portal', function() {
durandal({
baseDir: 'app',
main: 'main.js',
output: 'main-built.js',
almond: false,
minify: false
}).pipe(gulp.dest('app'));
});
А вот отрывок из нашего main.js файла
require.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins',
'transitions': '../Scripts/durandal/transitions'
},
shim: {
},
waitSeconds: 0
});
define('jquery', [], function() { return jQuery; });
define('knockout', [], function() { return ko; });
define('ga', function() { return ga; });
define(
["require", "exports", "durandal/app", "durandal/viewLocator", "durandal/system", "plugins/router", "services/logger", "modules/knockout.extensions", "modules/knockout.validation.custom"],
function (require, exports, __app__, __viewLocator__, __system__, __router__, __logger__, __koExtensions__, __koValidationCustom__) {
var app = __app__;
var viewLocator = __viewLocator__;
var system = __system__;
var router = __router__;
Как вы можете видеть в gulpfile, мы не хотим использовать миндаль, но RequireJs вместо этого, по каким-то причинам миндаль не работает с нашим проектом, и в любом случае мы предпочитаем RequireJs ли его больше, чем миндаль в конце. Вот где он выглядит, чтобы тормозить. Запуск команды для создания файла main-built.js занял некоторое время, но в конце я получаю файл, построенный со всем в нем.
Проблема в том, что при попытке загрузить приложение оно застревает на экране загрузки. Это не идет дальше, и ошибок в консоли браузера нет.
Я создал новый проект на стороне, чтобы проверить, был ли наш код несколько неисправным и обнаружил, что он может не работать. Вы можете обнаружили, что проект здесь: https://github.com/maroy1986/DurandalGulpBundling
Если я построить этот проект с миндальным вариантом к истине, все работает нормально, но если я включаю almound от сказать глотку использовать RequireJs, я получил такое же поведение, как наше приложение. Вы застряли на экране загрузки без каких-либо ошибок.
Итак, я здесь, я много читаю на эту тему, но не нашел ничего, чтобы решить эту проблему. Надежда, что кто-то здесь уже сталкивается с этим поведением и имеет решение поделиться.
Спасибо!
Это звучит многообещающе, я посмотрю на него. Благодаря! –
@ Marc-AndreR. Дайте мне знать, если это сработает для вас. У меня точно такое же требование (для использования requirejs вместо миндаля), и у меня была такая же проблема (durandal app не загружается и не застревает при загрузке).После неявного указания загрузки основного модуля (main.js) он работал так же, как при использовании миндаля. Возможно, я смогу настроить репо для этого, поскольку это, вероятно, общая проблема, с которой сталкиваются люди при использовании requirejs и durandal. – cubski
Ну, похоже, что ты понял! Это работает. В приложении все еще есть какие-то проблемы с глюком, такие как вещи, которые не загружаются, но приложение работает глобально рядом с несколькими ошибками javascripts, которые я получаю. Похоже, что он не может найти класс «app», так как я использую его для обновления заголовка страницы с помощью приложения app.title = «any» на маршрутизаторе: событие «навигация». Пытался добавить его в пути requirejs, но это, похоже, не помогает. Если бы у вас была такая же проблема, возможно, вы хотели бы поделиться своим решением :) Спасибо! –