cordova 整合 webpack vue

cordova 是hybrid开发app的一个框架,通过js桥接原生api实现了js调用原生的一些功能;本打算学习下阿里的weex;可是一直打包不了,加上之前也用过cordova,打算使用cordova尝试一下;整合上vue这种开发界面的利器是不是更加爽呢?

1.环境搭建

 > cordova环境搭建

        由于我们使用cordova作为app开发框架,我们得先搭建cordova;cordova的安装可以使用npm yarn等安装;全局安装: npm install -g cordova

由于需要打包app自然需要android sdk 或者 ios sdk (土豪们的mac下xcode是要安装的)

可以参考官网: http://cordova.apache.org/#getstarted

> vue环境搭建

        vue的环境搭建没什么难度吧,直接按照官网做就行

vue-cli的安装: npm install -g vue-cli

2.构建项目

       创建项目由于是将cordova和vue整合,而vue使用webpack调试,发布;因此必须按照先 cordova 后 vue的方式进行;不过你可以尝试下先创建vue项目文件再创建cordova项目,看会报什么错。

> 搭建cordova项目

        按照官网示例cordova create appName com.app.appName appName方式创建一个项目,生成如下结构项目文件:

添加android平台sdk:cordova platform add android

这是一个标准的cordova项目目录,接下来我们将在该目录下通过vue-cli添加vue项目文件到该目录

> 搭建vue项目

      同样安装vue官网示例创建vue项目: vue init webpack appName ; 注意此时会提示已存在该文件夹,是否覆盖,如下图:

我们选择Y继续

好了,我们搭建好了vue的项目,进行appName项目目录,安装包 npm install

测试vue:npm run dev 正常打开http://localhost:8080/即为正常

此时项目结构如下:

3. 整合vue到cordova

如果熟悉cordova的人知道,cordova的html页面目录是存放在上图的www目录下的,而现在我们的vue源码目录再src下,打包后存放在dist目录下,cordova的入口文件www/index.html主要是引入了cordova.js作为桥接,如下代码:

<head>
        <meta http-equiv="Content-Security-Policy" content="default-src ‘self‘ data: gap: https://ssl.gstatic.com ‘unsafe-eval‘; style-src ‘self‘ ‘unsafe-inline‘; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
    </head>
    <body>
        <div class="app">
            <h1>Apache Cordova</h1>
            <div id="deviceready" class="blink">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
        </div>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>

对比上面的代码和vue打包后的index.html文件代码,我们可以发现,cordova引入了Content-Security-Policy来设置比较宽松的资源加载策略和防止xss攻击;我们将其加入到根目录vue的index.html的头部,同时我们将cordova.js也加入到页面底部,最终我们根目录下的页面代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <meta http-equiv="Content-Security-Policy" content="default-src ‘self‘ data: gap: https://ssl.gstatic.com ‘unsafe-eval‘; style-src ‘self‘ ‘unsafe-inline‘; media-src *">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <title>vue-cordova-app</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="text/javascript" src="cordova.js"></script>
    <!-- built files will be auto injected -->
  </body>
</html>

此时,我们只要能将vue打包的目标路径定向到www目录即可完成整合。

接下来就是修改vue的webpack打包,(webpack高手请忽略)

  • 修改 config/index.js 修改 ../dist 为 ../www
  • 修改 assetsSubDirectory 为 ‘./‘
  • 修改 assetsPublicPath 为 ‘‘

上述修改就将webpack打包目标路径改为www,将资源路径由dist/static/js改为了www/js目录、dist/static/css 改为了 www/css目录。

执行命令npm run build 打包试试。

最后再cordova run android试试

好了,总算敲完了...

原文地址:https://www.cnblogs.com/zzsdream/p/10025805.html

时间: 2024-07-31 14:30:47

cordova 整合 webpack vue的相关文章

gulp+webpack+vue

gulp+webpack+vue 章节目录 1.目标 2.实现 2.1合并库文件 2.2组织业务代码 2.3打包开发代码 2.4使用webpack-dev-server和热替换插件HotModuleReplacementPlugin 2.5打包生产环境代码 3.把命令都整合到npm中 4.后续 1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命令打

怎样通过已经使用过webpack+vue+vueRouter+vuecli的配置文件package.json创建一个项目

首先,我们自己得手动创建一个webpack+vue+vueRouter+vuecli工程,执行下面:如:新建一个vue项目,创建一个基于"webpack"的项目,项目名为vuedemo: $ vue init webpack vuedemo 安装完成后进入工程名称再根据原来项目的配置文件初始化 $ cd vuedemo $ npm install 但是由于在新建的时候对eslint的选择中选择了Yes,所以后面根据配置package.json的时候,发现没有eslint-friendl

Webpack系列:在Webpack+Vue中如何将对后端的http请求转到https的后端服务器中?

在上一篇文章(Webpack系列:在Webpack+Vue开发中如何调用tomcat的后端服务器的接口?)我们介绍了如何将对于webpack-dev-server的数据请求转发到后端服务器上,这在大部分情况下就够用了. 然后现在问题又来了,在生产环境下接口一般采用https协议,如果我们要把数据请求转发到生产服务器上怎么办? 首先会想是不是把上一篇博文中提到的proxyTable改成https就可以了,如下:     proxyTable: {                '/appserve

Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用.其实说是多页面应用,实际上在webpack中属于四个app,  如果真是做纯单页面,那应该有二三十个页面吧.所以我这里的多页面应用,是分为四个SPA.比如微信最下面,有四个导航,微信,通讯录,发现,我. 那么这四个导航,就是我的四个SPA,配置多个入口即可. 在这里就不说太多代码了,项目结构将会放

Wabpack系列:在webpack+vue开发环境中使用echarts导致编译文件过大怎么办?

现象,在一个webpack+vue的开发环境中,npm install echarts --save了echarts,然后在vue文件中直接使用 import echarts from 'echarts' 然后编译的时候加上了Uglify选项,发现vendor文件的大小已经达到了800多k,导致首次加载速度比较慢,然后我们这个是webapp,就更慢了. 所以考虑把echarts提取出来,改用cdn版本的echarts,具体操作步骤如下: (0)找到可用的echartscdn资源 在bootcdn

webpack + vue 向本地后端发送http请求跨域问题

一.问题描述 前端: webpack + vue + axios 后端: wamp + php 用webpack访问前端页面是需要一个端口的,后端服务器也是需要一个端口的,端口不同,在本地调试接口就出现问题. 二.解决方法(不使用jsonp) 1)安装   proxy-middleware  插件  npm install proxy-middleware --save-dev 2)将项目目录下 build 文件夹下 dev-sever.js 中的 proxyMiddleware 改名为 htt

Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化

0. 前言 早在 2016 年我就发布过一篇关于在多页面下使用 Webpack + Vue 的配置的文章,当时也是我在做自己一个个人项目时遇到的配置问题,想到别人也可能遇到跟我同样的问题,就把配置的思路分享出来了,传送门在这里. 因为那份配置直到现在还有人在关注,同时最近公司帮助项目升级了 Webpack 4,趁机也把之前的配置也升级了一下,而且博客荒废了这么久,都快 9102 年了,不能连年均一篇博文都不到,所以有了下面的分享. 下面的配置主要是给在多页面下使用 Webpack 的同学在升级

如何搭建一个基于 Egg + Webpack + Vue 的服务端渲染工程项目呢?

如何搭建一个基于 Egg + Webpack + Vue 的服务端渲染工程项目呢? 项目你可以通过 easywebpack-cli 直接初始化即可完成或者clone egg-vue-webpack-boilerplate.下面说明一下从零如何搭建一个Egg + Webpack + Vue 的服务端渲染工程项目. 通过 egg-init 初始化 egg 项目 egg-init egg-vue-ssr // choose Simple egg app 安装 easywebpack-vue 和 egg

[20190614]webpack+vue学习记录

本文记录一些学习webpack+vue相关的知识点,方便以后查阅,添加或修改 1. 初始化vue项目的代码结构 build--项目依赖包配置信息 config--项目配置文件 dev.env.js--开发环境配置文件 index.js--基础配置文件 prod.env.js--线上环境配置文件 mode_module--依赖包文件 src--项目源码 assets--项目图片资源 components--项目小组件 router--项目路由 App.vue--项目根组件文件 main.js--项