Дима
Плюс не знаю как в ангуляре с di, но с импортом модулей у меня появляется возможность адекватной типизации
Дима
Дима
Я могу получить такую же подсказу при использовании di?
Andrei
Насколько я понял, вы использовали паттерн фасад для работы с $http, т.е. скрыли конкретную реализацию в своем модуле. Вы импортируете свою реализацию так import request from request/unirest/axios. И совершенно неважно, как модуль именован при импорте, это могло бы быть и import {request as http} from request/unirest/axios. Вы все равно привязаны к конкретной реализаций которая находится в конкретном модуле.
Теперь, предположим, у вас есть задача: вернуться к стандартному $http сервису. Вы должны либо переписать реализацию в свое модуле, либо поменять импорты во всех файлах.
DI позволяет переключаться между конкретными реализациями очень быстро, одной строчкой кода, без модификации каждой из них в отдельности.
Это принцип разделения ответственности, когда класс не знает о своих зависимостях.
Про webpack я ничего не могу сказать, но вряд ли webpack передает созданный объект в конструктор класса, а это важно при использовании ES6 и TS.
Дима
Теперь, предположим, у вас есть задача: вернуться к стандартному $http сервису. Вы должны ̶ ̶л̶и̶б̶о̶ переписать реализацию в свое модуле ̶,̶ ̶л̶и̶б̶о̶ ̶п̶о̶м̶е̶н̶я̶т̶ь̶ ̶и̶м̶п̶о̶р̶т̶ы̶ ̶в̶о̶ ̶в̶с̶е̶х̶ ̶ф̶а̶й̶л̶а̶х̶.̶
Я должен просто поменять импорт в модуле. Да, фасад. Смысл модуля api в том, что он оборачивает чуть больше, чем просто http, пример на скрине выше, но если взять самую примитивню реализацию, то можно сделать так
Дима
export default from 'request'
Andrei
Дима
Это будет весь модуль в принципе
Дима
Дима
Типизация работает
Дима
В качестве intellisense, естественно, не конструкций языка
Дима
В общем, я крайне скептически отношусь к устаревшим кострукциям, тем более заменяющим явное — неявным. И даже в последнем проекте на angular просто использовал модули с нормальным человеческим import, чему был сильно рад)
Andrei
С чего вы взяли, что DI устаревшая конструкция? Она успешно используется в Java, C#, PHP и других языках. И import нисколько не заменяет инъекицю зависимостей. ES6 модули - это именно способ организации кода. DI - разделение ответственности.
Дима
Потому что синтаксис di в angular 1 — это обычный amd модуль по своей сути
Дима
AMD — это 2010 год, сейчас люди используют whatwg spec
Дима
И смысл у них один и тот же, принципиально, поэтому для меня азговор об di если честно слегка лишён смысл)
Andrei
Где вы там amd нашли?
Дима
Дима
Дима
Суть одна и та же
CybernatiC
Дима
Я знаю, что это не одинаковые технологии, но меня как их пользователя это не очень волнует
Andrei
В Angular модуль нужен для изоляции зависимостей. И только
Andrei
Никакого ansynchronous там нет
Дима
Тем более. Я про форму записи, влекущую за собой ряд проблем и неудобств
Andrei
И потом, вас не удивляет, что некоторые люди используют RequireJS вместе с первым ангуларом?
Andrei
Это не форма записи. Вы можете сделать один модуль в Angular, в нем использовать стандартный $http, в другом модуле этот же $http будет задекорирован
Дима
В современном мире я могу написать
import fabric from './fabricZero'
Где fabricZero будет не файлом а громадной папкой со сложносочинённой структурой
Или будет просто файлом fabricZero.js
Andrei
Это в принципе все, для чего там нужны модули
Дима
В webpack есть alias, которые фактически являются реализацией этих же di, можно например заменить во всём приложении сразу все объекты Promise на bluebird или ещё что устроить, ну то есть примерно тот же механизм, пишешь new Promise, а он уже заинжекчен нужным модулем
Дима
В общем, я крайне скептически отношусь к устаревшим кострукциям, тем более заменяющим явное — неявным. И даже в последнем проекте на angular просто использовал модули с нормальным человеческим import, чему был сильно рад)
Andrei
Вы понимаете, что модуль в Angular - это контейнер для зависимостей, а модуль в ES6/AMD/CommonJS - это файл с кодом?
d0as8
путаем теплое с мягким. если я правильно понимаю, ди - некий паттерн организации взаимодействия компонентов(объектов), который обеспечивает минимальную связанность. а импор - организация кода в проекте.
Alexander
Аве
Alexander
Кто-нибудь может помочь? Уже день без ответов https://goo.gl/85xQkS
Alexander
Alexander
>Using this action creator as angular service is unsuitable for me, because it can be called from non-angular conditions.
Alexander
Я так понимаю, юзание $http вне angular являетсся практически невозможным?
Anonymous
Стоит ли перед изучением angular 2 изучать предыдущие версии?
Anonymous
Есть кто здесь?
CybernatiC
CybernatiC
учи сразу angular 2
Anonymous
Спасибо
Anonymous
Слышал про книгу ng book 2
Anonymous
Она еще не устарела?
Anonymous
Можно по ней учиться?
CybernatiC
Я бы начал с сайта angular.io
CybernatiC
egghead.io
Artyom
Полностю согласен.
Реализация di в первом анугляре была не на высоте. Во втором же внедрение зависимостей происходит через параметры конструктора. То есть вы импортируете нужный класс используя es6 модули и потом указываете его как параметр конструктора. Тут начинает работать типизация и разрешает зависимости по типам внедряемых зависимостей. Как это работает на чистом js если чесно не знаю.
es6 модули это одно, а di совершенно другое. di как паттерн используется во многих языках. И одно другому совершенно не мешает.
Artyom
путаем теплое с мягким. если я правильно понимаю, ди - некий паттерн организации взаимодействия компонентов(объектов), который обеспечивает минимальную связанность. а импор - организация кода в проекте.
Mikhail
/stat@combot
Combot
combot.org/chat/-1001024737789
Combot
combot.org/chat/-1001024737789
Gordey
Чуваки! Приходите к нам на митап через 2 дня!
https://rambler-co-e-org.timepad.ru/event/419923/
Max
кто то встречал такую ошибку при сборке фронта в тим сити ECONFLICT Unable to find suitable version for angular
Dmitry
Max
ага
Dmitry
добавьте секцию "resolutions"
с версией требуемой библиотеки
Max
добовлял не помогло
Антон
/stat@combot
Combot
combot.org/chat/-1001024737789
Nick
Ребята, всем привет. Я из loftblog.ru и loftschool.com. Ищем нового преподавателя по angular.js. Кому интересно пишите в личку
Oleg
Привет Николай :)
Alexander
25к за курс
Alexander
Anonymous
Есть ли в минске какая нибудь конференция по abgular 2?
Anonymous
Бывают ли?
CybernatiC
Google Maps Javascript api есть функция очистить карту?
Alexander
Почему ты решил задать этот вопрос именно здесь
Sergey
Sergey
там правда много хипстаты которая восхваляет реакт и пишет макароны на jquery, но в целом встречаются клевые ребята
Archakov
Archakov
Подскажите, почему не выполняется код внутри который в теле функции .get()
Archakov
Я делаю клик по ссылке и должен отправлять пост запрос подгрузкой статьи. Запрос отправляется, но в консоли ничего не выводит
Alexander
Какая версия angular?
Archakov
1.4.8
Alexander
https://code.angularjs.org/1.4.14/docs/api/ng/service/$http
Archakov
Как меня это бесит. Когда я задаю вопрос в чате или на сайтах, я черт подери нахожу решение.
Archakov
.success()