Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
5 / 4 / 2
Регистрация: 11.12.2013
Сообщений: 168
1

MVC в JavaScript

18.08.2016, 10:31. Показов 1308. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, всем.
Есть такой код:
Javascript
1
2
3
4
5
6
function coordinatesPoint(e){
    e = window.event;
    var mapField = document.getElementById( 'mapField' );
    console.log("mouse location:", e.clientX, e.clientY);
}
mapField.addEventListener( "click", coordinatesPoint );
Подскажите, пожалуйста, каким образом его перенести на шаблон MVC? Вот мой вариант, но никак не пойму что куда.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* -------------------------------- begin view -------------------------------------------- */
 
var view = {    
 
    getWimdow: function(){
        e = window.event;
    },
    getFielfMap: function( e ){     
        var mapField = document.getElementById( 'mapField' );
        console.log("mouse location:", e.clientX, e.clientY);
    },
 
    getPositionPoint: function(){
        mapField.addEventListener( "click", coordinatesPoint );
    }
    
 
};
 
/* -------------------------------- end view -------------------------------------------- */
 
 
/* ------------------------------- begin model ------------------------------------------ */
 
var model = {
 
    
    
};
 
/* ------------------------------- end model ------------------------------------------ */
 
 
/* --------------------------- begin controller ---------------------------------------- */
 
var controller = {
 
    getCoordinatesPoint: function(){
        view.getWimdow();
        view.getFielfMap();
        view.getPositionPoint();
    }
    
 
};
 
/* ---------------------------- end controller ----------------------------------------- */
 
 
/* -------------------- anonymous initialize function------------------------------------ */
 
( function(){
 
    var start = {
 
        init: function(){
            this.main();
            this.control();
            this.event();
        },
 
        main: function(){
            //options
        },
 
        control: function(){
            controller.getCoordinatesPoint();
        },
 
        event: function(){
            // event handler (such as onclick)
        }
    };
 
    start.init();
 
} )();
/* -------------------- anonymous initialize function------------------------------------ */
Знаю, что "coordinatesPoint" не в тему, но как заменить, невдомек.

Добавлено через 17 часов 27 минут
Отвечаю сам себе))
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/* -------------------------------- begin view -------------------------------------------- */
 
var view = {    
 
    getFielfMap: function( pointX, pointY ){    
        
        var mapField = document.getElementById( 'mapField' ),
            inputX = document.getElementById( 'coordinates_x' ),
            inputY = document.getElementById( 'coordinates_y' );
 
            inputX.value = pointX;
            inputY.value = pointY;
 
    }   
 
};
 
/* -------------------------------- end view -------------------------------------------- */
 
 
/* ------------------------------- begin model ------------------------------------------ */
 
var model = {
 
    pointPosX: 0,
    pointPosY: 0,
 
    getPositionPointX: function(){
        var e = window.event;
        this.pointPosX = e.clientX; 
        return this.pointPosX;
    },
    getPositionPointY: function(){
        var e = window.event;
        this.pointPosY = e.clientY;
        return this.pointPosY;
    }
    
};
 
/* ------------------------------- end model ------------------------------------------ */
 
 
/* --------------------------- begin controller ---------------------------------------- */
 
var controller = {
 
    getCoordinatesPoint: function(){
        var pointX = model.getPositionPointX(),
            pointY = model.getPositionPointY();
 
        view.getFielfMap( pointX, pointY );
    }
    
 
};
 
/* ---------------------------- end controller ----------------------------------------- */
 
 
/* -------------------- anonymous initialize function------------------------------------ */
 
( function(){
 
    var start = {
 
        init: function(){
            this.main();
            this.control();
            this.event();
        },
 
        main: function(){
            //options
        },
 
        control: function(){
            
        },
 
        event: function(){
            mapField.onclick = function(){
                controller.getCoordinatesPoint();
            }
        }
    };
 
    start.init();
 
} )();
/* -------------------- anonymous initialize function------------------------------------ */
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2016, 10:31
Ответы с готовыми решениями:

ОПП, MVC JavaScript
Здравствуйте! 1.Подскажите пожалуйста, как в JS реализуется ОПП? 2.Подскажите пожалуйста, как...

MVC Javascript (часть 2 - event)
Добрый день, всем. Наконец-то немного разгреб завалы работы, и снова взялся за свою тестовую...

MVC Javascript (часть 3 - массив точек)
Доброе утро, всем. Продолжаю писать учебную программу на JS и снова уперся в невидимую (для меня)...

Возможно ли на javascript написать MVC фреймворк на js-файлах?
Возможно ли на javascript написать MVC фреймворк на js-файлах? Т.е. чтобы была model.js...

21
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
18.08.2016, 13:10 2
Максим_М21,
Model - получает/обновляет/отправляет данные
View - то что видит пользователь, HTML, CSS
Controller - связь модели и вьюхи

У вас вью как таковой вообще отсутствует
1
5 / 4 / 2
Регистрация: 11.12.2013
Сообщений: 168
18.08.2016, 16:02  [ТС] 3
Цитата Сообщение от XRoy Посмотреть сообщение
У вас вью как таковой вообще отсутствует
Добрый день. С теорией я знаком, но вот на практике - увы. Но вот это
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var view = {    
 
    getFielfMap: function( pointX, pointY ){    
        
        var mapField = document.getElementById( 'mapField' ),
            inputX = document.getElementById( 'coordinates_x' ),
            inputY = document.getElementById( 'coordinates_y' );
 
            inputX.value = pointX;
            inputY.value = pointY;
 
    }   
 
};
не есть вью?
0
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
18.08.2016, 16:17 4
View - то что видит пользователь, HTML, CSS
Сами элементы будут вью, в не обращение к ним
1
5 / 4 / 2
Регистрация: 11.12.2013
Сообщений: 168
18.08.2016, 16:49  [ТС] 5
Цитата Сообщение от crackos Посмотреть сообщение
Сами элементы будут вью, в не обращение к ним
А элементы не должны в HTML быть? Генерировать каждый эл. в JS, как то очень сложно, или нет?
0
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
18.08.2016, 16:58 6
Зачем вам вообще MVC, когда у вас код из одной функции? А для реальных проектов существуют фреймворки
0
5 / 4 / 2
Регистрация: 11.12.2013
Сообщений: 168
18.08.2016, 17:17  [ТС] 7
Цитата Сообщение от crackos Посмотреть сообщение
Зачем вам вообще MVC, когда у вас код из одной функции?
Вообще-то функция одна, потому что я лишь начал писать. В результате этот скрипт должен делать несколько действий. Программу придумал для того, чтобы на практике понять принципы ООП. Да на JQ, сплошным потоком, быстрее будет, но это не мой путь.
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
18.08.2016, 17:21 8
Цитата Сообщение от crackos Посмотреть сообщение
Сами элементы будут вью, в не обращение к ни
Я разве где-то говорил про обращение

Цитата Сообщение от Максим_М21 Посмотреть сообщение
А элементы не должны в HTML быть? Генерировать каждый эл. в JS, как то очень сложно, или нет?
Используйте шаблонизатор для динамических(напишите свой, если это конечно учебная задача) для динамических элементов, статические это обычный html
0
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
18.08.2016, 17:29 9
Цитата Сообщение от XRoy Посмотреть сообщение
Я разве где-то говорил про обращение
я не отвечал вам, а указывал тс еще раз на то, что вы написали
0
5 / 4 / 2
Регистрация: 11.12.2013
Сообщений: 168
19.08.2016, 07:59  [ТС] 10
Цитата Сообщение от XRoy Посмотреть сообщение
Используйте шаблонизатор для динамических
То есть Вы утверждаете, что лучше не парится и освоить какой-то фреймворк?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
19.08.2016, 21:34 11
Максим_М21,
Свой велосипед хорош для обучения, нести его в продакш, значит, что часть времени придется его допиливать и мостить костыли
0
не Администратор ^_^
988 / 223 / 23
Регистрация: 03.05.2009
Сообщений: 1,493
Записей в блоге: 1
20.08.2016, 03:06 12
Максим_М21, а каков должен быть конечный результат? что из себя представляет программа? что она будет делать?
0
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
20.08.2016, 13:45 13
Цитата Сообщение от Unick Посмотреть сообщение
а каков должен быть конечный результат? что из себя представляет программа? что она будет делать?
судя по имени "картаПоле" это либо геолокация, либо игрушка
0
5 / 4 / 2
Регистрация: 11.12.2013
Сообщений: 168
21.08.2016, 08:39  [ТС] 14
Цитата Сообщение от Unick Посмотреть сообщение
а каков должен быть конечный результат? что из себя представляет программа?
Суть проста:
Человек путешествует. Забрел в какое то место, и нашем несколько интересных штук. У него есть топографические карты(эл. вариант), на которых можно ставить точки.
В последствии карту с информацией можно переслать другу.
Там еще несколько примочек, но то не так важно.
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
21.08.2016, 16:16 15
Максим_М21,

У вас ф-ция принимает параметр - событие мыши, т.е. пользовательского интерфейса, а значит она является ф-цией view и должна передавать данные (модель) в контроллер. По одной ф-ции можно много чего придумать. В целом примерно так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* -------------------------------- app -------------------------------------------- */
function App()
{
    this.point = null;
}
 
App.prototype.setPoint = function(point)
{
    this.point = point;
}
 
 
/* -------------------------------- model -------------------------------------------- */
function Point(x, y)
{
    this.x = x;
    this.y = y;
}
 
/* -------------------------------- controller -------------------------------------------- */
function Controller()
{ 
    this.app = new App();
    this.someView = new View(this);
}
 
Controller.prototype.createCoordinatesPoint = function(point)
{
    this.app.setPoint(point);
    this.someView.logData("mouse location: " + point.x + " " + point.y);
}
 
/* -------------------------------- view -------------------------------------------- */
function View(controller)
{
    this.controller = controller;
}
 
//ф-ции вызываемые пользователем
View.prototype.createCoordinatesPoint = function(e){
    //e = window.event;                                                      //зачем????
    var mapField = document.getElementById( 'mapField' );  
    var point = new Point(e.clientX, e.clientY);
    this.controller.createCoordinatesPoint(point);
}
 
//ф-ции вызываемые из контроллера
View.prototype.logData= function(data)
{
    console.log(data);
}
Добавлено через 5 минут
Хотя как писали раньше, лучше пользоваться готовыми фреймворками. А лучше подумать о задаче, нужно ли здесь это, м.б. не нужно?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
21.08.2016, 20:45 16
pro_100_gram,
Всю бизнес логику держат в моделях, контроллеры просто связывают различные вьюхи между млделью

Допустим есть гугл и яндекс карты, модель для них одна : хранение координат, их отправка и все такое; контроллеры: просто должны связать модель и конкретную реализацию(апи); вью содержат разметку
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
21.08.2016, 23:21 17
Цитата Сообщение от XRoy Посмотреть сообщение
Всю бизнес логику держат в моделях, контроллеры просто связывают различные вьюхи между млделью
Бизнес логика никак не может лежать в моделях, модели описывают сущности предметной области. Бизнес логика лежит в бизнес сервисах.

Цитата Сообщение от XRoy Посмотреть сообщение
Допустим есть гугл и яндекс карты, модель для них одна : хранение координат
Модель - это просто сущность, например координата - это модель.
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
22.08.2016, 00:34 18
Модель - это просто сущность, например координата - это модель.
Признак говнокода, модели которые только и представляют сущности, и раздутые контроллеры
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
22.08.2016, 11:13 19
XRoy, Да что ты говоришь? Если у тебя бизнес логика лежит в модели и эта же модель отправляет куда-то данные, "и все такое", то это полное отсутствие понимание самого паттерна MVC. Не надо нести бред, прочитай хотя бы что-то по MVC. Или рассмеши ка моделью которая отправляет данные координат и "все такое".

Цитата Сообщение от XRoy Посмотреть сообщение
модели которые только и представляют сущности
Не только сущности. Координата - это сущность, или точка - это сущность. А может быть совокупностью данных, например
координата и пользователь, и также может содержать методы по их обработке (входит ли точка в координату, парсинг данных), но не отправке или взаимодействию с БД и бизнес логикой.

Нести бред про бизнес логику в моделях и отправку данных моделями не надо. Для бизнес логики - есть бизнес сервисы, а для отправки данных как раз и существуют View и Controller.
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
22.08.2016, 13:12 20
pro_100_gram,
Вплел бизнесс сервисы в mvc., обмен данными во Вью и контроллерах
Где же такому начитаться можно

Если у тебя бизнес логика лежит в модели и эта же модель отправляет куда-то данные,
Явно что в одном файле/классе это не лежит
DTO отдельно, от бизнес логики
0
22.08.2016, 13:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2016, 13:12
Помогаю со студенческими работами здесь

Вставка элементов меню (содержащих javascript) через javascript
Пишу курсовой проект по JavaScript в ходе которого потребовалось создать небольшой локальный сайт,...

Выполнение Javascript файла в котором присутствуют javascript теги
text1.js <link href='http://alexgorbatchev.com/pub/sh/2.1.364/styles/shCore.css'...

Как перезагрузить javascript, javascript-ом?
как с помощью javascript перезагрузить javascript ? Смысл в том что один из моих скриптов выполняет...

Javascript (codeacademy - "'WHILE' LOOPS IN JAVASCRIPT(Dragon Slayer!)")
Пожалуйста, помогите прочитать этот код!!! var slaying = true; // A bit of new math magic to...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru