App 內置本地服务器

2023-01-26 14:24:19 +08:00
 wingkwanli888

有个页面是用 webview 远程加载 h5 展示出来的,客户投诉太慢了,大概要 2s 完成全部加载,我上司說想把 h5 打包成离线包本地加载。

因为 h5 是 webpack 构建,不是单纯一个 html 页面,有好几个 js 文件,没办法直接用 wkwebview 本地加载, 这种情况大概要在 app 里边嵌入一个 web server ,搜了下 github 只有这两个,但好长时间有维护了

https://github.com/swisspol/GCDWebServer https://github.com/robbiehanson/CocoaHTTPServer

Caddy 好像可以用 gomobile 编译,有大哥试过把 caddy 打包在 app 里吗, 或者现在开源社区有没其他方案呢

5424 次点击
所在节点    iDev
23 条回复
wobuhuicode
2023-01-27 17:43:57 +08:00
其实你只需要把 JS 放在项目里面就可以了。现在的前端基本都是 JS ,让前端把 CSS 也打包进去 JS 就好了。
然后 native 端拦截请求,把 web 页面请求的 JS 都解析到本地的就好了。
beilo
2023-01-29 12:30:50 +08:00
@okakuyang
webpack 的代码用 http 请求把 js 下载下来运行的
我基本上没听过这种说法。
实在不行就预加载吧。你拿个后台挂个 webview 直接加载对应域名。走缓存。
gargar
2023-02-10 13:05:14 +08:00
没必要开服务器,wkwebview 可以加载本地文件的,单 html 或加上多个 js 、图片都行。
先把东西塞文件夹比如 www ,然后拖进 xcode 你的 project 里,检查 target > build phases > copy bundle resources 确保文件夹也会拷进 bundle 。然后在你的代码里类似这样:
NSBundle *mainBundle = [NSBundle mainBundle];
NSURL *fileURL = [NSURL fileURLWithPath:[mainBundle pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];
[_webView loadFileURL:fileURL allowingReadAccessToURL:fileURL];
swift 同理。
我捣腾了两个菜鸡 app 就是用 webview ,其中一个还套上 WebAssembly 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/910706

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX