转行正经 web 开发需要做些什么?很迷茫。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
explosive
V2EX    Python

转行正经 web 开发需要做些什么?很迷茫。

  •  
  •   explosive 2019-05-29 09:25:14 +08:00 3104 次点击
    这是一个创建于 2363 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直投的的 Python 数据分析岗,因为简历里提到过有 flask 经验,公司又缺人,于是阴差阳错就开始干起了 web。目前入职一个月,发量稳定。

    我干的其实是全栈工作,前后端都是写给自己。但在刚入职的时候,我甚至都没有前后端概念一切 flask 搞定。

    刚开始利用老套路做了些静态网站,相安无事。某天忽然来了个服务器状态监测需求,就是显示些硬件、业务信息在页面上,供业务人员实时查看。

    服务器很多,还要求实时更新,难道每次请求都由后端通过 ssh 主动去探测?苦思冥想,我得到在服务器端再布一个 web 服务,每次前端主动请求 json 的方案,后来我才知道这叫前后端分离。 然后是页面动态渲染,花半天囫囵吞枣 JS,紧接着就学起了 vue。 大概用了一周,项目上线,利用定时器收集所有后端的数据,存入缓存,前端页面再请求缓存渲染出来,看起来很完美,运行也很稳定。

    但这个项目,总有着说不出来的畸形感,让我浑身不舒服因为它围绕着 flask 展开。 要说原因,首先是对 flask 框架本身的不信任(也可以说是无知),我这套方案能足够支撑更大的公司项目还是仅仅在练习过家家呢?

    其次,前端杂糅了 flask+jinja2+vue.js 的各种部件。我使用 jinja2 管理 html 基模板,再把 vue 函数直接写入 index.html,利用 flask 的 render_html 传入数据初始化 vue 实例。因为 jinja2 和 vue 的语法冲突,我还得把 vue 的{{}}替换成{[]}。 后来,觉得这样太不优雅了,于是改为 flask 新建一个名为 cache 的路由,用来返回处理好的数据。页面利用 axios 请求这个 /cache 获取数据。

    虽然运行的还行,但我总觉得这不是真正的前后端分离,只是在模拟,因为网页其实还是由 flask 渲染的,前后都在一个服务器上。而且渲染似乎有一些性能问题,我总能看见一瞬间 vue 渲染前的源代码。

    于是我接着学习,参考 flask-vue-template 的结构,发现了 vue 脚手架和 node.js ,原来不用 Flask 也能搭网站。但是我读这些文档十分吃力,涉及到 ES6、什么 webpack、什么 babel、还有什么 nuxt.js 。我只能对这些东西的功能大致有个了解,但是无法形成一个完整的知识链和框架,我到底该用什么??

    所以想问大家几个问题:

    1. Flask 能用到什么程度?不追求高并发,但是有大量数据读取的页面,能有较好的性能表现吗?
    2. 像我上面项目提到的这样的杂糅的项目,会不会有安全隐患?实际上开发起来比较顺手,效率很高,就是代码不太好看,而且不知道会不会在哪里有个大坑等着我。
    3. 之后的工作和 GIS 系统绘图关系较大,大概有两种解决方案。纯 python 的 dash+plotly,或者写用 leaflet、echarts 之类的写 js,孰优孰劣?
    4. 想系统性的学习前端知识,有参考书推荐吗? 谢谢大家阅读。
    10 条回复    2019-05-31 17:47:09 +08:00
    layfones
        1
    layfones  
       2019-05-29 09:35:46 +08:00 via Android
    flask+restful+前端
    boringdays2015
        2
    boringdays2015  
       2019-05-29 09:37:16 +08:00
    前后端分离,请

    拿后端模板渲染 vue 这种反模式建议尽快重构,后端只提供接口好了,前端那边给专业前端搞就好
    ben1024
        3
    ben1024  
       2019-05-29 09:41:23 +08:00
    @boringdays2015
    后端模板渲染 vue 这种模式,个人认为是在人力和项目未到一定层级时最好解决方案。
    在进行数据控制和权限拦截,语言转换等操作时尤为明显
    TrickWu
        4
    TrickWu  
       2019-05-29 09:45:17 +08:00
    不要求 SEO 的话
    我目前用的是 flask+restful+vue
    flask 只提供 API 接口,不做渲染 template
    部署时候前后端分离,用 nginx 转发
    explosive
        5
    explosive  
    OP
       2019-05-29 09:49:03 +08:00
    @boringdays2015 就是 @ben1024 说的这样。
    我司之前 web 方面全部是外包开发,才准备迁移回自己这边,但目前只有几个半吊子前端,人力和技术不足的情况大概要持续较长一段时间,无论如何我都是要自己开始学的。。
    explosive
        6
    explosive  
    OP
       2019-05-29 09:52:56 +08:00
    @TrickWu 您看一下 flask-vue-template https://github.com/gtalarico/flask-vuejs-template
    是不是和这个模板的结构类似?也就是说还是得把前端彻底转到 node.js 上去?
    zhwithsweet
        7
    zhwithsweet  
       2019-05-29 10:01:14 +08:00
    要不转前端吧
    TrickWu
        8
    TrickWu  
       2019-05-29 10:08:34 +08:00
    @explosive 不是很一样,我这边做法是完全分割开来的,中间用 ngnix 转发请求。你发的还是通过 flask 去 render index.html。
    kuan19920102
        9
    kuan19920102  
       2019-05-31 14:08:57 +08:00
    "能看到 vue 渲染前的源代码" 这个需要通过在 dom 节点上加一个 v-cloak 就可以解决
    bnbdfg
        10
    bnbdfg  
       2019-05-31 17:47:09 +08:00
    vue 取缓存中数据??
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2435 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 06:40 PVG 14:40 LAX 22:40 JFK 01:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86