Giter Club home page Giter Club logo

Comments (11)

Riim avatar Riim commented on July 19, 2024 1

Hi, for cellx+Rionite: TodoApp.
For run app:

> git clone https://github.com/Riim/Rionite.git
> cd Rionite
> npm i
open in browser ./examples/TodoApp.html

Similar should be for cellx+React, later I can do if you need.

from cellx.

Riim avatar Riim commented on July 19, 2024 1

В RiftJS компонентная система сделана на основе шаблонизатора, это даёт возможность рендерить на сервере, но это же создаёт основной минус - минимальную автономность/встраиваемость: компонент написанный на RiftJS будет работать только в приложении написанном на RiftJS, а такое приложение сделать из уже работающего проекта весьма непростая задачка, предполагается, что проект изначально пишется на нём, тогда ещё всё более-менее нормально проходит. Да и вообще с изоморфностью в большинстве фреймворков сейчас всё плохо, наверно единственный фреймворк где этот момент додумали до какого-то завершённого состояния - это catberry, хотя там тоже есть к чему придраться, но уже не касательно изоморфности. В общем, наигравшись с изоморфностью я для себя сделал вывод, что если есть возможность индексировать приложение как-то иначе (1, 2, 3, 4), то лучше так и сделать, проблем получается в разы меньше.
Rionite в этом плане полная противоположность, компонентная система на основе custom-elements вряд ли даст нормально рендерить на сервере, но получающиеся компоненты наверно даже более автономны, чем плагины на jQuery. Вчера залил свои компоненты: opal-components, они пока конечно сырые совсем, но суть уже видна: просто подключается js-файлик компонента и дальше даже никаких $('.my-compinent').myComponent() не нужно, компоненты получаются в виде обычных тегов, вплоть до того, что основным фреймворком может быть, например, какой-нибудь Backbone, а контролы уже на Rionite, и так же как Backbone работает с обычным input[type=checkbox], точно так же он сможет работать с каким-нибудь opal-checkbox. При этом cellx+Rionite весят сопостовимо с jQuery, но в отличии от него могут быть и основным фреймворком для приложения.

from cellx.

Riim avatar Riim commented on July 19, 2024

Воскресил протухший коннектор к реакту, там ещё парочка примеров получилась: 1, 2.

from cellx.

claygod avatar claygod commented on July 19, 2024

cellx+Rionite: TodoApp. что-то не запустился под Firefox.
Я подправил ссылки вот так:

<script src="./../dist/cellx/dist/cellx.js"></script>
<script src="./../dist/Rionite-with-polyfills.js"></script>

Прочитал также про RiftJS, это более микро по отношению к Rionite фреймворк, или он сугубо под node.js ?

from cellx.

claygod avatar claygod commented on July 19, 2024

Пробую потестировать вашу библиотеку на простом примере. Есть три сущности, токен, фильтр и вьюха:

var t1 = {
    par: cellx(3),
    get: cellx(function() {return this.par();})
};
var f1 = {
    par: t1.get(),
    exe: cellx(function() {return (this.par*2);})
};
var v1 = {
    par: f1.exe(),
    id: document.getElementById('test2'),
    render: cellx(function() {this.id.innerHTML = this.par;})
};

Если вызову v1.render(), в браузере отобразится 6, как и ожидаю.
Пробую связать ячейки:

t1('subscribe', function() {
    v1.render();
});

однако t1(5); не меняет цифру, т.е. каскад изменений не запускается. Как в такой ситуации правильно увязать эти три элемента?

from cellx.

Riim avatar Riim commented on July 19, 2024

У вас две типичные для РП ошибки:

  1. в f1.exe вы читаете значение свойства в которое вы положили значение ячейки прочитав её, но в самой формуле чтения ячейки не происходит, соответственно не происходит и подписки на неё (f1.exe не подписана на изменения f1.par, она вообще ни на кого не подписана).
  2. в формуле ячейки должно быть только её вычисление, запись в innerHTML не является им, это уже реакция на изменение и должна находиться в её обработчике, во-первых, так идеологически правильно, во-вторых, ячейки не имеющие подписчиков и вычисляемых из них ячеек с подписчиками переходят в пассивный режим обновления - обновляются только непосредственно при чтении, и правильно делают, ведь их всё равно никто не слушает, зачем им зазря что-то вычислять (они же не знают, что программист положил реакцию на изменение прямо в формулу).

У меня получилось так: https://jsfiddle.net/x0uh6pgt/.

from cellx.

Riim avatar Riim commented on July 19, 2024

Но вообще, запись cellx(function() {return t1.get();}) довольно забавно выглядит: если вычисляемая ячейка просто возвращает значение другой ячейки никак его не меняя, то может и смысла в её (вычисляемой ячейки) существовании нет?

from cellx.

claygod avatar claygod commented on July 19, 2024

В t1 это было сугубо для эксперимента, понятное дело, так странно связывать не стоит ))

Спасибо за разъяснение. Ещё вопрос: вы применили функцию addChangeListener а не subscribe , когда требуется одна, а когда другая?

from cellx.

Riim avatar Riim commented on July 19, 2024

subscribe - это addChangeListener + addErrorListener. Первым аргументом приходит объект ошибки, он будет null если всё хорошо, вторым - объект события, он будет null если всё плохо))

from cellx.

Riim avatar Riim commented on July 19, 2024

По аргументам, это я про subscribe написал.

from cellx.

Riim avatar Riim commented on July 19, 2024

Статья на хабре: Пишем простое приложение на React с использованием библиотеки cellx.

from cellx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.