AngularJS

Поделись знанием:
Перейти к: навигация, поиск
К:Википедия:Статьи без источников (тип: не указан)
AngularJS
Разработчик

Brat Tech LLC, Google Inc. и сообщество

Первый выпуск

2009

Последняя версия

1.5.8 (22.07.2016)

Тестовая версия

2.0.0 beta 9 (10.03.2016)

Состояние

Active

К:Википедия:Статьи без изображений (тип: не указан)К:Программное обеспечение, разработанное в 2009 году

AngularJS — JavaScript-фреймворк с открытым исходным кодом. Предназначен для разработки одностраничных приложений. Его цель — расширение браузерных приложений на основе MVC шаблона, а также упрощение тестирования и разработки.

Фреймворк работает с HTML, содержащим дополнительные пользовательские атрибуты, которые описываются директивами, и связывает ввод или вывод области страницы с моделью, представляющей собой обычные переменные JavaScript. Значения этих переменных задаются вручную или извлекаются из статических или динамических JSON-данных.





История разработки

AngularJS был первоначально разработан в 2009 году Мишко Хевери и Адамом Абронсом в Brat Tech LLC, как программное обеспечение позади сервиса хранения JSON-данных, измеряющихся мегабайтами, для облегчения разработки приложений организациями. Сервис располагался на домене «GetAngular.com» и имел нескольких зарегистрированных пользователей, прежде чем они решили отказаться от идеи бизнеса и выпустить Angular как библиотеку с открытым исходным кодом.

Абронс покинул проект, но Хевери, работающий в Google, продолжает развивать и поддерживать библиотеку с другими сотрудниками Google Игорем Минаром и Войта Джином.

Философия Angular

AngularJS спроектирован с убеждением, что декларативное программирование лучше всего подходит для построения пользовательских интерфейсов и описания программных компонентов[1], в то время как императивное программирование отлично подходит для описания бизнес-логики[2]. Фреймворк адаптирует и расширяет традиционный HTML, чтобы обеспечить двустороннюю привязку данных для динамического контента, что позволяет автоматически синхронизировать модель и представление. В результате AngularJS уменьшает роль DOM-манипуляций и улучшает тестируемость.

Цели разработки

  • Отделение DOM-манипуляции от логики приложения, что улучшает тестируемость кода.
  • Отношение к тестированию как к важной части разработки. Сложность тестирования напрямую зависит от структурированности кода.[3][4]
  • Разделение клиентской и серверной стороны, что позволяет вести разработку параллельно.
  • Проведение разработчика через весь путь создания приложения: от проектирования пользовательского интерфейса, через написание бизнес-логики, к тестированию.

Angular придерживается MVC-шаблона проектирования и поощряет слабую связь между представлением, данными и логикой компонентов. Используя внедрение зависимости, Angular переносит на клиентскую сторону такие классические серверные службы, как видозависимые контроллеры. Следовательно, уменьшается нагрузка на сервер и веб-приложение становится легче.

Популярные Angular-директивы

С помощью директив AngularJS можно создавать пользовательские HTML-теги и атрибуты, чтобы добавить поведение некоторым элементам.

ng-app
Объявляет элемент корневым для приложения.
ng-bind
Автоматически заменяет текст HTML-элемента на значение переданного выражения.
ng-model
То же что и ng-bind, только обеспечивает двустороннее связывание данных. Изменится содержимое элемента, ангуляр изменит и значение модели. Изменится значение модели, ангуляр изменит текст внутри элемента.
ng-class
Определяет классы для динамической загрузки.
ng-controller
Определяет JavaScript-контроллер для вычисления HTML-выражений.
ng-repeat
Создает экземпляр для каждого элемента из коллекции.
ng-show и ng-hide
Показывает или скрывает элемент в зависимости от значения логического выражения.
ng-switch
Создает экземпляр шаблона из множества вариантов, в зависимости от значения выражения.
ng-view
базовая директива, отвечает за обработку маршрутов[5], которые принимают JSON перед отображением шаблонов, управляемых указанными контроллерами.

Двустороннее связывание данных

Двустороннее связывание данных в AngularJS является наиболее примечательной особенностью и уменьшает количество кода, освобождая сервер от работы с шаблонами. Вместо этого, шаблоны отображаются как обычный HTML, наполненный данными, содержащимися в области видимости, определенной в модели. Сервис $scope в Angular следит за изменениями в модели и изменяет раздел HTML-выражения в представлении через контроллер. Кроме того, любые изменения в представлении отражаются в модели. Это позволяет обойти необходимость манипулирования DOM и облегчает инициализацию и прототипирование веб-приложений[6].

Плагин для Chrome

В июле 2012 года команда Angular выпустила плагин для браузера Google Chrome под названием Batarang[7], который облегчает отладку веб-приложений, построенных на Angular. Расширение позволяет легко обнаруживать узкие места и предлагает графический интерфейс для отладки приложений[8].

Версии

</div>

В марте 2014 было объявлено о начале разработки AngularJS 2.0[9] и 15 сентября 2016 года объявлено[10] о выпуске финальной версии по названием Angular 2.

Последняя стабильная на данный момент версия AngularJS — 1.5.0, выпущенная 5 февраля 2016 года.

Версии AngularJS
Дата выпуска Версия Кодовое имя
5 февраля 2016 1.5.0 [github.com/angular/angular.js/blob/master/CHANGELOG.md#150-ennoblement-facilitation-2016-02-05 ennoblement-facilitation]
19 ноября 2015 1.4.8 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.8 ice-manipulation]
29 сентября 2015 1.4.7 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.7 dark-luminescence]
17 сентября 2015 1.4.6 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.6 multiplicative-elevation]
28 августа 2015 1.4.5 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.5 permanent-internship]
13 августа 2015 1.4.4 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.4 pylon-requirement]
15 июля 2015 1.4.3 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.3 foam-acceleration]
6 июля 2015 1.4.2 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.2 nebular-readjustment]
16 июня 2015 1.4.1 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.1 hyperionic-illumination]
26 мая 2015 1.4.0 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.0 jaracimrman-existence]
12 мая 2015 1.4.0-rc.2 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.4.0-rc.2 rocket-zambonimation]
13 января 2015 1.3.9 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.3.9 multidimensional-awareness]
1 ноября 2013 1.0.9 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.0.9 lerigos-devconf]
23 мая 2013 1.0.7 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.0.7 monochromatic-rainbow]
23 мая 2013 1.1.5 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.1.5 triangle-squarification]
4 апреля 2013 1.0.6 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.0.6 universal-irreversibility] (stable)
3 апреля 2013 1.1.4 [github.com/angular/angular.js/blob/master/CHANGELOG.md#114-quantum-manipulation-2013-04-03 quantum-manipulation] (unstable)
22 февраля 2013 1.1.3 [github.com/angular/angular.js/blob/master/CHANGELOG.md#113-radioactive-gargle-2013-02-20 radioactive-gargle]
20 февраля 2013 1.0.5 [github.com/angular/angular.js/blob/master/CHANGELOG.md#105-flatulent-propulsion-2013-02-20 flatulent-propulsion]
22 января 2013 1.1.2 [github.com/angular/angular.js/blob/master/CHANGELOG.md tofu-animation]
22 января 2013 1.0.4 [github.com/angular/angular.js/blob/master/CHANGELOG.md bewildering-hair]
26 ноября 2012 1.1.1 [github.com/angular/angular.js/blob/master/CHANGELOG.md pathological-kerning]
26 ноября 2012 1.0.3 [github.com/angular/angular.js/blob/master/CHANGELOG.md bouncy-thunder]
31 авг. 2012 1.1.0 [github.com/angular/angular.js/blob/master/CHANGELOG.md increase-gravatas]
31 авг. 2012 1.0.2 [blog.angularjs.org/2012/09/angularjs-102-debilitating-awesomeness.html debilitating-awesomeness]
25 июня 2012 1.0.1 [blog.angularjs.org/2012/06/angularjs-101-thorium-shielding.html thorium-shielding]
13 июня 2012 1.0.0 temporal-domination (stable)[11].
12 июня 2012 1.0.0rc12 [blog.angularjs.org/2012/06/angularjs-100rc12-regression.html regression-extermination]
10 июня 2012 1.0.0rc11 [blog.angularjs.org/2012/06/angularjs-100rc11-promise-resolution.html promise-resolution]
23 мая 2012 1.0.0rc10 [blog.angularjs.org/2012/05/angularjs-100rc10-tesseract.html tesseract-giftwrapping]
14 мая 2012 1.0.0rc9 [blog.angularjs.org/2012/05/angularjs-100rc9-eggplant-teleportation.html eggplant-teleportation]
May 6, 2012 1.0.0rc8 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.0.0rc8 blooming-touch]
Apr 30, 2012 1.0.0rc7 [github.com/angular/angular.js/blob/master/CHANGELOG.md#1.0.0rc7 rc-generation]
Apr 20, 2012 1.0.0rc6 runny-nose
Apr 12, 2012 1.0.0rc5 reality-distortion
Apr 5, 2012 1.0.0rc4 insomnia-induction
Mar 29, 2012 1.0.0rc3 barefoot-telepathy
Mar 20, 2012 1.0.0rc2 silence-absorption
Mar 13, 2012 1.0.0rc1 moiré-vision
Jan 17, 2012 0.10.6 bubblewrap-cape
Nov 8, 2011 0.10.5 steel-fist
Oct 22, 2011 0.10.4 human-torch
Oct 13, 2011 0.10.3 shattering-heartbeat
Oct 8, 2011 0.10.2 sneaky-seagull
Sep 9, 2011 0.10.1 inexorable-juggernaut
Sep 2, 2011 0.10.0 chicken-hands
Aug 20, 2011 0.9.19 canine-psychokinesis
Jul 29, 2011 0.9.18 jiggling-armfat
Jun 30, 2011 0.9.17 vegetable-reanimation
Jun 7, 2011 0.9.16 weather-control
April 11, 2011 0.9.15 lethal-stutter
April 1, 2011 0.9.14 key-maker
Mar 13, 2011 0.9.13 curdling-stare
Mar 3, 2011 0.9.12 thought-implanter
Feb 8, 2011 0.9.11 snow-maker
Jan 26, 2011 0.9.10 flea-whisperer
Jan 13, 2011 0.9.9 time-shift
Dec 23, 2010 0.9.8 astral-projection
Dec 10, 2010 0.9.7 sonic-scream
Dec 6, 2010 0.9.6 night-vision
Nov 25, 2010 0.9.5 turkey-blast
Nov 18, 2010 0.9.4 total-recall
Nov 10, 2010 0.9.3 cold-resistance
Nov 3, 2010 0.9.2 faunal-mimicry
Oct 26, 2010 0.9.1 repulsion-field
Oct 20, 2010 0.9.0 dragon-breath

Сравнение с Backbone.js

Связывание данных
Наиболее характерной особенностью, которая разделяет библиотеки, является способ синхронизации модели и представления. В то время как AngularJS поддерживает двустороннее связывание данных, Backbone.js чтобы связать модель и представление в значительной мере опирается на шаблонный код[12].
REST
Backbone.js хорошо поддерживает RESTful-бэкэнд. В AngularJS также очень легко работать с RESTful API при помощи сервиса $resource. В то же время в AngularJS есть более гибкий сервис $http, который подключается к удаленным серверам с помощью браузерного объекта XMLHttpRequest или через JSONP[13].
Шаблоны
В качестве шаблона AngularJS использует комбинацию настраиваемых HTML-тегов и выражений. Backbone.js использует различные шаблонизаторы, такие как Underscore.js[12].

Напишите отзыв о статье "AngularJS"

Примечания

  1. [docs.angularjs.org/guide/component Understanding Components]
  2. [docs.angularjs.org/guide/overview What Is Angular?]. Проверено 12 февраля 2013. [www.webcitation.org/6GkIxLh4o Архивировано из первоисточника 20 мая 2013].
  3. [docs.angularjs.org/guide/unit-testing Unit Testing]
  4. [docs.angularjs.org/guide/e2e-testing E2E Testing]
  5. [docs.angularjs.org/guide/component-router Component Router]
  6. [net.tutsplus.com/tutorials/javascript-ajax/5-awesome-angularjs-features/ 5 Awesome AngularJS Features]. Проверено 13 февраля 2013. [www.webcitation.org/6GkIxv0xT Архивировано из первоисточника 20 мая 2013].
  7. [github.com/angular/angularjs-batarang Batarang homepage]
  8. [blog.angularjs.org/2012/07/introducing-angularjs-batarang.html AngularJS: Introducing the AngularJS Batarang]
  9. [angularjs.blogspot.com/2014/03/angular-20.html AngularJS 2.0]
  10. [angularjs.blogspot.ru/2016/09/angular2-final.html Angular, version 2: proprioception-reinforcement]. angularjs.blogspot.ru. Проверено 13 октября 2016.
  11. [blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html AngularJS 1.0 -> 1.2 Roadmap]. blog.angularjs.org (26 июля 2012). Проверено 27 апреля 2013. [www.webcitation.org/6GkIz0nP6 Архивировано из первоисточника 20 мая 2013].
  12. 1 2 [www.nebithi.com/2012/12/27/backbone-and-angular-demystifying-the-myths/ Backbonejs vs Angularjs: Demystifying the myths]. Проверено 13 февраля 2013. [www.webcitation.org/6GkIzjpQ6 Архивировано из первоисточника 20 мая 2013].
  13. [tunein.yap.tv/javascript/2012/06/11/javascript-frameworks-and-data-binding/ Javascript Frameworks And Data Binding]. Проверено 13 февраля 2013. [www.webcitation.org/6GkJ0sk4e Архивировано из первоисточника 20 мая 2013].

Литература

Ссылки

  • [www.angularjs.org/ ularjs.org] — официальный сайт AngularJS
  • [angular-doc.herokuapp.com/ Сайт на русском]
  • [groups.google.com/forum/?fromgroups#!forum/angular Angularjs at Google Groups]
  • [angularteam.com Angular.JS Team]
  • [plus.google.com/+AngularJS/posts AngularJS at Google+]
  • [github.com/angular/angularjs-batarang Batarang Chrome plugin]
  • [www.egghead.io/ Сборник видео-уроков]
  • [metanit.com/web/angular/ Руководство по AngularJS (рус)]

Отрывок, характеризующий AngularJS


Еще через пять дней крестили молодого князя Николая Андреича. Мамушка подбородком придерживала пеленки, в то время, как гусиным перышком священник мазал сморщенные красные ладонки и ступеньки мальчика.
Крестный отец дед, боясь уронить, вздрагивая, носил младенца вокруг жестяной помятой купели и передавал его крестной матери, княжне Марье. Князь Андрей, замирая от страха, чтоб не утопили ребенка, сидел в другой комнате, ожидая окончания таинства. Он радостно взглянул на ребенка, когда ему вынесла его нянюшка, и одобрительно кивнул головой, когда нянюшка сообщила ему, что брошенный в купель вощечок с волосками не потонул, а поплыл по купели.


Участие Ростова в дуэли Долохова с Безуховым было замято стараниями старого графа, и Ростов вместо того, чтобы быть разжалованным, как он ожидал, был определен адъютантом к московскому генерал губернатору. Вследствие этого он не мог ехать в деревню со всем семейством, а оставался при своей новой должности всё лето в Москве. Долохов выздоровел, и Ростов особенно сдружился с ним в это время его выздоровления. Долохов больной лежал у матери, страстно и нежно любившей его. Старушка Марья Ивановна, полюбившая Ростова за его дружбу к Феде, часто говорила ему про своего сына.
– Да, граф, он слишком благороден и чист душою, – говаривала она, – для нашего нынешнего, развращенного света. Добродетели никто не любит, она всем глаза колет. Ну скажите, граф, справедливо это, честно это со стороны Безухова? А Федя по своему благородству любил его, и теперь никогда ничего дурного про него не говорит. В Петербурге эти шалости с квартальным там что то шутили, ведь они вместе делали? Что ж, Безухову ничего, а Федя все на своих плечах перенес! Ведь что он перенес! Положим, возвратили, да ведь как же и не возвратить? Я думаю таких, как он, храбрецов и сынов отечества не много там было. Что ж теперь – эта дуэль! Есть ли чувство, честь у этих людей! Зная, что он единственный сын, вызвать на дуэль и стрелять так прямо! Хорошо, что Бог помиловал нас. И за что же? Ну кто же в наше время не имеет интриги? Что ж, коли он так ревнив? Я понимаю, ведь он прежде мог дать почувствовать, а то год ведь продолжалось. И что же, вызвал на дуэль, полагая, что Федя не будет драться, потому что он ему должен. Какая низость! Какая гадость! Я знаю, вы Федю поняли, мой милый граф, оттого то я вас душой люблю, верьте мне. Его редкие понимают. Это такая высокая, небесная душа!
Сам Долохов часто во время своего выздоровления говорил Ростову такие слова, которых никак нельзя было ожидать от него. – Меня считают злым человеком, я знаю, – говаривал он, – и пускай. Я никого знать не хочу кроме тех, кого люблю; но кого я люблю, того люблю так, что жизнь отдам, а остальных передавлю всех, коли станут на дороге. У меня есть обожаемая, неоцененная мать, два три друга, ты в том числе, а на остальных я обращаю внимание только на столько, на сколько они полезны или вредны. И все почти вредны, в особенности женщины. Да, душа моя, – продолжал он, – мужчин я встречал любящих, благородных, возвышенных; но женщин, кроме продажных тварей – графинь или кухарок, всё равно – я не встречал еще. Я не встречал еще той небесной чистоты, преданности, которых я ищу в женщине. Ежели бы я нашел такую женщину, я бы жизнь отдал за нее. А эти!… – Он сделал презрительный жест. – И веришь ли мне, ежели я еще дорожу жизнью, то дорожу только потому, что надеюсь еще встретить такое небесное существо, которое бы возродило, очистило и возвысило меня. Но ты не понимаешь этого.
– Нет, я очень понимаю, – отвечал Ростов, находившийся под влиянием своего нового друга.

Осенью семейство Ростовых вернулось в Москву. В начале зимы вернулся и Денисов и остановился у Ростовых. Это первое время зимы 1806 года, проведенное Николаем Ростовым в Москве, было одно из самых счастливых и веселых для него и для всего его семейства. Николай привлек с собой в дом родителей много молодых людей. Вера была двадцати летняя, красивая девица; Соня шестнадцати летняя девушка во всей прелести только что распустившегося цветка; Наташа полу барышня, полу девочка, то детски смешная, то девически обворожительная.
В доме Ростовых завелась в это время какая то особенная атмосфера любовности, как это бывает в доме, где очень милые и очень молодые девушки. Всякий молодой человек, приезжавший в дом Ростовых, глядя на эти молодые, восприимчивые, чему то (вероятно своему счастию) улыбающиеся, девические лица, на эту оживленную беготню, слушая этот непоследовательный, но ласковый ко всем, на всё готовый, исполненный надежды лепет женской молодежи, слушая эти непоследовательные звуки, то пенья, то музыки, испытывал одно и то же чувство готовности к любви и ожидания счастья, которое испытывала и сама молодежь дома Ростовых.
В числе молодых людей, введенных Ростовым, был одним из первых – Долохов, который понравился всем в доме, исключая Наташи. За Долохова она чуть не поссорилась с братом. Она настаивала на том, что он злой человек, что в дуэли с Безуховым Пьер был прав, а Долохов виноват, что он неприятен и неестествен.
– Нечего мне понимать, – с упорным своевольством кричала Наташа, – он злой и без чувств. Вот ведь я же люблю твоего Денисова, он и кутила, и всё, а я всё таки его люблю, стало быть я понимаю. Не умею, как тебе сказать; у него всё назначено, а я этого не люблю. Денисова…
– Ну Денисов другое дело, – отвечал Николай, давая чувствовать, что в сравнении с Долоховым даже и Денисов был ничто, – надо понимать, какая душа у этого Долохова, надо видеть его с матерью, это такое сердце!
– Уж этого я не знаю, но с ним мне неловко. И ты знаешь ли, что он влюбился в Соню?
– Какие глупости…
– Я уверена, вот увидишь. – Предсказание Наташи сбывалось. Долохов, не любивший дамского общества, стал часто бывать в доме, и вопрос о том, для кого он ездит, скоро (хотя и никто не говорил про это) был решен так, что он ездит для Сони. И Соня, хотя никогда не посмела бы сказать этого, знала это и всякий раз, как кумач, краснела при появлении Долохова.
Долохов часто обедал у Ростовых, никогда не пропускал спектакля, где они были, и бывал на балах adolescentes [подростков] у Иогеля, где всегда бывали Ростовы. Он оказывал преимущественное внимание Соне и смотрел на нее такими глазами, что не только она без краски не могла выдержать этого взгляда, но и старая графиня и Наташа краснели, заметив этот взгляд.
Видно было, что этот сильный, странный мужчина находился под неотразимым влиянием, производимым на него этой черненькой, грациозной, любящей другого девочкой.
Ростов замечал что то новое между Долоховым и Соней; но он не определял себе, какие это были новые отношения. «Они там все влюблены в кого то», думал он про Соню и Наташу. Но ему было не так, как прежде, ловко с Соней и Долоховым, и он реже стал бывать дома.
С осени 1806 года опять всё заговорило о войне с Наполеоном еще с большим жаром, чем в прошлом году. Назначен был не только набор рекрут, но и еще 9 ти ратников с тысячи. Повсюду проклинали анафемой Бонапартия, и в Москве только и толков было, что о предстоящей войне. Для семейства Ростовых весь интерес этих приготовлений к войне заключался только в том, что Николушка ни за что не соглашался оставаться в Москве и выжидал только конца отпуска Денисова с тем, чтобы с ним вместе ехать в полк после праздников. Предстоящий отъезд не только не мешал ему веселиться, но еще поощрял его к этому. Большую часть времени он проводил вне дома, на обедах, вечерах и балах.

ХI
На третий день Рождества, Николай обедал дома, что в последнее время редко случалось с ним. Это был официально прощальный обед, так как он с Денисовым уезжал в полк после Крещенья. Обедало человек двадцать, в том числе Долохов и Денисов.
Никогда в доме Ростовых любовный воздух, атмосфера влюбленности не давали себя чувствовать с такой силой, как в эти дни праздников. «Лови минуты счастия, заставляй себя любить, влюбляйся сам! Только это одно есть настоящее на свете – остальное всё вздор. И этим одним мы здесь только и заняты», – говорила эта атмосфера. Николай, как и всегда, замучив две пары лошадей и то не успев побывать во всех местах, где ему надо было быть и куда его звали, приехал домой перед самым обедом. Как только он вошел, он заметил и почувствовал напряженность любовной атмосферы в доме, но кроме того он заметил странное замешательство, царствующее между некоторыми из членов общества. Особенно взволнованы были Соня, Долохов, старая графиня и немного Наташа. Николай понял, что что то должно было случиться до обеда между Соней и Долоховым и с свойственною ему чуткостью сердца был очень нежен и осторожен, во время обеда, в обращении с ними обоими. В этот же вечер третьего дня праздников должен был быть один из тех балов у Иогеля (танцовального учителя), которые он давал по праздникам для всех своих учеников и учениц.
– Николенька, ты поедешь к Иогелю? Пожалуйста, поезжай, – сказала ему Наташа, – он тебя особенно просил, и Василий Дмитрич (это был Денисов) едет.
– Куда я не поеду по приказанию г'афини! – сказал Денисов, шутливо поставивший себя в доме Ростовых на ногу рыцаря Наташи, – pas de chale [танец с шалью] готов танцовать.
– Коли успею! Я обещал Архаровым, у них вечер, – сказал Николай.
– А ты?… – обратился он к Долохову. И только что спросил это, заметил, что этого не надо было спрашивать.
– Да, может быть… – холодно и сердито отвечал Долохов, взглянув на Соню и, нахмурившись, точно таким взглядом, каким он на клубном обеде смотрел на Пьера, опять взглянул на Николая.
«Что нибудь есть», подумал Николай и еще более утвердился в этом предположении тем, что Долохов тотчас же после обеда уехал. Он вызвал Наташу и спросил, что такое?
– А я тебя искала, – сказала Наташа, выбежав к нему. – Я говорила, ты всё не хотел верить, – торжествующе сказала она, – он сделал предложение Соне.
Как ни мало занимался Николай Соней за это время, но что то как бы оторвалось в нем, когда он услыхал это. Долохов был приличная и в некоторых отношениях блестящая партия для бесприданной сироты Сони. С точки зрения старой графини и света нельзя было отказать ему. И потому первое чувство Николая, когда он услыхал это, было озлобление против Сони. Он приготавливался к тому, чтобы сказать: «И прекрасно, разумеется, надо забыть детские обещания и принять предложение»; но не успел он еще сказать этого…