使用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 相关文章推荐
iframe窗口高度自适应的实现方法
Jan 08 Javascript
css+js实现部分区域高亮可编辑遮罩层
Mar 04 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
浅谈JavaScript对象的创建方式
Jun 13 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
Mar 06 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
Apr 10 Javascript
微信小程序页面间跳转传参方式总结
Jun 13 Javascript
node.js通过Sequelize 连接MySQL的方法
Dec 28 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的ASP防火墙
2006/10/09 PHP
杏林同学录(三)
2006/10/09 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
vuejs指令详解
2017/02/07 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
微信小程序数据存储与取值详解
2018/01/30 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
python图像处理入门(一)
2019/04/04 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
大学生个人求职信范文
2013/09/21 职场文书
法律专业自我鉴定
2013/10/03 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
我的求职择业计划书
2014/04/04 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js