Средний
30 уроков
(5 часов 6 минут)
Курс
Backbone.js
Видеокурс, который познакомит вас с Backbone.js. Данная библиотека придает структуру веб-приложениям.
Содержание

#12 — Пространство имен.

Сегодня на повестке дня — Пространство имен. Для чего оно нужно? Для того чтобы, не засорять приложение глобальными переменными и избежать множества связанных с ними проблем. Таких как перезапись переменных, итд. Так же пространство имен, позволяет структурировать ваше приложения, так чтобы было удобно манипулировать его сущностями.

К делу! Начнем с анонимной функции.

Затем создадим глобальный объект App, который и будет являться нашим пространством имен.

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

Для наших моделей, видов и коллекций, создадим подпространства, для того чтобы было удобно управлять этими сущностями. Подпространства ни что, иное, как дочерние объекты нашего пространства имен — App

Теперь перепишем весь наш проект, с учетом пространства имен.

Теперь ваше приложение избегает глобальных переменных и дает вам легко управлять всеми необходимыми сущностями. Спасибо за просмотр и чтение! Удачной разработки и до следующего скринкаста!

Материалы к уроку:
Делись:

Оставь комментарий!

12 thoughts on “#12 — Пространство имен.

  1. а зачем var person = new App.Models.Person(); если this.collection.each возвращает элемент коллекции в котором уже определена модель?

    1. NickyMeloman:

      Прошу прощения за мою невнимательность. Эта строка осталась, с какого то прошлого урока. В данном скринкасте, этот код var person = new App.Models.Person(); просто не задействован. Его можно смело удалить. По поводу this.collection.each, вы все правильно пишете. Спасибо, что заметили и отозвались.

      1. alex:

        да я тоже дошел до этого момента и 2 урока думал зачем строка осталась. Пока не прочитал коммент. А так спасибо за уроки. Всегда почему-то страшно начинать учить а вот по урокам все понятно и страх проходит. Дойду до конца и надеюсь смогу проекты писать используя backbone

  2. NickyMeloman:

    Прошу прощения за мою невнимательность. Эта строка осталась, с какого то прошлого урока. В данном скринкасте, этот код var person = new App.Models.Person(); просто не задействован. Его можно смело удалить. По поводу this.collection.each, вы все правильно пишете. Спасибо, что заметили и отозвались!

  3. kuzroman:

    Ребята спасибо что просвещаете.

  4. Rybak:

    Чтобы переменная peopleView стала глобальной и была видна из index.html, нужно записать ее определение, как:
    App.Views.peopleView = new App.Views.People({collection: peopleCollection});
    Есть еще варианты?

    1. Anton Furs:

      без var да, она будет глобальной,

      по сути это аналогично записи window.* (если конечно наш код выполняется в браузере). ну или можно например вернуть ее через return (чуть изменив инициализацию). А так на то и оборачивали в функцию, чтобы доступной она не была.

      ну а еще лучше придерживаться стиля CommonJS, через
      requir-ы и export-ы, самая распространённая практика.

      1. Евгений:

        без var в stirct mode вы получите ошибку а не глобальную переменную.

  5. Arthur Charaev:

    думаю стоит упомянуть, что в контексте урока, обёртка в виде самовызывающейся функции к созданию пространства имён не имеет никакого отношения, единственное что она делает — закрывает доступ из вне к peopleCollection и peopleView.

  6. Александр:

    А у меня ошибку стал выдавать после введения пространства имён Uncaught TypeError: Cannot read property ‘replace’ of undefined http://joxi.ru/krDpEXRI64kErp все скрипты подключаются вконце index.html http://joxi.ru/brRDRWKs1Opk21 .

  7. ur5fot:

    почему ошибка???
    FAM.Kp = {
    Model: Backbone.Model.extend({
    defaults: {
    kp: 0,
    code: 0,
    comment: »,
    date: »
    }
    }),
    Collection: Backbone.Collection.extend({
    model: FAM.Kp.Model // почему ошибка!!!!!!!
    })
    };

    спосиб

Добавить комментарий

Рекомендуемые курсы