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


Posted in Javascript onNovember 08, 2019

什么是kbone

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

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

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

基本结构

首先,我们来看下一个基本的 kbone 项目的目录结构(这里的 todo 是基于 Vue 的示例, kbone 也有 ReactPreactOmi 等版本,详情可移步 kbone github )。

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

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

入口

不管是 小程序 端还是 Web 端,都需要入口文件。在 src/index 目录下, main.js 为 Web 端用主入口, main.mp.js 则为 小程序 端用主入口。

当然,Web 端会比 小程序 多一个入口页面,即 index.html (位于根目录下)。 使用kbone解决Vue项目同时支持小程序问题

下面两段代码分别是 小程序端 入口与 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)
})

todo.vue

在上面的入口图可以看到,源码目录中,除了入口文件分开之前,页面文件就是共用的了,这里直接使用 Vue 的写法即可,不用做特殊的适应。

配置

写完代码之后,我们要怎么跑项目呢?这时,配置就派上用场啦。

Web 端配置为正常的 Vue 配置,小程序端配置与 Web 端配置的唯一不同就是需要引入 mp-webpack-plugin 插件来将 Vue 组件转化为小程序代码。

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

构建代码

接着,我们需要构建代码,让代码可以运行到各自的运行环境中去。构建完成后,生产代码会位于 dist 目录中。

// 构建 web 端代码
// 目标代码在 dist/web
npm run build

// 构建小程序端代码
// 目标代码在 dist/mp
npm run mp

小程序端 的构建会比 Web 端的构建多一个步骤,就是 npm 构建。

进入 dist/mp 目录,执行 npm install 安装依赖,用开发者工具将 dist/mp 目录作为小程序项目导入之后,点击工具栏下的 构建 npm ,即可预览效果。

效果

最后,我们来看一下 todo 的效果。kbone 初体验,done~

todo 代码可到 kbone/demo13 自提。

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

最后

如果你想了解更多 kbone 相关的使用及详情,可移步 kbone github 。

总结

以上所述是小编给大家介绍的使用kbone解决Vue项目同时支持小程序问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
基于jQuery的前端数据通用验证库
Aug 08 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
javascript常用函数(2)
Nov 05 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
Aug 14 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
基于Fixed定位的框选功能的实现代码
May 13 Javascript
20道JS原理题助你面试一臂之力(必看)
Jul 22 Javascript
Paypal支付不完全指北
Jun 04 Javascript
JavaScript实现页面高亮操作提示和蒙板
Jan 04 Javascript
在VUE中实现文件下载并判断状态的方法
Nov 08 #Javascript
vue中在vuex的actions中请求数据实例
Nov 08 #Javascript
vue 组件内获取actions的response方式
Nov 08 #Javascript
在vue中使用vuex,修改state的值示例
Nov 08 #Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 #Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 #Javascript
Vue实例的对象参数options的几个常用选项详解
Nov 08 #Javascript
You might like
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
js单例模式详解实例
2013/11/21 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
初识Node.js
2014/09/03 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
Vue中计算属性computed的示例解读
2017/07/26 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
django orm模块中的 is_delete用法
2020/05/20 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
应届毕业生简历自我评价
2014/01/31 职场文书
2014离婚协议书范文
2014/09/10 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript