【前端】Vue和Vux开发WebApp日志一、整合vue+cordova和webpack+gulp
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux.html
项目github地址:https://github.com/shamoyuu/vue-vux-iconan
首先新建一个cordova项目,然后添加安卓环境
cordova create iconan meleong.duapp.com iconan
cd iconan
cordova platform add android
在这个目录下有一个www文件夹,cordova打包的时候会把它打包进去,打开app后,会自动以file://协议载入index.html文件
所以我们在这里写我们自己的html页面,然后cordova负责打包成app。
然后跟cordova项目同级,新建一个vue项目
vue init webpack iconan-web
然后一路回车,把几个代码检查和单元测试选N
然后执行npm run build,就可以把文件都打包到dist文件夹下。
我们打开dist文件夹,发现有个index.html文件,双击打开就可以预览我们的vue-app了。
然后我们把dist文件夹下的所有文件都复制到上面cordova项目的www文件夹下,
然后连上手机,执行cordova run android,就可以把我们的vue项目打包的app安装到手机上调试了。
当然我们不能每次都这么麻烦,这简直要了命了,我们把build的路径调整到cordova的www文件夹。
打开config/index.js
修改build下的配置
index: path.resolve(__dirname, '../../iconan/www/index.html'),
assetsRoot: path.resolve(__dirname, '../../iconan/www'),
assetsSubDirectory: '',
assetsPublicPath: '',
这样我们先在iconan-web项目里build,然后在iconan项目里run android就可以了。
不过还是有点麻烦,我们继续用gulp继续整合这一步。
首先添加gulp
npm install gulp --save-dev
然后新建一个gulpfile.js文件,我们先写一个打包任务(这个文件里的大部分代码都是直接照搬build.js文件里的)。
'use strict'
require('./build/check-versions')();
const gulp = require('gulp');
process.env.NODE_ENV = 'production';
const ora = require('ora');
const rm = require('rimraf');
const path = require('path');
const chalk = require('chalk');
const webpack = require('webpack');
const config = require(process.cwd() + '/config');
const webpackConfig = require(process.cwd() + '/build/webpack.prod.conf');
const minimist = require('minimist');
const gutil = require('gulp-util');
const src = process.cwd() + '/src';
const assets = process.cwd() + '/dist';
gulp.task('pack', function () {
console.info(config.build);
let spinner = ora('正在打包,请稍后...');
spinner.start();
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err;
webpack(webpackConfig, (err, stats) => {
spinner.stop();
if (err) throw err;
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n');
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'));
process.exit(1);
}
console.log(chalk.cyan(' Build complete.\n'));
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
//↑↑↑上面的基本上都是build.js文件里的内容
})
})
});
我们希望在gulp执行完webpack的任务后,继续执行cordova的打包任务,所以我们先在iconan-web项目里新建一个cordova文件夹,然后把iconan文件夹里所有内容复制进来(记得清空www文件夹)。
之所以这么做,是因为我们的项目会打包成混合应用或者webapp,所以我们在需要打包成混合应用的时候,就把cordova文件夹里的内容复制过来,然后build后再打包成apk。
我们当然也可以把cordova的插件单独取出来,在需要打包成app的时候,重新添加平台,然后把插件添加进去,这样项目体积会更小,但是在很多时候非常不方便,所以我放弃了。
我们先添加2个gulp的任务
//清空dist文件夹
gulp.task('clean', function () {
return gulp
.src('dist')
.pipe(clean());
});
//复制cordova文件夹到dist文件夹
gulp.task('copy', ['clean'], function () {
return gulp
.src('cordova/**/*')
.pipe(gulp.dest('dist'));
});
然后我们执行gulp copy,会发现cordova文件夹里的内容都复制到dist文件夹了
然后我们修改上面提到的cofig/index.js文件,把它build的路径指向我们新的www文件夹
index: path.resolve(__dirname, '../dist/www/index.html'),
assetsRoot: path.resolve(__dirname, '../dist//www'),
然后给pack任务添加前置任务copy,执行gulp pack后,就会先清空dist文件夹,然后复制cordova文件夹里的内容到dist,然后由webpack来build项目,build到dist文件夹下的www文件夹下。
然后我们安装shelljs,用它来执行cd dist和cordova run android等命令
npm install shelljs --save-dev
然后在gulp的pack任务最底下,添加下面的代码,来自动打包调试app
//↑↑↑上面的都是build.js文件里的内容
console.info('开始打包APP,请稍后...');
shelljs.cd('./dist');
shelljs.exec('cordova run android');
shelljs.cd(__dirname);
done();
然后执行gulp pack任务,就会自动build项目,打包成app。
至此,我们的整合已经完成,项目目录如下

当然,这里面还有很多问题,后面的几章会一个一个解决。
【前端】Vue和Vux开发WebApp日志一、整合vue+cordova和webpack+gulp的更多相关文章
- 【前端】Vue和Vux开发WebApp日志四、增加命令行参数
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_4.html 项目github地址:https://github.com/shamoyuu/vue- ...
- 【前端】Vue和Vux开发WebApp日志三、完善gulp任务
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_3.html 项目github地址:https://github.com/shamoyuu/vue- ...
- 【前端】Vue和Vux开发WebApp日志二、优化gulp任务
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_2.html 项目github地址:https://github.com/shamoyuu/vue- ...
- 前端项目优化 -Web 开发常用优化方案、Vue & React 项目优化
github github-myBlob 从输入URL到页面加载完成的整个过程 首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来 接下来是 TCP 握手 ...
- vue 开发系列(一) vue 开发环境搭建
概要 目前前端开发技术越来越像后台开发了,有一站式的解决方案. 1.JS包的依赖管理像MAVEN. 2.JS代码编译打包. 3.组件式的开发. vue 是一个前端的一站式的前端解决方案,从项目的初始化 ...
- 如何优雅的使用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 ...
- vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发
vue + vuex + koa2开发环境搭建及示例开发 https://segmentfault.com/a/1190000012918518 vue前端+java后端 https://blog.c ...
随机推荐
- python爬虫之小说爬取
废话不多说,直接进入正题. 今天我要爬取的网站是起点中文网,内容是一部小说. 首先是引入库 from urllib.request import urlopen from bs4 import Bea ...
- oracle pl/sql如何定义变量
目的:如何在pl/sql中定义基本类型,引用类型,记录型变量? 以下plsql程序用的scott用户的dept,emp表. 定义基本类型的变量 set serveroutput on ; --使用基本 ...
- Cypher查询语言--Neo4j-WHERE(三)
目录 Where Boolean 操作类型 节点属性上的过滤 正则表达式 转义正则表达式 不分大小些正则表达式 关系类型上的过滤 属性存在性 如果缺失属性默认为true 如果缺失属性默认为false ...
- Mysql基础安装,初视篇
mysql 跟所有的数据库软件一样分为 服务端和客户端: 下载:在官网里面选择 download 社区版本,mysql,社区版本 安装: win环境下: 第一步:解压文件出来 第二步:在bin文件下 ...
- 配置apache使之支持浏览器端的缓存
当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求. 一 ...
- require和require_once的区别
require 的使用方法如 require("./inc.php"); .通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它 ...
- 理解JavaScript中的作用域
什么是变量,什么是作用域? 变量:简单来说就是在特定时间内保存特定值的一个名字而已,由于不存在定义某个变量必须要保存某种数据类型值的规则,所以变量的值及其数据类型可以在脚本生命周期内任意改变,变量可 ...
- BZOJ 2733: [HNOI2012]永无乡 [splay启发式合并]
2733: [HNOI2012]永无乡 题意:加边,询问一个连通块中k小值 终于写了一下splay启发式合并 本题直接splay上一个节点对应图上一个点就可以了 并查集维护连通性 合并的时候,把siz ...
- BZOJ 3620: 似乎在梦中见过的样子 [KMP 暴力]
和我签订契约,成为魔法少女吧 题意:求所有形似于A+B+A 的子串的数量 , 且len(A)>=k,len(B)>=1 位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一 ...
- HTML标签的命名/CSS标准化命名大全
在一个内容较多的HTML页面中,需要设计许多不同的框架,再为这些不同的框架及内容进行分类,给予相应的名称,从而使得网页结构更加清晰,也为工作提供了方便.许多新手朋友在设计一个HTML文件时,可能只会依 ...