В настоящее время я работаю над интерфейсом среднего/крупномасштабного управляемого ASP.NET-приложения ASP.NET, и у меня есть некоторые сомнения относительно правильного кода-организации/шаблона проектирования следовать. Веб-приложение создается несколькими страницами, содержащими многие виджеты Kendo UI MVC, определенные с помощью шаблона Razor.
Для тех, кто не знаком с Kendo, синтаксис бритвы переводится в Javascript как следующий фрагмент:
Я определил внутри папки Script две основные папки, и я структурировал файлы js следующим образом:
-
shared//Содержит общие файлы js -file1.js -file2.js
-
pages//Один файл на страницу
- page1.js
- page2.js
- ...
- Ticket.js//страница 4:)
Каждый js файл представляет собой отдельный модуль, определенный со следующим шаблоном:
Примечание: функция Inside init
регистрирует каждую функцию обратного вызова в событиях окна, а иногда и в блоке $(document).ready(function(){})
.
;(function () {
"use strict";
function Ticket(settings) {
this.currentPageUrls = settings.currentPageUrls;
this.currentPageMessages = settings.currentPageMessages;
this.currentPageEnums = settings.currentPageEnums;
this.currentPageParameters = settings.currentPageParameters;
this.gridManager = new window.gridManager(); //usage of shared modules
this.init();
}
Ticket.prototype.init = function () {
$("form").on("submit", function () {
$(".window-content-sandbox").addClass("k-loading");
});
...
}
Ticket.prototype.onRequestStart = function (e) {
...
}
//private functions definition
function private(a, b, c){
}
window.Ticket = Ticket;
}());
Как только мне понадобятся функции Javascript, определенные в модуле, я включаю связанный файл Javascript на странице. Объект моего объекта хранится внутри переменной и, кроме того, функция привязана к событию виджета (см. OnRequestStart).
HTML/JAVASCRIPT
@(Html.Kendo().DropDownList()
.Name("Users")
.DataValueField("Id")
.DataTextField("Username")
.DataSource(d => d.Read(r => r.Action("UsersAsJson", "User"))
.Events(e => e.RequestStart("onRequestStart"))))
var settings = {};
var ticket = new window.Ticket(settings);
function onRequestStart(e){
ticket.onRequestStart(e);
}
Я чувствую, что мой шаблон дизайна может быть недружелюбным для другого front-end delevoper, как и я, главным образом потому, что я решил не реализовывать модули Javascript внутри плагина JQuery.
Первый. Я делаю все неправильно?
Второй, мой шаблон дизайна подходит для тестовой среды Javascript?
Третий, которые являются обязательными сценариями для JQuery-плагинов?
Update
Добавлен вывод Javascript с помощью вышеупомянутого синтаксиса Razor.