使用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 相关文章推荐
老鱼 浅谈javascript面向对象编程
Mar 04 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
深入理解javaScript中的事件驱动
May 21 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
实现高性能JavaScript之执行与加载
Jan 30 Javascript
JS类的定义与使用方法深入探索
Nov 26 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
实例讲解JavaScript 计时事件
Jul 04 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 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
2006/12/13 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
JS 实现图片直接下载示例代码
2013/07/22 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
python单元测试unittest实例详解
2015/05/11 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
python如何保存文本文件
2020/06/07 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
酒店服务实习自我鉴定
2013/09/22 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
广告词串烧
2014/03/19 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
安全生产协议书
2016/03/22 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
Django 实现jwt认证的示例
2021/04/30 Python