使用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 相关文章推荐
CSS+JS构建的图片查看器
Jul 22 Javascript
jQuery的链式调用浅析
Dec 03 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
js和php如何获取当前url的内容
Sep 22 Javascript
js实现简单的联动菜单效果
Aug 19 Javascript
JS日期加减,日期运算代码
Nov 05 Javascript
Bootstrap每天必学之弹出框(Popover)插件
Apr 25 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
Dec 22 Javascript
详解vue引入子组件方法
Feb 12 Javascript
利用d3.js实现蜂巢图表带动画效果
Sep 03 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP文件操作实例总结
2016/09/27 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
给Function做的OOP扩展
2009/05/07 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
python实现简单多人聊天室
2018/12/11 Python
python zip()函数的使用示例
2020/09/23 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
学前班评语大全
2014/05/04 职场文书
片区教研活动总结
2014/07/02 职场文书
新兵入伍心得体会
2014/09/04 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python