本篇内容主要讲解“小程序web服务怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“小程序web服务怎么实现”吧!小程序 web 服务实现我在 wept 的开发中使用 koa 提供 web 服务,以及 et-improve 提供模板渲染。***步: 准备页面模板我们需要三个页面,一个做为控制层 index.html,一个做为 service 层service.html,还有一个做为 view 层的 view.htmlindex.html:service.html:view.html:第二步: 实现 http 服务用 koa 实现的代码逻辑非常简单:server.jsrouter.js第三步:实现控制层功能实现完上面两步,就可以访问 view 页面了,但是你会发现它只能渲染,并不会有任何功能,因为 view 层功能依赖于控制层进行的通讯, 如果控制层收不到消息,它不会响应任何事件。控制层是整个实现过程中最复杂的一块,因为官方工具的代码与 nwjs 以及 react 等第三方组件耦合过高,所以无法拿来直接使用。 你可以在 wept 项目的 src 目录下找到控制层逻辑的所有代码,总体上控制层要负责以下几个功能:实现 service 层,view 层以及控制层之间的通讯逻辑依据路由指令动态创建 view (wept 使用 iframe 实现)根据当前页面动态渲染 header 和 tabbar实现原生 API 调用,返回结果给 service 层wept 里面 iframe 之间的通讯是通过 message.js 模块实现的,控制页面(index.html)代码如下:具体实现逻辑可以查看 src/command.js src/service.jssrc/sdk/*.js。对于 view/service 页面只需把原来 bridge.js 的window.postMessage 改为 window.top.postMessage 即可。view 层的控制逻辑由 src/view.js 以及 src/viewManage.js 实现,viewManage 实现了 navigateTo, redirectTo 以及 navigateBack 来响应 service 层通过名为 publish 的 command 传来的对应页面路由事件。header.js 和 tabbar.js 包含了基于 react 实现的 header 和 tabbar 模块(原计划是使用 vue,但是没找到与原生 js 模块通讯的 API)sdk 目录下包含了 storage,录音,罗盘模块,其它比较简单一些的原生底层调用我直接写在 command.js 里面了。以上就是实现运行小程序所需 webserver 的全部逻辑了,其实现并不复杂,主要困难在与理解微信这一整套通讯方式。实现小程序实时更新第一步: 监视文件变化并通知前端wept 使用了 chokidar 模块监视文件变化,变化后使用 WebSocket 告知所有客户端进行更新操作。 具体实现位于 lib/watcher.js 和 lib/socket.js, 发送内容是 json 格式的字符串。前端控制层收到 WebSocket 消息后再通过 postMessage 接口转发消息给 view/service 层:view/service 层监听 reload 事件:第二步: 前端响应不同文件变化前端需要对 4 种(wxml wxss jso免费云主机域名n javascript)不同类型文件进行 4 种不同的热更新处理,其中 wxss 和 json 相对简单。wxss 文件变化后前端控制层通知(postMessage 接口)对应页面(如果是 app.wxss 则是所有 view 页面)进行刷新,view 层收到消息后只需要更改对应 css 文件的时间戳就可以了,代码如下:json 文件变化首先需要判断,如果是 app.json 我们无法热更新,所以目前做法是刷新页面,对于页面的 json, 我们只需要在控制层上对 header 设置相应状态就可以了 (渲染工作由 react 帮我们处理):wxml 使用 VirtualDom API 提供的 diff apply 进行处理。首先需要一个接口获取新的 generateFunc 函数(用于生成 VirtualDom), 添加 koa 的 router:有了接口就可以请求接口,然后执行返回函数进行 diff apply:javascript 更新逻辑相对复杂一些, 首先依然是一个接口来获取新的 javascript 代码:然后我们在 window 对象上加入 Reload 函数执行具体的更换逻辑:以上代码需要添加到 t.pageHolder 函数后才可运行***在 view 层初始化后把 Page 函数切换到 Reload 函数(当然你也可以在请求返回 javascript 前把 Page 重命名为 Reload) 。到此,相信大家对“小程序web服务怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章主要讲解了“Python时间序列数据操作的常用方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python时间序列数据操作的常用方法有哪些”免费云主机域名吧! 时间序列数据是一种在一段时间内收集…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。