I second this,

On Monday, November 27, 2017 at 3:13:27 PM UTC-5, JosΓ© L. wrote:
>
> Massimo, I am sure most of the people in this group agree with you, having 
> the same preference. Coming from the python world we feel more comfortable 
> using that kind of js interaction.
> I am one of them, and I chose web2py for my personal work some  years ago 
> because of its simplicity against other frameworks complexity.
> However, working as you mentioned force you to miss most of the rich 
> environment available using node modules.
>
> Unfortunately, nowadays to build a modern web site you need to be fluent 
> in 5 "languages" at least (python, JavaScript, html, css & sql) plus some 
> frameworks (web2py, bootstrap, vue/react, not to mention other things like 
> sqlalchemy in some cases). I agree it's not comfortable at all, but 
> currently I see only two solutions for it:
>
> 1. If you can work exclusively for chrome/firefox you will be able to work 
> with node-modules in the browser, without the cli , using an elegant 
> solution as 
> https://medium.com/@oleg.agapov/basic-single-page-application-using-vue-js-and-firebase-part-1-9e4c0c11a228
>  
>
> 2. In the medium term we might have webcomponents
>
> 3. Paid solutions like Anvil, https://anvil.works/,  allowing you to do 
> everything in Python 
>
> However, now, needing to support old versions of Firefox and Chrome, or 
> IE, Safari, Edge, etc. I don't see alternatives to the nightmare of webpack 
> and node cli if you want to do a modern application.
> I think the approach you mention in your email would be similar to be 
> copying python files inside our application directories instead of using 
> pip install to install complete packages. So, my opinion is that we should 
> work on having a polished approach for future versions of web2py, similar 
> to what PHP Laravel community did with vue.
>
>
> JosΓ© L.
>
> 2017-11-26 21:21 GMT+01:00 Massimo Di Pierro <massimo....@gmail.com 
> <javascript:>>:
>
>> It seems that using the cli is becoming standard these days but I still 
>> like the original simplicity of being able to write js without need for 
>> nodejs.
>>
>> I tend to program in this way:
>>
>>
>> #... in index.html
>>
>> <div id="app">
>>    <div v-if="page='mypage1">
>>       <mypage></mypage>
>>       <button v-on:click="goto('mypage2')">next</button>
>>    </div>
>>    <div v-if="page='mypage2">
>>       <mypage></mypage>
>>       <button v-on:click="goto('mypage3')">next</button>
>>    </div>
>>    <div v-if="page='mypage3">
>>       <mypage></mypage>
>>       <button v-on:click="goto('mypage1')">start again</button>
>>    </div>
>> </div>
>> <script src="js/vue.min.js"></script>
>> <script src="js/axios.min.js"></script>
>> <script src="js/main.js"></script>
>>
>> # in js/main.js
>> var app = {};
>> // make a component for each page or each reusable widget with a lazily 
>> loaded html
>> Vue.component('mypage', function (resolve, reject) {
>>         axios.get('components/vue.mypage.html').then(function(res) { 
>> resolve(common_forms(res.data)); });
>>     });
>> app.vue = new Vue({el:'#app data:{page:'mypage1'}, 
>> methods:{goto:function(page){app.vue.page=page;}}, filters:{}, components: 
>> {}});
>>
>>
>> # then I define the html for each component in its own lazily-loaded html 
>> file, for example
>> # in components/vue.mypage.html
>> <div>
>>    I am the template for the mypage component.
>> </div>
>>
>>
>>
>> On Wednesday, 15 November 2017 09:33:28 UTC-6, Carlos A. Armenta Castro 
>> wrote:
>>
>>> Hi JosΓ©,
>>>
>>> I'm not in a hurry, but I will appreciate so much your help.
>>>
>>> Thank you!
>>>
>>> P.S. Your recipe with the Webpack proxyTable is working like a charm in 
>>> my dev server. πŸ˜…
>>>
>>>> lso, in webpack.config.babel.js configuration file ,  if you add
>>>>
>>>>
>>>>   devServer: {
>>>>     host: '127.0.0.1',
>>>>     port: 8001,
>>>>     historyApiFallback: false,
>>>>     noInfo: true,
>>>>     proxy: {
>>>>       '/yourapp/api/*': {
>>>>         target: 'http://127.0.0.1:8080',
>>>>         secure: false
>>>>         // changeOrigin: true,
>>>>         // pathRewrite: { '^/api': '' }
>>>>       }
>>>>     },
>>>>   },
>>>>
>>>
>>> On Tue, Nov 14, 2017 at 12:58 PM, JosΓ© Luis Redrejo <jred...@gmail.com 
>>> <javascript:>> wrote:
>>>
>>>> Carlos, by the way, if you are not in a hurry I can prepare a proof of 
>>>> concept this weekend. I just can tell it really works because I am using 
>>>> it 
>>>> in a system in production.
>>>>
>>>> Of course, that's the develop setup, once develop is done in production 
>>>> we use nginx-uwsgi only, but in that case there's no cors problem as 
>>>> everything runs in the same server.
>>>>
>>>>
>>>> The only thing I miss in web2py (waving Massimo ;) ) is having 
>>>> something like http://pyramid-webpack.readthedocs.io/en/latest/ 
>>>>
>>>> It would allow us to write in the view  controller/function.html 
>>>> something like
>>>>
>>>> <link rel="stylesheet" 
>>>> href="{{=URL('static',webpack('controller/function.css'))}}"/>
>>>>
>>>> <script 
>>>> src="{{=URL('static',webpack('controller/function.js'))}}"></script>
>>>>
>>>>
>>>> It would fetch the built files using the dist/webpack-manifest.json 
>>>> automatically instead of having to write them manually. Now if I use js or 
>>>> css versioning I have to change the routes in the view whenever I execute 
>>>> webpack
>>>>
>>>> Regards
>>>> JosΓ© L.
>>>>
>>>> 2017-11-14 20:37 GMT+01:00 JosΓ© Luis Redrejo 
>>>>
>>>>> Hi Carlos
>>>>> I would recommend you to use this webpack helper:
>>>>> https://github.com/Plortinus/vue-multiple-pages
>>>>>
>>>>> Doing "vue init Plortinus/vue-multiple-pages new-project" you get the 
>>>>> structure to work, just add the div for app to the class and import the 
>>>>> page js per each page.
>>>>>
>>>>> Also, in webpack.config.babel.js configuration file ,  if you add
>>>>>
>>>>>
>>>>>   devServer: {
>>>>>     host: '127.0.0.1',
>>>>>     port: 8001,
>>>>>     historyApiFallback: false,
>>>>>     noInfo: true,
>>>>>     proxy: {
>>>>>       '/yourapp/api/*': {
>>>>>         target: 'http://127.0.0.1:8080',
>>>>>         secure: false
>>>>>         // changeOrigin: true,
>>>>>         // pathRewrite: { '^/api': '' }
>>>>>       }
>>>>>     },
>>>>>   },
>>>>>
>>>>>
>>>>> You can start web2py server, then webpack dev server and it will do 
>>>>> queries to web2py without any cors problem.
>>>>>
>>>>> i.e 
>>>>> http://localhost:8001/api/whatever will automatically be fetched from
>>>>> http://localhost:8080/yourapp/api/whatever
>>>>>
>>>>> That's how I set it up for web2py to be the backend, and webpack dev 
>>>>> server to run the frontend.
>>>>>
>>>>>
>>>>> Hope it helps
>>>>> JosΓ© L.
>>>>>
>>>>> 2017-11-14 17:48 GMT+01:00 Carlos A. Armenta Castro <
>>>>> carlos....@gmail.com <javascript:>>:
>>>>>
>>>>>> I have using Web2Py for too many years for commercial websites and 
>>>>>> for Intranets in MΓ©xico, I want to say that Web2Py is an AMAZING 
>>>>>> Framework!!! 
>>>>>> For my new project I need to use an SPA VueJs + Webpack for the 
>>>>>> FrontEnd  ( http://quasar-framework.org/ ) and a Web2Py as my 
>>>>>> BackEnd API Server. 
>>>>>> I'm curious about to integrate his two web frameworks using web2py 
>>>>>> routes to serve this two apps in the same port but different URL.
>>>>>>
>>>>>> Example:
>>>>>> http://127.0.1.1/welcome/api ---> My Web2py API Controller
>>>>>> http://127.0.1.1/welcome       ---> My VueJS APP with webpack  ( 
>>>>>> http://quasar-framework.org/ ) <-- Pointing to index.html in *dist/ * 
>>>>>> and permit to use all the static files deposited in the same path 
>>>>>> *dist/**
>>>>>>
>>>>>> *VueJS + Webpack APP Structure*
>>>>>>
>>>>>> β”œβ”€β”€ *dist/ *                     *# Compiled APP (Serve this files as 
>>>>>> the static SPA)*
>>>>>> β”‚   *└── index.html 
>>>>>> β”‚   β”œβ”€β”€ fonts/             
>>>>>> β”‚   β”‚   └── ...
>>>>>> β”‚   β”œβ”€β”€ static/             
>>>>>> β”‚   β”‚   └── ...
>>>>>> β”‚   β”œβ”€β”€ js/             
>>>>>> β”‚   β”‚   └── ...*
>>>>>> β”œβ”€β”€ config/
>>>>>> β”‚   β”œβ”€β”€ index.js                # main project config
>>>>>> β”‚   └── ...
>>>>>> β”œβ”€β”€ src/
>>>>>> β”‚   β”œβ”€β”€ main.js                 # app entry file
>>>>>> β”‚   β”œβ”€β”€ App.vue                 # main app component
>>>>>> β”‚   β”œβ”€β”€ components/             # ui components
>>>>>> β”‚   β”‚   └── ...
>>>>>> β”‚   └── assets/                 # module assets (processed by webpack)
>>>>>> β”‚       └── ...
>>>>>> β”œβ”€β”€ static/                     # pure static assets (directly copied)
>>>>>> β”œβ”€β”€ test/
>>>>>> ...
>>>>>>
>>>>>> Actually I am doing this work in my NginX Server but I Will be happy if 
>>>>>> I can do the same thing easily using pure web2py!!!! 
>>>>>>
>>>>>> Why using the same port?  Because the CORS issues, this is the best and 
>>>>>> easy way to deal with CORS. I know I can use sub-domains in the same 
>>>>>> port, I know I can use ALLOW ORIGIN headers in W2P side but that are not 
>>>>>> options for me in this case.
>>>>>>
>>>>>> NginX config working:
>>>>>>
>>>>>> location / {
>>>>>>                 index index.html index.htm;
>>>>>>                 root /home/www-data/vue/applications/simott;
>>>>>>                 try_files $uri $uri/ /index.html;
>>>>>>         }
>>>>>>
>>>>>>         location /api {
>>>>>>             uwsgi_pass      unix:///tmp/web2py.socket;
>>>>>>             include         uwsgi_params;
>>>>>>             uwsgi_param     UWSGI_SCHEME $scheme;
>>>>>>             uwsgi_param     SERVER_SOFTWARE nginx/$nginx_version;
>>>>>>
>>>>>>        }
>>>>>>
>>>>>> Any recommendations? Thanks in advance!
>>>>>>
>>>>>> -- 
>>>>>> 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+un...@googlegroups.com <javascript:>.
>>>>>> 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 a topic in the 
>>>> Google Groups "web2py-users" group.
>>>> To unsubscribe from this topic, visit 
>>>> https://groups.google.com/d/topic/web2py/pzyyNKajy0w/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> web2py+un...@googlegroups.com <javascript:>.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> -- 
>>> Ing. Carlos Alberto Armenta Castro
>>> Hermosillo, Sonora, MX.
>>>
>> -- 
>> 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+un...@googlegroups.com <javascript:>.
>> 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.

Reply via email to