Vue CLI:一个基于 Vue.js 进行快速开发的完整系统。TS:TypeScript,一种由微软开发的开源、跨平台的编程语言。它是JavaScript 的超集,最终会被编译为 JavaScript 代码。Kbone:致力于微信小程序和 Web 端同构的解决方案。云开发CloudBase:云原生一体化应用开发平台,支持小程序/小游戏、Web和移动应用开发。使用的工具和库@vue/cli v4.1.1vue-cli-plugin-kbone latestkbone-ui latest
创建项目
关于vue-cli 3.x
的使用请移步至Vue CLI官方文档查看。使用vue-cli 3.x
可视化页面根据自己的需求创建一个ts
空项目即可。因为我们是用ts
开发微信小程序,所以需要安装微信小程序对应的types
miniprogram-api-typings
, 安装好后需要在tsconfig.json
配置文件中的types
节点添加对应的配置,最好是再加一个忽略校验*.d.ts
的配置项,因为引入的types
在编译时也会校验。{"compilerOptions":{..."skipLibCheck":true,"types":[..."miniprogram-api-typings"],...},...}
Kbone
提供了vue-cli 3.x
的插件,可以一键集成到vue-cli 3.x
创建的项目中。
在刚刚创建好的空项目中选择插件
->添加插件
搜索vue-cli-plugin-kbone
点击安装即可。
安装完成后会弹出配置页面:
AppID
填写自己的小程序AppID
项目名
填写自己的项目名Kbone 入口文件名称
填写为main.mp.ts
是否需要输出 app.js、project.config.json 等非页面相关文件
选择不输出 project.config.json
选择 app.wxss 输出配置
选择输出默认标签样式
选择是否自动构建依赖包
根据自己使用的工具选择npm
或yarn
是否需要使用 rem
建议开启其他的配置项默认即可,然后点击完成插件会自动生成Kbone
的入口文件、配置文件、以及三条命令脚本。
入口文件
入口文件就是我们刚才输入的main.mp.ts
,位置在src
目录下,根据自己创建项目时所安装的库进行修改
例如我在创建时使用了router
和vuex
这些需要在入口文件引入的,所以也需要在main.mp.ts
中引入:
importAppfrom'./App.vue' importrouterfrom'./router' importstorefrom'./store' Vue.config.productionTip=false //需要将创建根组件实例的逻辑封装成方法 exportdefaultfunctioncreateApp(){ //在小程序中如果要注入到id为app的dom节点上,需要主动创建 constcontainer=document.createElement('div') container.id='app' document.body.appendChild(container) returnnewVue({ router, store, render:h=>h(App) }).$mount('#app') }importVuefrom'vue'
配置文件
配置文件为miniprogram.config.js
, 位置在项目根目录,其中的内容自行按需修改,对应的配置项可参考Kbone
官方文档。
命令脚本
插件会在package.json
中生成的三条命令脚本,分别是build:mp
、dev:mp
和mp
因为我们后面需要再集成云开发
所以命令需要做一点点修改,将打包目录修改为dist/mp/miniprogram
build:mp
改为:"build:mp":"cross-envMP_ENV=miniprogramvue-cli-servicebuild--modeproduction--dest./dist/mp/miniprogram/common"
mp
改为:
"mp":"cross-envMP_ENV=miniprogramvue-cli-servicebuild--modedevelopment--dest./dist/mp/miniprogram/common--watch"
集成Kbone-UI
期待已久的Kbone-UI
已发布,可以继续使用vue-cli 3.x
的可视化页面安装,也可以使用命令行安装。安装完成后在web
端的入口文件main.ts
和KBone
入口文件main.mp.ts
中引入Kbobe-UI
main.ts
importVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'importstorefrom'./store'importKboneUIfrom'kbone-ui'import'kbone-ui/lib/weui/weui.css'Vue.use(KboneUI)Vue.config.productionTip=falsenewVue({router,store,render:h=>h(App)}).$mount('#app')
main.mp.ts
importAppfrom'./App.vue' importrouterfrom'./router' importstorefrom'./store' importKboneUIfrom'kbone-ui' import'kbone-ui/lib/weui/weui.css' Vue.use(KboneUI) Vue.config.productionTip=false newVue({ router, store, render:h=>h(App) }).$mount('#app')importVuefrom'vue'
完成上面步骤项目大致是可以跑起来了,但是Kbone
是不支持scoped
样式的,所以在项目中用到scoped
样式的地方需要自己再改一下,这里就不细说了。
还有最重要的一点就是我们在集成Kbone
时选择的是不输出 project.config.json
也就意味着打包的时候不会生成project.config.json
文件,原因也是因为云开发
中需要在project.config.json
中配置miniprogramRoot
和cloudfunctionRoot
,所以我们需要手动建一个project.config.json
文件在项目根目录,如果不会建,那就在开发者工具中新建一个云开发
项目,从里面拷一个吧。
project.config.json
文件创建完后,需要再在项目根目录创建一个cloudfunctions
文件夹,用于存放云开发
的代码,关于云开发
的代码都放在这个文件夹下面就可以了,了解更多云开发能力请查看云开发文档
上面的步骤完成后,还有最后一个关键步骤,配置webpack
在打包项目时将云开发
相关的代码也打包进去
在项目根目录创建一个vue.config.js
文件,添加以下代码:
constCopyWebpackPlugin=require('copy-webpack-plugin') module.exports={ configureWebpack:config=>{ if(process.env.MP_ENV==='miniprogram'){ config.plugins.push(newCopyWebpackPlugin([ { from:path.resolve(__dirname,'./cloudfunctions'), to:path.resolve(__dirname,'./dist/mp/cloudfunctions'), toType:'dir' }, { from:path.resolve(__dirname,'./project.config.json'), to:path.resolve(__dirname,'./dist/mp/project.config.json'), toType:'file' } ])) } } }constpath=require('path')
其配置的意思就是如果当前运行的环境变量是miniprogram
那么就将cloudfunctions
文件夹和project.config.json
文件拷贝到小程序的打包目录,到这里就全部集成完了,可以开心的去码代码了~
作者:Stephen,微信开放社区优秀个人贡献者。*点击
欢迎在下方评论区留言或在微信开放社区进入云开发专区与我们交流。
☁更多精彩点击下方图片即可了解△ 如何用 CloudBase Framework 部署 Vue 项目?
△实战丨基于云开发实现的外卖小程序
由于公众号推送规则更改,请多多分享、点赞和“在看”,以及时获取云开发Cloudbase的最新动态。
点击在看让更多人发现精彩