Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
igor_bogomolov
23 / 23 / 2
Регистрация: 02.02.2011
Сообщений: 27
#1

Структура проектов - JavaScript

03.02.2011, 01:01. Просмотров 4079. Ответов 12
Метки нет (Все метки)

Здравствуйте всем.
Недавно в качестве хобби и саморазвития решил заняться веб разработкой. Интересует именно создание красивых, динамических веб интерфейсов, аналогичным десктоп приложениям. В качестве инструмента выбрал dojo toolkit.

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

К примеру, имею вот такую структуру
XML
1
2
3
4
5
6
7
8
9
10
11
12
DojoProjects/
    |---Project/
    |    |---dojo/
    |    |    |---dijit/
    |    |    |---dojo/
    |    |    |---dojox/
    |    |---scripts/
    |    |---index.html
    |---Project_1/
         |---dojo/
         |---scripts/
         |---index.html
Dojo подцепляю следующим образом
Javascript
1
2
3
4
5
<script type="text/javascript" src="dojo/dojo/dojo.js">
</script>
<script type="text/javascript">
    dojo.require("dojo.i18n");
</script>
При такой структуре всё работает. Но меня не устраивает, что в каждый проект мне нужно копировать исходники с dojo. Хотелось бы вынести его на один уровень выше, что бы он был в одном экземпляре, и подключать уже его из каждого проекта. Т.е.
XML
1
2
3
4
5
6
7
8
DojoProjects/
    |---dojo/
    |---Project/
    |    |---scripts/
    |    |---index.html
    |---Project_1/
         |---scripts/
         |---index.html
Но при такой структуре никак не удаётся подцепить dojo. Делаю так
Javascript
1
2
3
4
5
<script type="text/javascript" src="../dojo/dojo/dojo.js">
</script>
<script type="text/javascript">
    dojo.require("dojo.i18n");
</script>
dojo.i18n при этом не подгружается.
Что я делаю не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2011, 01:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Структура проектов (JavaScript):

Логическая структура слайдера
Добрый день. Делаю слайдер. Конечный вид прикреплен картинкой. Нарезать шаблон...

Структура кода для предметов
Хочу сделать автономную вики, вот только не могу определится как лучше это все...

Структура проектов, структура выходного каталога и пользовательские расширения сборок
В общем есть решение из нескольких проектов. Есть зависимости от сторонних...

Intellij Idea структура проектов
всем привет! подскажите пожалуйста. раньше использовал eclipse, но теперь юзаю...

В чем разница MFC проектов и CLI проектов?
хочется свободно использовать winApi функции т.к. мне кажется что .net в CLI/...

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто...

12
igor_bogomolov
23 / 23 / 2
Регистрация: 02.02.2011
Сообщений: 27
04.02.2011, 14:35  [ТС] #2
Кажется понемногу приходит понимание.
dojo.require работает через XMLHttpRequest. Его реализация в разных браузерех по видимости отличается. Например в Firefox вот такая структура проекта работает нормально

XML
1
2
3
4
5
DojoProjects/
    |---Project/
    |    |---dojo/
    |    |---scripts/
    |    |---index.html
В гуглохроме уже нет. И он вполне понятно объяснил почему (в отличае от firebug в firefox).

XMLHttpRequest cannot load file:///home/igor_bogomolov/project/dojo/dojo/dojo/_firebug/firebug.js. Cross origin requests are only supported for HTTP.
dojo/dojo/dojo.js:14Uncaught Error: Could not load 'dojo._firebug.firebug'; last tried './_firebug/firebug.js'
Поднял веб сервер. Всё заработало как надо, при любой структуре проектов.
Вот только меня это опять не устраивает. Неужели нет возможности использовать dojo без веб сервера?

Я хочу написать расширение для браузеров. В нем предполагается красивый интерактивный веб интерфейс. Естественно у пользователя никакого веб сервера не предполагается. Должно все работать просто из файловой системы. Сейчас получается что для firefox такое организовать можно, из-за его особенностей. Для google chrome уже нет.

Правильно ли я вообще всё понял и как быть?
0
Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
09.02.2011, 00:31 #3
igor_bogomolov. Может поделишься для чего тебе это нужно? Красивый веб-интерфейс это понятно. Но какую функциональность несёт твоя разработка.

Я хочу написать расширение для браузеров. В нем предполагается красивый интерактивный веб интерфейс.
Опиши подробней что ты хочешь реализовать?

Если ты хочешь написать локальное приложение, то зачем использовать для этого веб? Но если у тебя великое желание написать такое приложение на выбранном фрэймворке, попробуй использовать для этого Adobe Air. В кратце скажу, что Adobe Air это программа, позволяющая установить веб приложение как локальное. Но как я понял тебе это не подойдёт, так как установленное приложение будет иметь свою среду выполнения, а не браузер.

Не обижайся, но на мой взгляд реализация твоей идеи бессмысленна.
0
igor_bogomolov
23 / 23 / 2
Регистрация: 02.02.2011
Сообщений: 27
09.02.2011, 22:21  [ТС] #4
Kdn,
Да нет конечно, для обид нет ни каких поводов. Возможно со стороны и на взгляд профессионала это действительно выглядит бессмысленно. Но я в этой области не профессионал, более того абсолютный новичок, поэтому могу позволить себе некоторые вольности. Вот засела в голове идея и хочется попробовать её реализовать. Заодно шишек понабиваю, это полезно. Как говорят, за одного битого трёх небитых дают. Саму идею раскрывать не хочу, что бы не выглядеть еще более глупо.

Adobe Air меня не интересует, я не пытаюсь веб приложение превратить в десктоп. Оно будет открываться только в браузерах.

Сейчас же меня интересуют возможности dojo. Возможно ли полноценно его использовать на локальной машине, без сервера?
Например YUI это позволяет.
0
Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
10.02.2011, 11:59 #5
igor_bogomolov, я никогда не пользовался dojo. И посему ничего сказать не могу по поводу возможности работы локально. Чтобы это выяснить тебе придёться разобраться с внутренней реализацией самого фрэймворка(так сказать с ядром), а за одно и подымешь уровень познаний в JavaScript. Посмотри реализацию той же функции dojo.require, разберись как она работает. В итоге может у тебя возникнут идеи написать свою функцию добавления модулей.
Как вариант попробуй ExtJS, я с ним уже около 1,5 года работаю. Очень мощный фрэймворк. Очень богатый набор уже реализованных компонентов. Да и свои писать одно удовольствие.
Ну а если ты твёрдо решил dojo, то подожди до выходных. Может будет время посмотрю на этого зверя(dojo) =) ..

Добавлено через 13 часов 0 минут
igor_bogomolov, В общем посмотрел реализацию dojo.require(). Там действительно применяется принцип модульности, т.е пространство имён полностью соответствует физическому расположению скриптов в папке. Делается GET запрос и извлекается текст скрипта функцией dojo._getText(). После выполняется запуск скрипта посредством eval().
Так что могу только предложить 2 способа:
1. Объединить все модули в один .js файл;
2. Обьявить необходимые модули сразу в HTML файле при помощи
HTML5
1
<script type="text/javascript" src="Физическое расположение скрипта модуля"></script>
1
igor_bogomolov
23 / 23 / 2
Регистрация: 02.02.2011
Сообщений: 27
10.02.2011, 20:38  [ТС] #6
Kdn, спасибо за помощь
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
11.02.2011, 13:18 #7
dojo теряет свои позиции в рынке (если они когда-либо вообще были), зачем его использовать?
0
Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
11.02.2011, 15:02 #8
Hagrael, +1 Согласен. Посмотрев внутреннюю реализацию, мне как то не очень понравилось. Да и визуальные компоненты вообще как то не красиво сделаны.
Мне из всех фрэймворков ExtJS нравится. Кстати сегодня 11 февраля, выходит 4-ая много обещающая версия.
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
12.02.2011, 11:07 #9
Сейчас все на jQuery сидят, ну и не могу сказать, что они неправильно поступают. У ExtJS большой размер, так что и к нему меня тоже не тянет. Какие плюсы у ExtJS перед jQuery?
0
DenQ
Комбинатор
978 / 246 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.02.2011, 14:30 #10
Цитата Сообщение от Hagrael Посмотреть сообщение
Какие плюсы у ExtJS перед jQuery?
Уже готовый набор виджетов. Не нужно заботиться о том где расположить крестик на окошке-плавающем, просто скажи/укажи, что оно должно быть и оно будет, именно там где и должно быть и так там со всем. Это очень удобный фреймворк, jquery по сравнению с ним низкоуровневая библиотека. Я уже имею два закрытых проекта на ExtJS(один обсуждался тут в разделе "бета-тестирование"), но пересел на jquery так как, у них не такая строгая политика в отношении бизнеса.
Цитата Сообщение от igor_bogomolov Посмотреть сообщение
Неужели нет возможности использовать dojo без веб сервера?
А как же ajax?
Цитата Сообщение от Kdn Посмотреть сообщение
Мне из всех фрэймворков ExtJS нравится. Кстати сегодня 11 февраля, выходит 4-ая много обещающая версия
Надо будет глянуть...
А на хабре пишут, что финальный релиз запланирован на 28 февраля 2011 года.
0
igor_bogomolov
23 / 23 / 2
Регистрация: 02.02.2011
Сообщений: 27
12.02.2011, 15:23  [ТС] #11
Цитата Сообщение от Hagrael Посмотреть сообщение
dojo теряет свои позиции в рынке (если они когда-либо вообще были), зачем его использовать?
Ну тут я немного не в теме. Я не знаю какой фреймворк какие позиции на рынке занимает. Я разработчик qt/с++, а веб для меня лишь новое хобби. JQuery конечно на слуху, но я так и не понял есть в ней виджеты или нет. А это для меня было очень важно при выборе. Поэтому выбор встал между dojo и yui. В dojo привлекла его модульность (что в моём случае оказалось скорее минусом) и поддержка со стороны IBM. Не согласен что визуальные компоненты dojo выглядят не привлекательно. Мне как раз таки понравились демонстрационные примеры с оф. сайта.

Цитата Сообщение от DenQ Посмотреть сообщение
А как же ajax?
Тут опять не понял в чем вопрос заключается. Извините, но я еще не так продвинут.
Видимо вы ассоциировали ajax с XMLHttpRequest. А это предполагает наличие сервера. Многое говорят что подобные запросы - это основное предназначение ajax.
Я же отношусь к этому несколько по другому. XMLHttpRequest - это для меня лишь один из инструментов для достижения цели. А цель - изменение части содержимого страницы без полной её перезагрузки. И тут, в моей задаче, мне бы было достаточно простого манипулирования DOM. Но к сожалению я не могу подгрузить модули dojo без XMLHttpRequest. Так уж он устроен.
0
Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
12.02.2011, 18:05 #12
DenQ, Блин, где то я видел эту дату 11.02.2011 и себе даже в телефон вбил на напоминание
Ну 28 так 28. Подождём чуть чуть.
0
igor_bogomolov
23 / 23 / 2
Регистрация: 02.02.2011
Сообщений: 27
15.02.2011, 22:50  [ТС] #13
Цитата Сообщение от igor_bogomolov Посмотреть сообщение
Сейчас же меня интересуют возможности dojo. Возможно ли полноценно его использовать на локальной машине, без сервера?
Нашел ответ на свой вопрос. Всё оказывается возможно. Если скачать исходники dojo (архив с суффиксом -src), внутри можно найти директорию с утилитами для тестирования и подготовки приложения к эксплуатации (сборки по простому). Так вот эти инструменты сборки позволяют легко объединить несколько модулей в один js файл, который называется слоем, и который можно подключить в заголовке страницы стандартным способом, а не через dojo.require
Javascript
1
<script type="text/javascript" src="mylayer.js"></script>
P.S. Вопрос считаю решенным. Тему можно закрывать.
0
15.02.2011, 22:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2011, 22:50
Привет! Вот еще темы с решениями:

Структура таблицы для ввода номенклатуры в БД Аксесс 2003+ структура изделия
Доброго времени суток форумчане! Продолжаю писать свою самоделку, возник...

Структура «База», сущности «Универсам» и «Продукты», структура «Товар»
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности...

структура array предназначена для хранения строки типа char. Структура имеет функцию, которая позволяет изменить символ
структура array предназначена для хранения строки типа char. Структура имеет...

Структура DateTime, битовая структура
Условие: Структура содержит информацию о дате и времени некоторого события:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru