my 2 cents... https://youtu.be/zt5gnKk40Zw
2017-08-16 22:23 GMT+01:00 António Ramos <ramstei...@gmail.com>: > The first video tut about this deserves a beer... > > > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > Sem > vírus. www.avast.com > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > <#m_-4957257828473207227_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > > 2017-08-16 20:29 GMT+01:00 Val K <valq7...@gmail.com>: > >> @Massimo and @All concerned >> Uploaded <https://github.com/valq7711/rapydml_cmp> to github with short >> manual and examples. >> Discussion is welcome! >> >> >> On Wednesday, August 16, 2017 at 6:00:36 AM UTC+3, Massimo Di Pierro >> wrote: >>> >>> I want to know more. >>> >>> On Tuesday, 15 August 2017 18:40:57 UTC-5, Val K wrote: >>>> >>>> >>>> Considering the number of views, this issue is quite exciting. >>>> >>>> Here is my experience. I use RapydML and RapydScript to generate >>>> Vue-components. >>>> >>>> I wrote brute-force parser + made some hacks of RapydML-compiler so, as >>>> exhaust I receive single js-file with embeded template as html-string. >>>> >>>> If anyone is interested, I can describe in more detail. In gVim it >>>> looks like this: >>>> >>>> >>>> >>>> >>>> >>>> <https://lh3.googleusercontent.com/-SWHAIsxMvcE/WZOFDZqjxlI/AAAAAAAAAB4/rH3olx6FH8cirbUaZh9M54XMnqU9rQzSgCLcBGAs/s1600/v_hello.png> >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Tuesday, August 15, 2017 at 8:23:34 AM UTC+3, Limedrop wrote: >>>>> >>>>> @Carlos...I don't know if this is better, but it is different. >>>>> Probably more suited to bigger apps. My basic assumption is that if >>>>> you're >>>>> going to use vue.js then, ultimately, it will be a lot easier if you stick >>>>> to the proper vue.js way of doing things. In general this means letting >>>>> vue.js do it's stuff with the frontend and leaving web2py with the data >>>>> and >>>>> backend. >>>>> >>>>> Specifically it means setting up your view files like this: >>>>> https://vuejs.org/v2/guide/single-file-components.html >>>>> >>>>> And using this: >>>>> https://github.com/vuejs-templates/webpack >>>>> >>>>> In development mode I have web2py running on one port and node running >>>>> on another (node's hot-reloading seems like magic, and you can use the >>>>> chrome VueDevtools plugin to debug). When I'm ready to commit I run "npm >>>>> run build". The index file is then compiled to >>>>> "/views/default/index.html", and the assets are compiled to "/static". >>>>> >>>>> In production I get web2py to serve the index file and then get vue.js >>>>> to load whatever else it needs via ajax (axios). >>>>> >>>>> A basic outline of the key files are given below. Note that these are >>>>> just snippets to show you how you might do it...the code is incomplete and >>>>> it will NOT work out-of-the-box. >>>>> >>>>> >>>>> ====\web2py\applications\app\controllers\default.py >>>>> >>>>> def index(): >>>>> """ Starts vue.js session >>>>> >>>>> The uuid is injected into the html <body> tag as >>>>> the id. For example: <body id="14e4de39-dc9e-467f-a28e-9c >>>>> 78bd485bc1"> >>>>> >>>>> vue.js then uses status_load() to retrieve the session details. >>>>> """ >>>>> uuid = session_new() >>>>> return dict(UUID=uuid) >>>>> >>>>> def status_load(): >>>>> uuid, error = IS_MATCH('[0-9a-f]{8}-[0-9a-f] >>>>> {4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z')(request. >>>>> vars['uuid']) >>>>> if error: >>>>> raise HTTP(403, "Not authorized") >>>>> query = (db.vue_session.uuid==uuid) >>>>> session = db(query).select(orderby=~db.v >>>>> ue_session.expiry_datetime).first() >>>>> if not session: >>>>> raise HTTP(403, "Not authorized") >>>>> return response.json(session) >>>>> >>>>> >>>>> ====\web2py\applications\app\views\index.html >>>>> ## The COMPILED VUE.JS FILE GOES HERE!!! >>>>> >>>>> >>>>> ====\vue\index.html >>>>> <!DOCTYPE html> >>>>> <html> >>>>> <head> >>>>> </head> >>>>> <body id="{{=UUID}}"> >>>>> <div id="app"></div> >>>>> <!-- built files will be auto injected --> >>>>> </body> >>>>> </html> >>>>> >>>>> ====\vue\src\App.vue >>>>> <template> >>>>> <div id="app" class="OuterWrapper"> >>>>> <div class="PageContainer"> >>>>> <router-view></router-view> >>>>> </div> >>>>> </div> >>>>> </template> >>>>> >>>>> <script> >>>>> export default { >>>>> name: 'app', >>>>> components: { >>>>> }, >>>>> data () { >>>>> return { >>>>> } >>>>> }, >>>>> computed: { >>>>> }, >>>>> methods: { >>>>> }, >>>>> mounted: function () { >>>>> // The uuid is injected into the parentElement by web2py >>>>> // The store will then use the uuid to get the session from web2py >>>>> // and may redirect to the restore_point >>>>> this.$store.dispatch('NEW_UUID', { uuid: this.$el.parentElement.id >>>>> }) >>>>> } >>>>> } >>>>> </script> >>>>> >>>>> ====\vue\src\store\index.js >>>>> import Vue from 'vue' >>>>> import Vuex from 'vuex' >>>>> import axios from 'axios' >>>>> import router from '../router' >>>>> Vue.use(Vuex) >>>>> var axiosi = axios.create({ >>>>> baseURL: '/myapp/default/', >>>>> timeout: 5000 >>>>> }) >>>>> const store = new Vuex.Store({ >>>>> state: { >>>>> // put your session variables here >>>>> }, >>>>> actions: { >>>>> NEW_UUID: function ({ commit, dispatch, state }, { uuid }) { >>>>> // At the start of each session web2py gives us a uuid >>>>> // We then go back to web2py and retrieve the session state >>>>> commit('SET_UUID', { uuid: uuid }) >>>>> var data = {} >>>>> data.uuid = uuid >>>>> axiosi.post('status_load', data).then((response) => { >>>>> commit('UPDATE_STATUS', { newState: response.data }) >>>>> }, (err) => { >>>>> console.log(err) >>>>> router.push({ name: 'error', params: { errorMessage: >>>>> err.response.data } }) >>>>> }) >>>>> } >>>>> >>>>> >>>>> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to web2py+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.