Kitware / py-web-vue

Build a 3D Web application using VTK or ParaView while only writing a Python script. This project aims to streamline the existing ParaViewWeb infrastructure into something that is simpler to use by lowering the entry point complexity.
Other
24 stars 9 forks source link

Roadmap #1

Open jourdain opened 3 years ago

jourdain commented 3 years ago
patrickoleary commented 3 years ago

Awesome! I can't wait.

aaronchn commented 2 years ago

What a great!

jourdain commented 2 years ago

@aaronchn you should checkout trame which is really a nice abstraction layer on top of py-web-vue. In reality py-web-vue will be break down into smaller pieces and renamed trame-core, trame-widgets-vuetify, **trame-widgets-*. Of course trame** will only switch its internal import but it will keep the same API (so no breaking changes at the trame level). This will allow us to better manage client/server code compatibility.

aaronchn commented 2 years ago

@jourdain

As a novice with no web development experience, after reading the py-web-vue readme, I had the following possibly vague or incorrect perceptions:

SharedState is a core concept in trame or py-web-vue. This concept is a strong contender for the current client(data drive UI)<->ajax call<->restfull api(maybe like Flask) development pattern, and can even be called revolutionary.

The SharedState based web development pattern removes the clear boundary between client and server to some extent, which can be great, but there is an inertia in understanding the traditional web app pattern when trying or practicing it. This inertia may be a barrier to learning py-web-vue.

The SharedState based web development model somehow reduces the difficulty of web app development, or the skills required to get started.

SharedState based web development pattern, for the front and back-end close interaction scenario, such as VTK (I do not know this) may be very suitable, but can it basically or completely replace Django or Flask such web framework? I'm looking forward to seeing successful examples of this, which could be a boon to small or non-professional web developers.

Sorry, I haven't read the Trame documentation yet, so I'm not sure what the important differences are between the trame and py-web-vue projects, I'll try to learn more.

I don't mean to discredit the vue.py project, but as far as I understand it now, py-web-vue might be a more suitable choice for developing small webapp needs, so I hope I'm right.

Interesting, great, thank you!

jourdain commented 2 years ago

@aaronchn your summary on the shared state is fairly accurate and you are right of being "revolutionary".

But they are things to note and be aware of. pywebvue/trame are mainly driven for building stateful applications which is not what you get with flask/django. It is really for building application like you find on your desktop which can then be use as a local, remote application or a service.

The main difference between pywebvue and trame is that:

HTH

jourdain commented 2 years ago

You can see the code difference between pywebvue and trame for a simple examples