Hybrid混合式开发---回顾
一、前言
去年12月份开启了一个新项目--在线抓娃娃,就是让用户可以通过app去控制我们机房中的娃娃机来抓取娃娃。本项目开发半个月就紧急上线第一版本,中间经过2次大版本迭代,一个月不到就做到用户量超过10w+,后面也算做到了市场中的前三。这个项目也算是某个点间的红利,当我们决定做这个之前,市面上只有一两家产品,一个月之后,市面上就疯狂的出现了50多家,到如今应该有超过300多家了。
我先从非技术角度去看待这种模式的app:
1、新鲜的玩法,短期可以吸引大量用户;
2、让用户足不出户就可以抓娃娃,满足一些喜欢抓娃娃人群的诉求;
3、用户留存率低,一般用户就是在获取免费金币进来玩一把,然后就不会再来了,所以还得通过各种手段吸引用户来,提高付费率;
4、需软硬件结合,打通之后还需专门人员维护机器;
5、需要仓储、物流等各方面,没有这方面经验的team可能会踩很多坑;
结合这个项目,说一说我在前端部分的工作,以及后面遇到的坑,以及填坑之路,后续项目有什么心得的也会慢慢添加进来;
二、前端负责的工作
技术栈:ES6 + vue + webpack
实现模块:个人中心 + 产品详情中心 + 客服反馈模块 + 发货模块 + 订单管理 + h5支付 + 渠道推广(邀请码) + 仿造app的h5站点 + 小程序为公众号引流
说明:
1、 h5支付一种使用app里面h5生成支付订单,然后调用后台原生支付;app外的支付常用微信支付提供的API;
2、 仿造app的h5站点能实现app的大部分功能,包括抓娃娃操作等;
3、 小程序为公众号引流是临时加班开发一版拜年小程序,对页面进行跳转客服中心埋点,自动回复公众号的文章链接,进入即有关注入口(真是套路无处不在啊~);
三、采坑之路
1、代码快速迭代引发发布冲突问题;
开始采用的是非覆盖式的版本管理方式,然后后面发布代码就特别头疼,要修改某个功能模块,导致公共的manifest文件变动,发布到线上就会影响到其他页面;可能开始技术选型没有做好,后面只能中途改用非覆盖式的版本管理方式;
对于项目构建这一块,我们前端组也在一直摸索,旧项目我们采用的php模板 + gulp +JQ,我们版本管理是使用费覆盖的形式,就是每次静态文件更新,就在用gulp在编译的时候自动添加版本号就ok了;
后面新项目在构建时候就采用了webpack + vue + ejs,当然后台还是php提供接口支持,期初我们还是把旧项目的版本管理方式移植过来,后面就慢慢曝露这种实现方式的问题;进而修改为非覆盖式的方式;
开始我们采用的是开发环境编译,最后把所有代码都提交到服务器,这样也是可以的,但是提交太多。最后改成服务端编译,但是这个又暴露出一个问题,为了要保持本地环境和服务环境一样,我们要同时维护两个环境保持一致。
现在打算用集成开发模式,单独一台编译服务器,用gitLab及时触发并同步起来。目前正在进行中。。。
2、打包问题
由于路由页面比较多,引用模块文件可能比较大,尽可能讲js代码打包成小块,使用require.ensure按需加载等;
3、首屏白屏问题
添加各种零星优化方案之后,loading、减小代码体积、合并接口、cdn加速缓存。。。首屏还是会有可能白屏情况;
找了几种实现方案,但是还是没有添加进去
(1)做个资源预加载,将你的项目分好模块,分批次进行预加载。
(2)使用骨架屏,刷微博时候,如果网页出来比较慢,显示可以看到一个骨架图占位;《为vue项目添加骨架屏》
(3)vue-ssr,做成服务端渲染,具体还看实际情况吧。
Hybrid混合式开发---回顾的更多相关文章
- Android混合式开发(Hybrid)
安卓混合式开发(Hybrid) 1 环境搭建 1.1 首先,下载 Android Studio (Intellij Idea) 下载地址:http://www.android-studio.org/ ...
- hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database
近期在项目中进行hybrid app开发,项目中有大量的js代码执行在android设备上. 使用到了非常多HTML5的新特性,之前没有遇到过,不了解.这里记录下添加点前端的知识.混合式app开发中. ...
- HBase应用开发回顾与总结系列之一:概述HBase设计规范
概述 笔者本人接触研究HBase也有半年之久了,虽说不上深入和系统,但至少算是比较沉迷.作为部门里大数据技术的探路者,笔者还要承担起技术传播的职责,所以在摸索研究的过程中总是不断地进行总结和测试, ...
- 【Hybrid App】Hybrid App开发实战
[引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员, 技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越 ...
- 【Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发】
原文:[Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发] 官方地址:https://developer.xamarin.com/guides/cross-platform/adv ...
- 【Hybrid App】Hybrid App开发 四大主流移平台分析
转自http://dev.yesky.com/238/34657738.shtml Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之 ...
- Hybrid App 开发模式
开发移动App主要有三种模式:Native. Hybrid 和 Web App. 需要注意的一点是在选择开发模式的时候,要根据你的项目类型(图片类?视频类?新闻类?等),产品业务和人员技术储备等做权衡 ...
- Hybrid App 开发初探:使用 WebView 装载页面
Hybrid App 是混合模式应用的简称,兼具 Native App 和 Web App 两种模式应用的优势,开发成本低,拥有 Web 技术跨平台特性.目前大家所知道的基于中间件的移动开发框架都是采 ...
- [目录]hybrid app 开发实战(基于ionic,cordova,angularjs)
序:为什么要写这个系列 第一章:hybrid app开发之技术选型 第二章:ionic,cordova,phonegap关系浅析 第三章:ionic环境搭建之windows篇 第四章:ionic环境搭 ...
随机推荐
- TSQL--查找连续登陆用户
--========================================== 需求:有一个用户登陆日志表,记录用户每次登陆时间,然后想查找用户按天连续登陆的情况,找出每次连续登陆的最早时间 ...
- 虚幻4随笔6 Object和序列化
诚如之前所说,虚幻4主要的一些特性都是由UObject穿针引线在一起的,想把虚幻玩到比较深的程度,UObject是迟早要面对.回避不得的问题,所以,准备在其它主题之前,先把UObject好好弄一下.U ...
- git提交忽略文件或文件夹
在项目根目录下面 添加 .gitignore文件 文件中每一行表示需要忽略的文件的正则表达式. .gitignore文件过滤有两种模式,开放模式和保守模式 1. 开放模式负责设置过滤哪些文件和文件夹 ...
- 面试题-一个列表向右移动k位
def sort(lst,k): length = len(lst) left =lst[:-k] right =lst[-k:] lst.clear() lst.extend(right) lst. ...
- Day 13 迭代器,生成器.
一.迭代器 可以进行for循环的 数据类型 str ,list tuple dict set 文件句柄 什么是可迭代对象? 方法一:dir(被测对象) 如果他含有__iter__,那这个对象就叫做可迭 ...
- IAP远程在线升级
IAP远程在线升级 在上一篇中实现了LWIP网口通讯,那么肯定要加个在线升级功能,这个功能所占用的资源很少,但在物联网中很重要也很实用.在线升级就是像手机一样,先下载好系统,然后点击升级~然后就没然后 ...
- 世界线(bzoj2894)(广义后缀自动机)
由于春希对于第二世代操作的不熟练,所以刚使用完\(invasion process\)便掉落到了世界线之外,错综复杂的平行世界信息涌入到春希的意识中.春希明白了事件的真相. 在一个冬马与雪菜同时存在的 ...
- [Swift实际操作]七、常见概念-(8)日历Calendar和时区TimerZone
本文将为你演示日历的一些属性,以及如何利用日历,查询是否为昨天.今天和明天. 首先引入需要用到的界面工具框架 import UIKit 然后生成一个日历对象,并获得用户当前的日历. var calen ...
- python里面如何拷贝一个对象?deepcopy 和 copy 有什么区别 ?
深拷贝就是说原内容改变但是拷贝的性内容不会改变,copy.copy和deepcopy对一个不可变类型进行拷贝, name结果相同都是浅拷贝指向引用如果是可变的话, 即使元组在最外层, 那么deepco ...
- Python小白学习之路(八)—【变量】【基本数据类型分类】【集合】【集合的功能】
一.变量 变量的作用:记录状态的变化变量的值:描述不同的状态 二.五大基本数据类型的分类 五大基本数据类型(数字 字符串 列表 元祖 字典) 按照可变不可变来进行分类 可变:列表.字典 不可变:字符串 ...