Skip to main content

Pythonic Vue.js

Project description

pyvuejs



Install

using pip

pip install pyvuejs

from git

git clone https://github.com/eseunghwan/pyvuejs.git
cd pyvuejs
python setup.py install


Usage

create project with cli

python -m pyvuejs init

[output]
//=========== pyvuejs project init ===========//
AppName: 

move to project directory and start with cli

  • default host = "0.0.0.0", port = 8000
python -m pyvuejs start

[output]
//=========== start pyvuejs app ===========//
Running on http://0.0.0.0:8000 (CTRL + C to quit)
[2020-07-17 18:46:40,927] Running on 0.0.0.0:8000 over http (CTRL + C to quit)

start command line options

  • host only
python -m pyvuejs start 127.0.0.1
  • port only
python -m pyvuejs start 9000
  • both host and port
python -m pyvuejs start 127.0.0.1 9000


PVUE editing guide

pvue file is a single view file against with vue file

prefix(optional, default = "view")

  • prefix defines pvue is view or component
<!-- if pvue is view -->
!prefix view
<!-- if pvue is component -->
!prefix component
<!-- if blank, consider as view -->

template(required)

  • template block is shown part of pvue
  • code style is very same as Vue.js
<template>
    <div id="app1">
        <!-- elements -->
        <p>{{ testVar }}</p>
        <!-- to use session values -->
        <p>{{ session.sharedVar }}</p>
        <button>click me!</button>

        <!-- if show components -->
        <component name="[componentName]" />
    </div>
</template>

model(required)

  • model block is server-side part of pvue
  • code style is python, it's sensitive to tabs
<model>
Model app1:
    # variables
    testVar = 10
    # to upload variable too session
    sharedVar:session = 30

    # event bind
    @event("load")
    def onApp1Load(self, session):
        self.testVar = 20
        # invoke to session variable
        session["sharedVar"] = 50

    # compute methods
    @method
    # to use session, add "session" argument to function
    def sub_testVar(self, session):
        # can import custom modules from app directory
        from plugins import *

        # can compute variables
        self.testVar -= 1

        # defined by ":session", use it without define to session in code
        print(session["sharedVar"])
</model>
  • connect to vue properties
    • currently, computed and method are able
    • add decorator on top of function
    @method
    def get_sample(self):
        self.sample = "It's sample!"
    
  • bind to events
    • currently, load and show are able
    • add event decorator on top of function
    @event("load")
    def load_sample(self):
        print("onload!")
    
    @event("show")
    def show_sample(self):
        print("onshow!")
    

resource(optional)

  • resource block loads app's static files
  • app's static url is "/app"
<resource>
    <!-- css -->
    <link rel="stylesheet" href="/app/[staticFileName]">
    <!-- js -->
    <script type="text/javascript" src="/app/[staticFileName]"></script>
</resource>

style(optional)

  • style block is style part of template block
<style>
div#app1 {
    /* styles */
}
</style>

script(optional)

  • script block runs in page
  • custom events, attributes can be set in script block
<script>
    /* scripts */
</script>


Todo

  • enable componenting(V 0.2.0)
    • component properties
  • multi locational data binding(V 0.2.0)
  • dataSession (V 0.2.0)
  • add vue properties
    • method (V 0.1.0)
    • computed (V 0.2.0)


License

pyvuejs is MIT license



Release History

  • V 0.1.0 [2020/07/17]
    • initial commit

  • V 0.2.0 [2020/07/18]

    • enable componenting
    • multi locational data binding
    • add computed binding
    • dataSession
  • V 0.2.1 [2020/07/19]

    • change decoration as "@method", "@compute"
    • multi locational strategy changed to IP from idGeneration
  • V 0.2.2 [2020/07/19]

    • bug fixes
    • parsing errors if model block is empy
  • V 0.2.2.Rev1 [2020/07/19]

    • bug fixes
    • show default favicon correctly
  • V 0.2.2.Rev2 [2020/07/20]

    • remove "Variable" model
    • change component's default size to 100% of parent
  • V 0.2.2.Rev3

    • depricated
    • revoke changes and upgrade to Rev4
  • V 0.2.2.Rev4 [2020/07/20]

    • variables can upload to session by adding ":session" when it's definition
    • session variables can be used in template by calling "sesssion" dictionary
  • V 0.2.2.Rev5 [2020/07/20]

    • change component parsing logic
    • component tag format changed to "<component name="[componentName]" />"
  • V 0.2.2.Rev6 [2020/07/20]

    • move multi locational strategy to initial viewpoints
    • add event bind decoration as "@event"
      • currently only support for "load", "show" event
    • enabled to import python modules in app's directory
      • base directory of modules is plugins
  • V 0.2.2.Rev7 [2020/07/20]

    • change pyvuejs object to class with constructor
    • bug fixed
      • pyvuejs calls other view's models also
  • V 0.3.0 [2020/07/21]

    • change backend server to flask from quart
    • changes in requirements.txt
    • bug fixed
      • session datas are not sync from view to model

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvuejs-0.3.0.tar.gz (237.6 kB view details)

Uploaded Source

Built Distribution

pyvuejs-0.3.0-py3-none-any.whl (236.8 kB view details)

Uploaded Python 3

File details

Details for the file pyvuejs-0.3.0.tar.gz.

File metadata

  • Download URL: pyvuejs-0.3.0.tar.gz
  • Upload date:
  • Size: 237.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.7

File hashes

Hashes for pyvuejs-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4de0e85ba0dfae04cd49e7214957b89c92d2c795e0ef55c5af328e22da365283
MD5 19d1eadef0682080d85045ec7749d764
BLAKE2b-256 05f510330eccf12387d38ae39b1cec733f3327c7e56c455f0c960b5fa8c22c0b

See more details on using hashes here.

File details

Details for the file pyvuejs-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pyvuejs-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 236.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.7

File hashes

Hashes for pyvuejs-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec8ecb0c880a541599e0efaffe91e4c87605e6e07ebea2256bdcdb1582b36c3a
MD5 862b3747347ad8aec53f01d3a18f6cea
BLAKE2b-256 8a7d464e59c422cf471cf2744ee7041cda58f2b392d8570cd15b076025c059ad

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page