使用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 tools 系列 scrollable(2)
Sep 06 Javascript
struts2 jquery 打造无限层次的树
Oct 23 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
May 30 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
纯javascript实现四方向文本无缝滚动效果
Jun 16 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
前端如何实现动画过渡效果
Feb 05 Javascript
JS轻量级函数式编程实现XDM二
Jun 16 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
PHP学习资料汇总与网址
2007/03/16 PHP
PHP 事件机制(2)
2011/03/23 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JavaScript函数使用的基本教程
2015/06/04 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
自荐信范文
2013/12/10 职场文书
中层干部岗位职责
2013/12/18 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
农村葬礼主持词
2014/03/31 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
公益广告标语
2014/06/19 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
教师个人年终总结
2015/02/11 职场文书
解约证明模板
2015/06/19 职场文书
2016年母亲节广告语
2016/01/28 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android