用vue快速开发app的脚手架工具
前言
多页面应用于结构较于简单的页面,因为简答的页面使用router又过于麻烦.本脚手架出于这样的场景被开发出来.
使用脚手架搭配Hbuilder也同样可以快速使用vue开发安卓和IOS APP.
本文最大特点:
- webpack4
- 多页面
- 跨域Proxy代理
- VConsole移动端调试,手机上的开发者工具
- es6/es7 babel 转换
项目地址 GitHub
使用手册
MogoH5+
是一个 vue 多页面脚手架工具,结合 H5+可以快速开发安卓与苹果 APP.
即使不适用 Hbuilder 打包成 APP,本脚手架同样可以作为多页面网页生成的参考项目.
特性
支持 Npm 生态
支持 vue 语法,以及 vue 生态,比如 vux,mint,vant
支持 ES6/ES7 语法
使用 VConsole 调试
VSCode 友好
局域网便捷调试
兼容部分 mui 语法
这些特性其实不是什么新鲜特性,只是单独在 Hbuilder 无法使用.
快速上手
直接下载项目然后根据需求定制打包,最后通过 Hbuilder 云打包即可生成 APP.
本文自带一个案例是使用 VantUI 开发的几个界面,如果你喜欢其他 UI 同样可以替换成其他的 UI.
// 1.安装模块
npm i // or yarn
// 2.调试
npm start // 将manifest.json 的`页面入口` 修改成 http://your_ip:8082/
// 3.打包
npm run build
使用
主要怎么使用 MogoH5+做正式的开发,在开发过程中一定要遵守目录规则,否则会有意想不到的错误.
目录结构
.
├── docs // 文档
├── index.html // 入口模板
├── jsconfig.json //js配置
├── manifest.json //hbuilder 入口文件
├── src
│ ├── components //组件文件夹
│ │ └── List.vue //组件
│ ├── index.js //主页入口文件
│ ├── index.vue // 主页vue文件
│ ├── page // 页面
│ └── utils // 工具
├── unpackage // hbuilder 构建目录
│ └── res
└── webpack.config.js //webpack配置目录
新建页面
假如我们要新建一个名称为list
的页面作为商品列表,我们就要在./src/page/goods
下新建list.js
和list.vue
两个文件.list.js
作为多页面的入口,list.vue
,脚手架自带了几个页面可供参考.
遵循相对路径原则,如果在src
访问这个页面则就是./goods/list.html
!!! 后缀一定是.html
新建组件
组件放入./src/components
目录下,如果组件较多,可自行建立目录.比如 demo 中使用的 Logo 组件可以作为参考.
新建工具库
工具库./src/utils
主要放一些公用函数,比如请求,打开 webview,支付,分享等执行函数. demo 中封装了部分来自 mui 的函数比如自定义事件
,webview
.这些函数可以作为参考.
`common.js` 是每个页面都需要加载的一个 js,里面加载了`fastclick`和`vconsole`.如果全局需要加统计,全局执行的函数,可以放在这个文件里面.
`./src/utils` 做了 `alias`别名,可以 直接这样加载 `import common from "Utils/common"`.
发送请求
请求库
demo 的请求使用的是 axios
,同样你喜欢什么库都可以自己去封装.
常见的请求库有fetch
,request
,SuperAgent
,jquery-ajax
.
跨域
由于npm start
后,调试网页是挂在局域网上,并且作为 Hbuilder 的页面入口
,因此,在请求时会出现跨域
.
在./build.js
中使用本地代理,将下面的https://api.douban.com
修改成自己使用的业务域名即可.
proxy: {
"/api": {
name:"DOUBANAPI", // 自己取名
target: "https://api.douban.com",
pathRewrite: { "^/api": "" },
changeOrigin: true,
secure: false
},
"/baidu_api": {
name:"BAIDUAPI", // 自己取名
target: "https://api.baidu.com",
pathRewrite: { "^/api": "" },
changeOrigin: true,
secure: false
},
...
}
如果有更多业务域名可以继续在proxy
添加.
只有开发的时候才会有跨域问题,打包后的文件网址会被替换成被代理的网址,因此发送请求一定要加上名称DOUBANAPI
request({
url: DOUBANAPI + "/bookList"
});
调试
在 Hbuilder 中调试会有诸多问题,比如:
- 不能直接打印
数组
,对象
,需要转成字符串. - 即使使用
webview调试
,仍然不能打印出数组,在 mac 上使用也非常不方便.
使用VConsole
,调试的问题基本就脱离 Hbuilder 了,使用VConsole
主要优点如下
- 可以打印数组,对象
- 可以查看请求,cookie,Localstorage
- 在
System
栏目中可以看到页面加载速度 - 可以查看元素
基本上就是一个简化的开发者工具栏
,对于调试来说非常简便了.
打包
npm run build
运行命令后会有一个dist
目录,里面的经过压缩的静态文件.
Hbuilder 发行打包
在使用 Hbuilder 制作安装包前,请将入口文件
修改成dist/index.html
. 然后可以安心的打包了.
兼容 mui.js
对于兼容 mui 部分函数的问题,已经在移植部分函数到Utils
中,在未来的更新中会慢慢移植.
用vue快速开发app的脚手架工具的更多相关文章
- 如何优雅的使用vue+vux开发app -03
如何优雅的使用vue+vux开发app -03 还是一个错误的示范,但是离优雅差的不远了... <!DOCTYPE html> <html> <head> < ...
- 如何优雅的使用vue+vux开发app -02
如何优雅的使用vue+vux开发app -02 很明显这又是一个错误的示范,请勿模仿 使用动态组件实现保留状态的路由 <!DOCTYPE html> <html> <he ...
- 如何优雅的使用vue+vux开发app -01
如何优雅的使用vue+vux开发app -01 很明显下面是个错误的示范: <!DOCTYPE html> <html> <head> <title>v ...
- 十九. 想快速开发app,需要找外包吗?
健生干货分享:第19篇 摘要:最近和两位准备开发app的创业者聊天,他们之前没有移动互联网的相关经验,有的是想法和资金.他们在纠结:想快速开发app,需要找外包吗? 最近和两位想开发app的创业者聊天 ...
- Vue+cordova开发App
Vue+cordova开发App https://www.imooc.com/article/70062
- 全面超越Appium,使用Airtest超快速开发App爬虫
想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D.Cocos2 ...
- 【转载】如果快速开发APP&创业
先贴原文所在个人博客: http://uikoo9.com/ 今天看了一些这个人的文章,还是有一定见解的,比如下面这篇 <如何快速开发出一个高质量的APP——创业谈> http://uik ...
- cordova+vue混合式开发App
应要求第一次使用cordova打包了一下vue写的app项目,期间遇到了不少问题,整理一下流程并记录一下常见问题吧. cordova打包项目需要的环境配置啥的就不具体讲啦,百度一下很多教 ...
- 开发一个 Parcel-vue 脚手架工具
前言 像我们熟悉的 vue-cli,create-react-app 等脚手架,只需要输入简单的命令 vue init webpack project,即可快速帮我们生成一个初始项目.在实际工作中,我 ...
随机推荐
- scala中的模式匹配
基本语法 变量 match { case 值1 => 代码 case 值2 => 代码 ... case 值N if (...) => 代码 case _ => 代码 } 常量 ...
- c#调用系统默认软件打开应用
System.Diagnostics.Process.Start(),参数为对应的应用路径 System.Diagnostics.Process.Start(((FileInfo)lv.Selecte ...
- 【bzoj5064】B-number 数位dp
题目描述 B数的定义:能被13整除且本身包含字符串"13"的数. 例如:130和2613是B数,但是143和2639不是B数. 你的任务是计算1到n之间有多少个数是B数. 输入 输 ...
- Python re(正则表达式)模块
python正则表达式 正则表达式是一个特殊的字符序列,它能帮助我们方便的检查一个字符串是否与某种模式匹配.Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式.re模块使Py ...
- 进程间通讯-2(pipe)
通过pipe 管道的方式也可以实现进程间通信. 父进程和子进程之间可以实现相互通信. from multiprocessing import Process, Pipe def f(conn): co ...
- 2018牛客多校第五场 E.room
题意: 一共有n个宿舍,每个宿舍有4个人.给出第一年的人员分布和第二年的人员分布,问至少有多少人需要移动. 题解: 对于第一年的每个宿舍,向今年的每种组合连边.流量为1,费用为(4 - 组合中已在该宿 ...
- Android 内核--Binder架构分析
一.Binder架构 在Android中,Binder用于完成进程间通信(IPC),即把多个进程关联在一起.比如,普通应用程序可以调用音乐播放服务提供的播放.暂停.停止等功能.Binder工作在Lin ...
- POJ1523:SPF——题解
http://poj.org/problem?id=1523 这题明显就是求割点然后求割完之后的强连通分量的个数. 割点都会求,怎么求割完的分量个数呢? 我们可以通过万能的并查集啊!(具体做法看代码吧 ...
- BZOJ1149:[CTSC/APIO2007]风铃——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1149 https://www.luogu.org/problemnew/show/P3621 sb ...
- Linux之根文件系统介绍与分析20160611
说一下LINUX根文件系统的介绍与分析: 1.内核启动应用程序,首先要识别出应用程序,这时就需要文件系统来帮助内核找到对应的应用程序: 2.第一个启动的应用程序就是sbin目录下的init程序,也就是 ...