微信中 web 小项目架构设计 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chenhaifeng
V2EX    问与答

微信中 web 小项目架构设计

  •  
  •   chenhaifeng 2015-06-24 13:46:05 +08:00 4211 次点击
    这是一个创建于 3764 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想请教下各位大神,目前公司后端用J2EE,跟他们商议,他们负责restful接口,我负责前端开发,前端用SPA方式做过一次项目,感觉单页程序不太适合运行在微信中。但又不想用jsp的方式,前端有几个人不会jsp。请问怎么架构比较合适。
    13 条回复    2015-06-24 17:19:55 +08:00
    zonghua
        1
    zonghua  
       2015-06-24 13:56:36 +08:00 via iPhone
    jsp不就是写一个表达式标签么?试一下单页应用?
    Septembers
        2
    Septembers  
       2015-06-24 14:21:16 +08:00
    后端认真提供好RESTful服务
    至于前端扔给前端瞎折腾(比如node.js 什么的
    crs0910
        3
    crs0910  
       2015-06-24 16:12:28 +08:00 via iPhone
    为什么不适合 我现在就是这样。就是调试太麻烦了
    chenhaifeng
        4
    chenhaifeng  
    OP
       2015-06-24 16:40:32 +08:00
    @crs0910 单页程序,怎么加统计代码;还有怎么拿微信的 openid,必须先时后端,再跳到前端吧。
    crs0910
        5
    crs0910  
       2015-06-24 16:44:53 +08:00
    @chenhaifeng 不用的,我现在的做法是一进页面就把当前页面 url 当做参数请求后台拿到微信的授权地址,然后跳转到微信授权地址,微信授权后会在你的url后面加一个 code 参数然后跳回来,接着再用这个 code 去请求后台拿到 openId,然后缓存到 localStorage。
    这样下次进来就直接有openId了。
    crs0910
        6
    crs0910  
       2015-06-24 16:46:37 +08:00
    @chenhaifeng 统计代码没试过,是说统计某一个 router 的页面访问数据吗?这个没试过。
    likai
        7
    likai  
       2015-06-24 16:48:31 +08:00
    统计?用腾讯自家的统计系统噻
    chenhaifeng
        8
    chenhaifeng  
    OP
       2015-06-24 16:52:54 +08:00
    @crs0910 统计代码,页面入口和出口只会统计成项目地址,不会把 hash 统计进去,这样就没统计的意义。不过百度是支持 js 调用统计pv 的,腾讯自家则不支持。
    我现在碰到最麻烦的问题就是,拿微信的openid要先跳到后端的 servlet,然后再跳到我前端的index.html ,然后就会造成点返回键,回退到后端的 servlet,然后又跳到我的前端,如此循环无法退出系统。 index.html 我又不想用 jsp 代替。
    crs0910
        9
    crs0910  
       2015-06-24 17:04:36 +08:00
    @chenhaifeng 用我的方法可以啊,都是 ajax 请求。后端做一个拿授权地址的接口就得了。前台我是先判断有没有 localStorage,没有的话判断 url 里面有没有 code 参数, 也没有的话就请求后台拿到授权地址然后直接跳转, 跳转到授权页面登录后又带着 code 回到你前台页面,然后就可以用 code 去拿 openId 了。
    都是 ajax
    crs0910
        10
    crs0910  
       2015-06-24 17:06:25 +08:00
    就是第一次打开没授权的话,会出现先看到页面然后跳授权再跳回页面这种体验不好的情况。
    crs0910
        11
    crs0910  
       2015-06-24 17:07:24 +08:00
    @chenhaifeng 你前端用的是什么框架?
    chenhaifeng
        12
    chenhaifeng  
    OP
       2015-06-24 17:12:52 +08:00
    @crs0910 我自己在 riot2.0 的基础上稍微封装了一下,特点是极小,适合移动端。 https://github.com/cheft/cheftjs
    chenhaifeng
        13
    chenhaifeng  
    OP
       2015-06-24 17:19:55 +08:00
    @crs0910 最近一直在研究 单页面网站(SPA) 如何做 站点统计 和 SEO。
    大致可以解决,站点统计大多数提供商支持 _trackPageview ,可以通过 js 调用;
    SEO 也有很多人用 prerender.io 来做,基本上可以满足。
    惟一不足在微信里面得拿回调code,只能把主页弄成 jsp 页面算了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1296 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 17:14 PVG 01:14 LAX 10:14 JFK 13:14
    Do have faith in what you're doing.
    ubao 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