用vue快速开发app的脚手架工具


Posted in Javascript onJune 11, 2018

前言

多页面应用于结构较于简单的页面,因为简答的页面使用router又过于麻烦.本脚手架出于这样的场景被开发出来.

使用脚手架搭配Hbuilder也同样可以快速使用vue开发安卓和IOS APP.

本文最大特点:

  1. webpack4
  2. 多页面
  3. 跨域Proxy代理
  4. VConsole移动端调试,手机上的开发者工具
  5. es6/es7 babel 转换

项目地址 GitHub

使用手册

MogoH5+ 是一个 vue 多页面 脚手架工具 ,结合 H5+可以快速开发安卓与苹果 APP.

即使不适用 Hbuilder 打包成 APP,本脚手架同样可以作为多页面网页生成的参考项目.

特性

  1. 支持 Npm 生态
  2. 支持 vue 语法,以及 vue 生态,比如 vux,mint,vant
  3. 支持 ES6/ES7 语法
  4. 使用 VConsole 调试
  5. VSCode 友好
  6. 局域网便捷调试
  7. 兼容部分 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 中调试会有诸多问题,比如:

  1. 不能直接打印 数组 , 对象 ,需要转成字符串.
  2. 即使使用 webview调试 ,仍然不能打印出数组,在 mac 上使用也非常不方便.

使用 VConsole ,调试的问题基本就脱离 Hbuilder 了,使用 VConsole 主要优点如下

  1. 可以打印数组,对象
  2. 可以查看请求,cookie,Localstorage
  3. 在System栏目中可以看到页面加载速度
  4. 可以查看元素

基本上就是一个简化的 开发者工具栏 ,对于调试来说非常简便了.

打包

npm run build

运行命令后会有一个 dist 目录,里面的经过压缩的静态文件.

Hbuilder 发行打包

在使用 Hbuilder 制作安装包前,请将 入口文件 修改成 dist/index.html . 然后可以安心的打包了.

兼容 mui.js

对于兼容 mui 部分函数的问题,已经在移植部分函数到Utils中,在未来的更新中会慢慢移植.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
Feb 18 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
Oct 29 Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 Javascript
jQuery实现的右下角广告窗体跟随效果示例
Sep 16 Javascript
JSON与String互转的实现方法(Javascript)
Sep 27 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
微信小程序数据分析之自定义分析的实现
Aug 17 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
Jun 20 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
基于form-data请求格式详解
Oct 29 Javascript
JS运算符优先级与表达式示例详解
Sep 04 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
Jun 11 #Javascript
vue非父子组件通信问题及解决方法
Jun 11 #Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 #Javascript
详解.vue文件解析的实现
Jun 11 #Javascript
vue filters的使用详解
Jun 11 #Javascript
Vue组件全局注册实现警告框的实例详解
Jun 11 #Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 #jQuery
You might like
9个PHP开发常用功能函数小结
2011/07/15 PHP
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
计算机应用与科学个人的自我评价
2013/11/15 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
师范大学生求职信
2014/06/13 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
CentOS MySql8 远程连接实战
2022/04/19 MySQL