powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / покритикуйте bso
50 сообщений из 50, показаны все 2 страниц
покритикуйте bso
    #39196506
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот сварганил небольшой велосипед .
Буду признателен за замечания, предложения, критику.

P. S. пишу сюда, а не в HTML, JavaScript, VBScript, CSS, так как там сплошь лямбды, которые не всем обитателям того форума понятны, но должны быть обитателям этого.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39197520
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВ,

- А для чего файл todo.js в win-1251 кодировке? В таком раскладе если контент кириллицей, то получаем дрова.

Это специально так?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39197552
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор К
- А для чего файл todo.js в win-1251 кодировке? В таком раскладе если контент кириллицей, то получаем дрова.

Студия по умолчанию так делает, изменить нужно.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39212679
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220085
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую продемонстрировать использование. Можно например начать с датагрида, ибо многие не представляют себе жизни без столь полезного контрола. Ну а каждый уважающий уважающих себя грид, должен иметь пейджер, так что начнем с пейджера.
Вообще пейджеры встречаются разных видов, но самый лучший конечно же у judge! Так что его и попытаемся скопировать.
Код.
https://bso.codeplex.com/SourceControl/latest#bso/bso/scripts/typings/Samples/Pager/pager.ts
Пример использования.
https://bso.codeplex.com/SourceControl/latest#bso/bso/html/Samples/Pager/Pager.html
Что имеем в итоге.
Это typesript с точки зрения typesript. То есть при написании мы можем использовать все, что есть в этом языке строгая типизация, ООП, замыкания, женерики, вывод типов, функции высших порядков и т. д.
Это javascript с точки зрения javascript.
Это HTMLElement с точки зрения HTML и W3C.
Это класс с точки зрения ООП, экземпляр мы можем создать, функциональность которого мы можем расширить. Код мы можем повторно использовать, продать, подарить и т. д.
Это функция с точки зрения ФП, которую мы можем например передать в качестве аргумента другой функции.
Ну и вполне себе событийная модель в стиле C#.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220115
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВДобавил DataBinding
https://bso.codeplex.com/wikipage?title=Binding
Биндинг - это прошлый век :) Виртуальный DOM и Flux наше всё!
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220229
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAБиндинг - это прошлый век :) Виртуальный DOM и Flux наше всё!
Ну если бы ReactJS меня устраивал, я бы остановился на нем.
Куча дополнительных знаний что бы привязать данные к отображению + омерзительное влияние на производительность, неопределенность, непрозрачность.
Я тоже хотел пойти по этой кривой дорожке, но вовремя остановился.

И так, что имеем.
1. вполне себе утиная типизация, typescript позволяет объявлять интерфейсы, ну и приводить объекты к ним. Это нужно для строгой типизации.
2. вполне себе есть свойства с гетторами/сеттрорами, которые можно добавлять динамически. Причем гетторы/сетторы обычные функции.
3. хотелось бы иметь рефлексию, дабы как в C#, но ее нет. Но мы всегда можем получить текст исполняемого кода и дернуть оттуда при помощи регулярных выражений что нибудь интересное.

Что получилось.
1. Раз утиная типизация, то нужен интерфейс, который описывает JSO. Это работа для прикладного программиста.
2. Некий генерик класс, который отвечает за биндинг и в котором типом параметром выступает описанный в пункте 1 интерфейс.
3. Пара методов отвечающих за привязку. Первый - простой биндинг, когда какое то свойство JSO напрямую отображается в какое то свойство. Вызов вполне себе строготипизированный
Код: javascript
1.
binder.BS(t, x=> x.value, x=> x.FirstName);

+ подсказки работают.
Второй - кастомный биндиг, на случай, если например есть сложный объект типа datetimepicker, вызов опять же строго типизированный
Код: javascript
1.
2.
3.
4.
5.
 binder.BC(t, t=> binder.Data.BirthDay,
                t=> dp.getDate(),
                e=> {
                    dp.setDate(binder.Data.BirthDay);
                });


Повторюсь, многие ошибки видны на стадии компиляции и intellisense работает.
4. После привязки объект класса из пункта 2, предоставляет свойство, которое выдает объект реализующий интерфейс из пункта 1. Например для
Код: javascript
1.
binder.BS(t, x=> x.value, x=> x.FirstName);


Попытка считать свойство FirstName приводит к тому, что возвращается x.value, а запись приводит к установке x.value, где x - input[type=text].
И никаких тебе прослушиваний onchange, никаких виртуальных DOM, есть один реальный и его хватает за глаза.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220382
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВКуча дополнительных знаний что бы привязать данные к отображению + омерзительное влияние на производительность, неопределенность, непрозрачность.
Конкретные проблемы сможете озвучить?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220386
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор3. хотелось бы иметь рефлексию, дабы как в C#, но ее нет.Она в js принципиально невозможна.
Разве что в комплекте с прикладным js-кодом компилятор научится генерить библиотеку, описывающие то, чего в js нет, и как-то привязывающую это к прикладному коду.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220391
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
More Benchmarks: Virtual
DOM vs Angular 1 & 2 vs Mithril.js vs cito.js vs The Rest


Что-то не видно у реакта омерзительной производительности :)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220424
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Я не совсем правильно выразился, мне нужно было получить нечто типа expression в c#,
еще проще из выражения
объект.имяСвойства получить имяСвойства.
Что бы использовать например как в razor
@Html.EditorFor(model=>model.LOGIN)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220433
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКонкретные проблемы сможете озвучить?
Ну например как это все дебажить?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220500
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAКонкретные проблемы сможете озвучить?
Ну например как это все дебажить?
Это всё? Выше было больше озвучено :) В Visual Studio Code, WebStorm, либо в браузере.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220508
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто всё? Выше было больше озвучено :) В Visual Studio Code, WebStorm, либо в браузере.
Ну так то да, можно тыкаться по шагам по 100500 строк кода, периодически натыкаясь на места, которые были хз когда и кем инициализированы. Милейшее занятие.
Которое можно иногда разнообразить зубрением например этого коротенького списочка .
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220513
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAЭто всё? Выше было больше озвучено :) В Visual Studio Code, WebStorm, либо в браузере.
Ну так то да, можно тыкаться по шагам по 100500 строк кода, периодически натыкаясь на места, которые были хз когда и кем инициализированы. Милейшее занятие.
Которое можно иногда разнообразить зубрением например этого коротенького списочка .
Странные у Вас аргументы против React, мне не понятные..
Хотя если Вы вместо нормальной отладки тыкаетесь куда-то там 100500 раз, при этом зачем-то читаете документацию по Angular, то начинает становиться понятно, откуда растут ноги Вашей боли :)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220518
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще 100500 строк плохого кода - это не проблема используемой библиотеки, или фреймворка, а проблема кривых рук.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220556
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если сравнивать именно с React.
Stateful Component
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
var Timer = React.createClass({
  getInitialState: function() {
    return {secondsElapsed: 0};
  },
  tick: function() {
    this.setState({secondsElapsed: this.state.secondsElapsed + 1});
  },
  componentDidMount: function() {
    this.interval = setInterval(this.tick, 1000);
  },
  componentWillUnmount: function() {
    clearInterval(this.interval);
  },
  render: function() {
    return (
      <div>Seconds Elapsed: {this.state.secondsElapsed}</div>
    );
  }
});

ReactDOM.render(<Timer />, mountNode);


Есть функции о которых надо знать, типа componentWillUnmount, DOM перестраивается каждый раз, причем сначала сравнивается с виртуальным DOM. Нет строгой типизации.
Вызов componentWillUnmount в принципе приведет очистке ресурсов, но про это надо еще не забыть.
bso
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var SecondsElapsed = div(t=>
{
    var counter = 0;
    setInterval(() =>
    {
        t.innerText = 'Seconds Elapsed: ' + counter++;
    }, 1000);
});


Меньше кода. Меняется всего одно свойство. Строгая типизация. Про очистку ресурсов нужно думать самому.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220585
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, Вы походу не в теме, что уже поддерживается ES2015 синтаксис, а также что TypeScript поддерживает React/JSX

И DOM не перестраивается каждый раз, и не сравнивается с виртуальным, если Вы не забыли указать key.
А об этом и о React lifecycle и lifecicle hooks подробно расписано в документации. Может Вам конечно проще её не читать, а запилить свой велосипед, но это не объективно.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220927
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВ, Вы походу не в теме, что уже поддерживается ES2015 синтаксис,

Кем? IE? Недавно на это наткнулся-споткнулся.

skyANAа также что TypeScript поддерживает React/JSX

Про это я писал еще в 15 годе!
Visual Studio 2015 Update 1
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220960
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAЕвгенийВ, Вы походу не в теме, что уже поддерживается ES2015 синтаксис,

Кем? IE? Недавно на это наткнулся-споткнулся.
Откройте для себя webpack + babel и для IE у Вас будет ES2015 транспайлится в ES5

ЕвгенийВskyANAа также что TypeScript поддерживает React/JSX

Про это я писал еще в 15 годе!
Visual Studio 2015 Update 1
Молодец! Тогда чего жалуетесь на отсутсвие типизации?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39220993
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОткройте для себя webpack + babel и для IE у Вас будет ES2015 транспайлится в ES5

мне хватает typescript.

skyANAМолодец! Тогда чего жалуетесь на отсутсвие типизации?
Выражения типа
Код: html
1.
<div>Seconds Elapsed: {this.state.secondsElapsed}</div>


никак не типизированы и к div нет никакого доступа.

skyANAИ DOM не перестраивается каждый раз, и не сравнивается с виртуальным, если Вы не забыли указать key.
А об этом и о React lifecycle и lifecicle hooks подробно расписано в документации. Может Вам конечно проще её не читать, а запилить свой велосипед, но это не объективно.

Взялся дебажить пример на который давал ссылку выше.
После примерно 3 минут кликания на "шаг с заходом" хром вежливо послал меня, ласково написав "Опаньки", так и не выпустив из бесконечных вызовов.
И может Вы мне объясните дурачку, зачем в react.js такой код?
Код: javascript
1.
 if ("development" !== 'production') {
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221109
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAОткройте для себя webpack + babel и для IE у Вас будет ES2015 транспайлится в ES5

мне хватает typescript.

skyANAМолодец! Тогда чего жалуетесь на отсутсвие типизации?
Выражения типа
Код: html
1.
<div>Seconds Elapsed: {this.state.secondsElapsed}</div>


никак не типизированы и к div нет никакого доступа.
Если Вы привыкли к TypeScript, то используйте TypeScript при разработки React приложений, что Вам мешает никак не пойму?
И откройте для себя ref, если так хочется иметь доступ к div.

Ваш код будет выглядеть как-то так так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class Timer extends React.Component<ITimerState> {
  public state : ITimerState;

  constructor() {
    super();
    this.state = { secondsElapsed: 0 };
  }

  /* ... */

  public render() {
    return (
      <div ref="secondsElapsedContainer">Seconds Elapsed: { this.state.secondsElapsed }</div>
    );
  }
}


А так доступ к вожделенному Вами диву:
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs["secondsElapsedContainer"]);
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221116
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПосле примерно 3 минут кликания на "шаг с заходом" хром вежливо послал меня, ласково написав "Опаньки", так и не выпустив из бесконечных вызовов.
И может Вы мне объясните дурачку, зачем в react.js такой код?
Код: javascript
1.
 if ("development" !== 'production') {


Вы же разрабодчик с опытом, а проблему описываете как вчерашний студент :) Дайте больше конкретики.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221268
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА так доступ к вожделенному Вами диву:
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs["secondsElapsedContainer"]);



Я наоборот бегу от таких штук
Код: javascript
1.
var val = $('div[id^=subparagraphs] textarea[id^=taWordingQuestion]', div).val();



skyANAВы же разрабодчик с опытом, а проблему описываете как вчерашний студент :) Дайте больше конкретики.
Я действительно не понимаю, почему в этом файле
https://facebook.github.io/react/js/react.js
строка if ("development" !== 'production') встречается 112?
Почему не заменить просто на true? :)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221280
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Посмотри как-нибудь на досуге Mithril .
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221282
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВстрока if ("development" !== 'production') встречается 112?
Почему не заменить просто на true? :)

Потому что true не говорит не о чём, а эта строка говорит. По-моему очевидней некуда.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221309
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Потому что true не говорит не о чём, а эта строка говорит. По-моему очевидней некуда.
Это ведь константное выражение, скорее всего ноги растут из автогенерации кода...
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221314
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЭто ведь константное выражение, скорее всего ноги растут из автогенерации кода...

Bingo!
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221331
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВ,

Посмотри как-нибудь на досуге Mithril .
Посмотри как нибудь на досуге Vanilla JS !
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221398
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttЕвгенийВ,

Посмотри как-нибудь на досуге Mithril .
Посмотри как нибудь на досуге Vanilla JS !
Если серьезно, я много чего пересмотрел, например еще Vcl.js .
Конкретно в Mithril нет строгой типизации, а значит контроля детских ошибок, например можно написать return m("diw", [ и в лучшем случае получим ошибку времени выполнения, в худшем тег diw, который браузер проигнорирует.
У меня такого нет, например хочу тег bdo - вызываю функцию bdo, которая вернет HTMLPhraseElement, у которого в отличии от HTMLElement есть пара дополнительных свойств
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
 /**
      * Sets or retrieves reference information about the object.
      */
    cite: string;
    /**
      * Sets or retrieves the date and time of a modification to the object.
      */
    dateTime: string;


Я не преследую реализацию mvc/mvvp, я преследую строгую типизацию и уход от поиска по строковому ключу.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221712
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAА так доступ к вожделенному Вами диву:
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs["secondsElapsedContainer"]);



Я наоборот бегу от таких штук
Код: javascript
1.
var val = $('div[id^=subparagraphs] textarea[id^=taWordingQuestion]', div).val();


На самом деле в конкретном рассматриваемом нами случае, можно обойтись и без ref, так как React.findDOMNode(componentInstance) возвращает внешний DOM узел, возвращаемый в методе render().
То есть свободно можно написать так:
Код: javascript
1.
var div = React.findDOMNode(this)


Ну и вернуть DOM узел соответсвующий компоненту по ссылке - это не тоже самое, что найти элементы, удовлетворяющие селектору.

ЕвгенийВskyANAВы же разрабодчик с опытом, а проблему описываете как вчерашний студент :) Дайте больше конкретики.
Я действительно не понимаю, почему в этом файле
https://facebook.github.io/react/js/react.js
строка if ("development" !== 'production') встречается 112?
Почему не заменить просто на true? :)
А ты загляни в минифицированный файл https://fb.me/react-15.0.1.min.js :)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39221879
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПосмотри как нибудь на досуге Vanilla JS !

А как же православный ассемблер?

ЕвгенийВКонкретно в Mithril нет строгой типизации, а значит контроля детских ошибок, например можно написать return m("diw", [ и в лучшем случае получим ошибку времени выполнения, в худшем тег diw, который браузер проигнорирует.

Какое же это имеет отношение к типизации? Это вообще-то просто синтаксис, и проблему выявит простейшие тесты.

Строгая типизация, это когда что-то куда-то надо передать, и это что-то должно отвечать определённым требования (типу).

ЕвгенийВУ меня такого нет, например хочу тег bdo - вызываю функцию bdo, которая вернет HTMLPhraseElement, у которого в отличии от HTMLElement есть пара дополнительных свойств

Ну тогда HTML сам по себе уже является самодостаточным языком, и не стоило так напрягаться. Хочешь тег bdo? Пишешь <bdo...> и у него также есть свои дополнительные свойства. А правильный редактор кода тебе и ошибку покажет и подскажет.

В чём профит-то? У virtual dom библиотек фишка в том, что ты фигачишь некоторое количество отлаженных компонент, а потом из них строишь прикладной UI. Это работает очень быстро. Какие там могут быть проблемы, если ты не пихаешь логику в UI и не пишешь её как монолитный компонент -- ведь в таком случае тебя никакая супер-мега-типизация с блекджеком и шлюхами не спасёт, это заведомо труп.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39222110
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу тогда HTML сам по себе уже является самодостаточным языком, и не стоило так напрягаться.Этот напряг ради генерации разметки в скрипте. Чтобы уйти от этой порнографии - innerHTML = "<div>".
...
Рейтинг: 0 / 0
покритикуйте bso
    #39222216
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Какие там могут быть проблемы, если ты не пихаешь логику в UI и не пишешь её как монолитный компонент -- ведь в таком случае тебя никакая супер-мега-типизация с блекджеком и шлюхами не спасёт, это заведомо труп.
А почему бы не запихнуть логику относящаюся к UI в UI? Тем более это функция возвращающая результат (HTMLElement)? Тем более это легко можно тестировать, от примитивных тестов, типа
Код: 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.
class Test1
{
    private label: HTMLLabelElement;
    public Element(): HTMLDivElement
    {
        return div(EmptyAction,
            () => label(t=> { this.label = t; }),
            () => button(t=>
            {
                t.textContent = 'Кнопка1';
                t.onclick = me=>
                {
                    this.label.textContent = 'Хвост';
                };
            }));
    }
}
window.onload = ev=> {
    var e = new Test1().Element();
    document.body.appendChild(e);
    (e.childNodes[1] as HTMLButtonElement).click();
    var text = (e.childNodes[0] as HTMLLabelElement).textContent;
    if (text == 'Хвост') {
        alert('Тест прошел');
    }
    else {
        alert('Тест не прошел');
    }
}


Причем в отличии от связки HTML+JavaScript доступ к предкам и потомкам по номеру приветствуется, ибо сам по себе тестирует структуру, которую мы пытаемся изначально заложить.
До архимегасложных тестов типа этого .
Можно конечно еще насувать "логики", но тут все на совести программиста. Встречаются как "умельцы" которые все помещают в *.cshtml в asp.net mvc, так и те, которые грамотно делят делят на слои webform приложение.

skyANAНу и вернуть DOM узел соответсвующий компоненту по ссылке - это не тоже самое, что найти элементы, удовлетворяющие селектору.

Я пытаюсь уйти от строк в коде, веть даже наш великий кормчий Андерс Хейсберг указывает нам путь, введя в C# nameof!
skyANAА ты загляни в минифицированный файл https://fb.me/react-15.0.1.min.js :)
Еще бы, я бы удивился если бы это было не так, Цукенберг то там нормально башляет :)
А вообще над минификацией надо думать... Существующие решения позволят минифицировать такое?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var Test = (function () {
    function Test() {
        var _this = this;
        this.test = div(function (t) {
            _this.prn = t;
        }, function () { return div(EmptyAction, function () { return div(EmptyAction, function () { return div(function (x) {
            _this.prn;
        }); }); }); });
    }
    return Test;
})();
...
Рейтинг: 0 / 0
покритикуйте bso
    #39222265
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА почему бы не запихнуть логику относящаюся к UI в UI?

Потому что в UI не должно быть логики. Если не придерживаться этой стратегии разработки, то и «типизированные UI» тебе не особо поможет. Ничего не поможет, это заведомо плохой путь по дорожке, выложенной граблями.

На стороне клиента я размещаю логику отдельно от UI: если у меня меняется состояние модели, я в модели знать не знаю, как меняется вид UI, из каких элементов вообще состоит UI, какого он цвета и как он выглядит.

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

Если я сегодня буду в логике UI возиться с элементами HTML (не важно, типизировано или нет), то это деградация. Пришли к тому, от чего долго и упорно уходили.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39222273
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЭтот напряг ради генерации разметки в скрипте. Чтобы уйти от этой порнографии - innerHTML = "<div>".

Так ушли уже. Про virtual dom уже вроде как сказали. Если проблема в том, что типа можно написать так: m("diw"... — ну это абсолютно нормально, так как компоненты инкапсулируют внутри себя VDOM, он отлаживается и больше не трогается. Это не прикладной код, нет нужды в «типизированном» чекинге, никакой. Бред какой-то. Проблема высосана из мизинца левой ноги.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39222322
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Потому что в UI не должно быть логики.
Что по твоему есть UI?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39222919
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttПотому что в UI не должно быть логики.
Что по твоему есть UI?

Внешний вид: элементы управления и визуализация данных — то, что видит и с чем взаимодействует пользователь.

В современных веб приложениях, которые иногда называют SPA, существует буквальное разделение на фронт (всё, что происходит на клиенте) и бек (всё, что происходит на сервере). В свою очередь на фронте существует формальное разделение: клиентская логика приложения и пользовательский интерфейс (UI) — это вполне себе самостоятельные части, которые могут существовать независимо, не смотря на то, что исполняются они в одном контексте (браузер).

Таким образом логику можно писать и тестировать независимо от интерфейса, без малейшего понятия о манипуляциях с DOM, грубо говоря логике должно быть абсолютно параллельно как ты там кнопку нарисовал: одним button, или сложным комплексом вложенных друг в друга div, или вообще это клякса, нарисованная на канвасе, может это вообще не кнопка, а жест мышью/пальцем.

И в тоже самое время UI можно писать в отрыве от логики и тестировать, не ожидая, когда бекендщики постараются, чтобы предоставить тебе рабочий API с необходимыми для прогона тестов данными. В UI нет логики, кроме логики анимации и поведения самого интерфейса: упираем мышь в левый край — выезжает меню, уводим — меню скрывается, и т.п. Чтобы замонстрячить такое поведение, надо ОДИН раз написать компонент, отладить его, и заниматься другими делами. Написание таких компонентов — это НЕ прикладной код, он не может быть им по определению. Поэтому так называемая «теговая типизация» бесполезна, и поэтому её нет в мейнстримах. Догадайся почему так, может она задаром никому не упала?

Класть клиентскую логику на теги — это не просто прошлый век, это тупиковый путь для разработчика, деградация. Много пота и программерской крови было пролито на клавиатуры, но похоже ещё будет поломано не мало копий. Ээээх...
...
Рейтинг: 0 / 0
покритикуйте bso
    #39223175
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAНу и вернуть DOM узел соответсвующий компоненту по ссылке - это не тоже самое, что найти элементы, удовлетворяющие селектору.

Я пытаюсь уйти от строк в коде, веть даже наш великий кормчий Андерс Хейсберг указывает нам путь, введя в C# nameof!
А где тут строки в коде?
Код: javascript
1.
var div = React.findDOMNode(this)


А это
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs["secondsElapsedContainer"]);


ну заменяется же так
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs.secondsElapsedContainer);


ЕвгенийВА вообще над минификацией надо думать... Существующие решения позволят минифицировать такое?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var Test = (function () {
    function Test() {
        var _this = this;
        this.test = div(function (t) {
            _this.prn = t;
        }, function () { return div(EmptyAction, function () { return div(EmptyAction, function () { return div(function (x) {
            _this.prn;
        }); }); }); });
    }
    return Test;
})();


А что мешает попробовать?

Из этого
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var Test = (function () {
    function Test() {
        var _this = this;
        this.test = div(function (t) {
            _this.prn = t;
        }, function () { return div(EmptyAction, function () { return div(EmptyAction, function () { return div(function (x) {
            _this.prn = x;
        }); }); }); });
    }
    return Test;
})();

window.Test = Test;


получается вот что
Код: javascript
1.
window.b=function(){var c=this;this.test=div(function(a){c.a=a},function(){return div(EmptyAction,function(){return div(EmptyAction,function(){return div(function(a){c.a=a})})})})};


Наверняка и EmptyAction минифицируется. Как оно определено?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39224591
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНаверняка и EmptyAction минифицируется. Как оно определено?
Код: javascript
1.
2.
function EmptyAction(el: HTMLElement): void
{ }


Я вообще про бесконечные
function и return.
будем ждать поддержки ES-2015, такой код не во всех браузерах работает(
Код: javascript
1.
let inc = x => x+1;


пока только так
Код: javascript
1.
let inc = function(x) { return x + 1; };



skyANA
[/src]
ну заменяется же так
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs.secondsElapsedContainer);


А если таких 100500?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39224604
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Я тоже предлагаю создавать компоненты, как например выше Pager.
Не все приложения состоят из отображения/изменения БДешных банных.
Вот попробуй со всем своим виртуальным DOM сделай тот же datetimepicker? Может еще и реально, но придется тащить с собой тот же React.
А попробуй Visual Studio Code? Просто не реально же!
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225092
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAНаверняка и EmptyAction минифицируется. Как оно определено?
Код: javascript
1.
2.
function EmptyAction(el: HTMLElement): void
{ }


Я вообще про бесконечные
function и return.
будем ждать поддержки ES-2015, такой код не во всех браузерах работает(Зачем ждать, когда есть тот же babel?

ЕвгенийВskyANA[/src]
ну заменяется же так
Код: javascript
1.
var div = React.findDOMNode<HTMLDivElement>(this.refs.secondsElapsedContainer);


А если таких 100500?Если таких 100500, то значит React используется через одно место.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225095
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVostt,
Я тоже предлагаю создавать компоненты, как например выше Pager.
Не все приложения состоят из отображения/изменения БДешных банных.
Вот попробуй со всем своим виртуальным DOM сделай тот же datetimepicker?
https://egghead.io/lessons/react-using-react-with-the-fullcalendar-jquery-plugin#/tab-code
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225185
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗачем ждать, когда есть тот же babel?
Речь про миминизацию, он развернет в то, от чего я хочу уйти.

skyANAЕсли таких 100500, то значит React используется через одно место.
А если нужно, например Ribbon, который меняется от контекста и от самого же себя.

skyANA https://egghead.io/lessons/react-using-react-with-the-fullcalendar-jquery-plugin#/tab-code
А есть ссылка, где средствами react создается нечто аналогичное fullCalendar jQuery plagin, а не используется готовый fullCalendar jQuery plagin? Это немного разные вещи...
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225190
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, что-то я перестал понимать смысл обсуждения. Вместо развёрнутых аргументов начались какие-то "а если".

Вы пробовали на React сделать Ribbon и у Вас не получилось? Почему? А на bso получилось, где посмотреть?
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225192
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА есть ссылка, где средствами react...
http://www.material-ui.com/#/components/date-picker
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225438
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВА есть ссылка, где средствами react...
http://www.material-ui.com/#/components/date-picker
Выше я писал, что допускаю возможность создания датапикера на реакт.
В итоге имеем поделку состоящую из 12 файлов размером 47 780 байт, которые ссылаются на еще файлы в других папках, с невозможностью выбрать дату раньше 27 апреля 1916 года (вдруг мне надо вбить дату рождения бабушки?), без возможности выбрать время, без возможности локализации. При чем если демку открыть в 2 вкладках хрома, работает только в одной, в другой путает левую и правую кнопки мыши. Если в самое ближайшее время не доработают - пойдет на обочину истории.
...
Рейтинг: 0 / 0
покритикуйте bso
    #39225451
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВ, что-то я перестал понимать смысл обсуждения. Вместо развёрнутых аргументов начались какие-то "а если".

Вы пробовали на React сделать Ribbon и у Вас не получилось? Почему? А на bso получилось, где посмотреть?
А что? надо попробовать! Хорошая мысль)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39226091
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAпропущено...

http://www.material-ui.com/#/components/date-picker
Выше я писал, что допускаю возможность создания датапикера на реакт.
В итоге имеем поделку состоящую из 12 файлов размером 47 780 байт, которые ссылаются на еще файлы в других папках, с невозможностью выбрать дату раньше 27 апреля 1916 года (вдруг мне надо вбить дату рождения бабушки?), без возможности выбрать время, без возможности локализации. При чем если демку открыть в 2 вкладках хрома, работает только в одной, в другой путает левую и правую кнопки мыши. Если в самое ближайшее время не доработают - пойдет на обочину истории.
И чё? :)
...
Рейтинг: 0 / 0
покритикуйте bso
    #39226093
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем к чёрту флейм, пойду из этого топика.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / покритикуйте bso
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]