使用kbone解决Vue项目同时支持小程序问题

2020-06-13 06:04:01易采站长站整理

什么是kbone

微信小程序开发过程中,许多开发者会遇到 小程序 与 Web 端一起的需求,由于 小程序 与 Web 端的运行环境不同,开发者往往需要维护两套类似的代码,这对开发者来说比较耗费力气,并且会出现不同步的情况。

为了解决上述问题,微信小程序推出了同构解决方案

kbone
来解决此问题。

那么,

kbone
要怎么使用呢?这里我们将通过一个
todo
的例子来跟大家讲解。

基本结构

首先,我们来看下一个基本的 kbone 项目的目录结构(这里的

todo
是基于
Vue
的示例,
kbone
也有
React
Preact
Omi
等版本,详情可移步 kbone github )。

因为 kbone 是为了解决 小程序 与 Web 端的问题,所以每个目录下的配置都会有两份(小程序 与 Web 端各一份)

入口

不管是 小程序 端还是 Web 端,都需要入口文件。在

src/index
目录下,
main.js
为 Web 端用主入口,
main.mp.js
则为 小程序 端用主入口。

当然,Web 端会比 小程序 多一个入口页面,即

index.html
(位于根目录下)。

下面两段代码分别是 小程序端 入口与 Web 端入口的代码,可以看到 小程序端的入口代码封装在

createApp
函数里面(这里固定即可),内部会比 Web 端多一个创建
app
节点的操作,其他的基本就是一致的。


// 小程序端入口
import Vue from 'vue'
import todo from './todo.vue'

export default function createApp() {
// 创建app节点用于绑定
const container = document.createElement('div')
container.id = 'app'
document.body.appendChild(container)

return new Vue({
el: '#app',
render: h => h(todo)
})
}
// web端入口
import Vue from 'vue'
import todo from './todo.vue'

new Vue({
el: '#app',
render: h => h(todo)
})