powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / покритикуйте bso
25 сообщений из 50, страница 1 из 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
25 сообщений из 50, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / покритикуйте bso
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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