1、简单介绍下你们公司
某国企下属公司
上班不需要穿制服
我们真的不加班,说 855 就是 5 点可以走人
前端 vue+cordova,后端 java,微服务,所以国企的技术也不是 low b 好吧
我们买了 vmsphere 的整套方案,所以对 docker 这类需求不强
我们有每日、每周的备份,还有异地灾备,所以国企也不是一无是处好吧
唯一问题就是互联网看不起我们的工资
2、介绍下你们项目
内部用办公软件
基于 cordova+vue (界面库是 vux )开发
兼容性 android>=4.4 ios>=9
codepush 推送
图表用的 echarts,之前是 canvasjs,后来我们做了适配,因为 canvasjs 在 ios 下出现了严重的内存溢出
我司在 6 年以前就拿到企业证书了,所以不上 store
3、为什么不选择 rn、flutter 或者源生
android4 那个年代哪里有这些东西
我们人少,养不起那么多源生开发人员
公司也调研过送人去培训 ios 或者 android 开发,最后当然是各种不可行,我们也找外部厂商开发过其他系统 native app,效果也不好
4、你对 cordova 的评价如何
爽
真的是 write once,run everywhere,除了垃圾苹果的刘海 bar 必须做兼容让出来,其余的几乎没怎么适配
cordova 添加插件只需要 cordova plugin add xxx,然后就搞定了
rn 添加插件,那到处都有的改
5、上企业商店的应用需要信任证书,你们怎么解决这个问题的
我们有图文教程
如果不会,联系维护人员他们会上门服务或者电话指导
还有安卓机是大多数,所以碰到阵的要上门的其实并不多
6、你有遇到 native 的坑么
有,升级 ios11.3 的时候,vue 因为浏览器 bug 出了巨大问题,唤醒后所有点击失效,实际上这个锅要给 hammer.js 或者 fastclick,但是对于 android 只需要加头就可以一劳永逸的消除点击延迟,但是 ios 很后的版本才解决了这个问题,我们当时没排查这么细,花了大量时间从 UIWebview 切换到 WKWebview,WKWebview 性能更好,但是当时的插件不完善,而且有跨域要求,连带着兼容性我们还被迫用了微软的官方 codepush 半年,真的是血与泪的故事,后来证明 codepush 的问题,是 osx 瞎 jb 加的屌丝_存储文件导致自建 codepush 服务器和官方校验和不一致的锅(官方的 checksum 不计算屌丝_存储,但是自建的会)
另外一个大坑是 cordova 的 geolocation 直接用了浏览器 API,某一段版本的 chrome 对于非 https 协议(手机 app 都是文件或者 localhost,我哪里给你找 https )直接禁用 geolocation,导致安卓的定位大半失效,逼得我们去抄 react native 的 geolocation 代码
还一个大坑的时候是苹果有时候杀进程,只杀了 wkwebview 没杀主程序,结果从后台唤醒就是白屏,虽然我看代码里有监控 wkwebview 的状态,但是更多的还是看不懂,都是 obj-c 代码
7、你有遇到 wap 的坑么 没有,wap 页面在 cordova 里很和谐,你们说的什么软键盘、底栏布局问题,我们都没遇到,唯一遇到的问题就是 fixed 偶尔失效,导致下面的元素错误的往上移了 用的时候先查 caniuse,该有的 polyfill 加上,css 用 postcss 处理,不要用太新的特性,android4.4 的兼容性就够用了
8、你有在乎 cordova 的性能么
anrdoid4.4+新手机或者 wkwebview 基本解决了性能问题,没法解决的是内存占用,我们的 app 启动后开启图表内存占用直接猛冲 300m,所以进了后台基本上第一个被杀,当然这也是个 feature,我们的更新很多时候需要重新启动,这正好可以加快用户看到新版的速度
9、你认为 cordova 还有什么优势
太灵活了,尤其是热加载,我们除了 codepush 之外还魔改了 webpack 的加载器,使得模块可以根据需要读取服务器的、读取本地的、或者先读取服务器然后下载到本地执行,我们还开放了部分 eval 执行来做动态功能,没办法,小公司带宽太少,有一次我们更新了重要功能,好巧不巧集团发文通知大家我们更新了,结果早会之后并发剧增,更新服务器直接 GG,所以能热更的我们都不会推代码
10、你们有魔改什么 vue 的东西么
我们改了路由部分,做到了滑动切换(可以看到上一个页面)的效果,正常的 vue-router 只有一个页面 active,你是看不到之前的页面,这不符合我们的设计
11、如果让你选择,你还会选 cordova 么
当然,我们之前有大量的定制开发 wap 页面嵌入,如果框架的 webview 不符合要求直接 0 分出局 无论是 flutter 还是 rn,都有很大一块的 native 要求
12、你现在有什么打算
研究 rn,flutter 生态照 rn 比差太多,语法更是人间之屑,虽然企业证书不上 store,但是上不了 store 的 cordova 最终会死去,早晚还是要准备后路的
13、你认为 vue 和 react 比呢
vue 的语法太爽,我们是重渲染轻逻辑,如果用 if 和 for 都没有的 jsx 书写页面部分,稍微复杂一点的代码就没法看了 我们的 react 用在其他系统,没有太多的动态要求,这个纯粹是技术储备,上一代技术负责人选型选了个 backbone,放弃了 angular1,要不我们还能在撑撑,也不需要重构
14、你们用了什么插件
直接说中文
wkwebview
地理信息
照相机、扫码
微信支付(好像比支付宝好申请一点?)
能让安卓直接退出的插件
codepush
修改状态栏颜色的插件
屏蔽手机字体大小的插件
能让 wkwebview 支持编程 focus 的插件
15、你们有什么安全措施么
https 我们用了
一些防破解、暴力猜密码我们也用了
该提取的特征我们也提取了
其余的加壳,代码混淆并没有做太多
我们是内部应用,是生产力工具,大家都是抬头不见低头见的同事,你入侵系统干坏事被发现有什么好处么,你的审批冒充领导通过,大家都不知道?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.