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
-
V 0.3.0.Rev1 [2020/07/21]
- bug fixed
- session datas changed in vue model are not sync to model
- bug fixed
Project details
Release history Release notifications | RSS feed
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.post1.tar.gz
(237.7 kB
view details)
Built Distribution
pyvuejs-0.3.0.post1-py3-none-any.whl
(236.9 kB
view details)
File details
Details for the file pyvuejs-0.3.0.post1.tar.gz
.
File metadata
- Download URL: pyvuejs-0.3.0.post1.tar.gz
- Upload date:
- Size: 237.7 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3772e66976763d91d764f1f617577e1e816fc9c31112a4a815b8cd8eb868467a |
|
MD5 | 07f706e78615d61821cede4698315a04 |
|
BLAKE2b-256 | b70f217bb9ff75094e0f3273cf1e054dc95d56fc45e24a14c9355f4017be7734 |
File details
Details for the file pyvuejs-0.3.0.post1-py3-none-any.whl
.
File metadata
- Download URL: pyvuejs-0.3.0.post1-py3-none-any.whl
- Upload date:
- Size: 236.9 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | acef132bc33ef99357cddbbbd7ca4e60c054aa4a788d4e63e149a2944c03a66c |
|
MD5 | 251613c26efbdfa72701d31024337151 |
|
BLAKE2b-256 | 293979bae73211906c5cb1f0c08eabcbf597c2bf301a8e1fae3c376da316f89a |