Electron-vue脚手架改造vue项目(2018.11.13更新)

2023-11-14

文章中涉及vue项目都是基于vu-cli快速构建,展示的目录结构是vue-cli快速构建之后的目录。Electron-vue也是基于vue-cli的脚手架工具。小伙伴们自己构建的vue项目想要改造成桌面应用,还请移步 Electron将Web页面打包成桌面应用实例 

2018.11.13更新——实操过程中遇到的问题

1. 关于<template lang="html"> (Emitted value instead of an instance of Error)

错误提示:

 Module Error (from ./node_modules/vue-loader/lib/loaders/templateLoader.js):
  (Emitted value instead of an instance of Error)

错误截图:

 错误代码:

<template lang="html">
  <router-view></router-view>
</template>

 问题解析:

这段代码在原先的vue项目中是没有问题的,copy到electron-vue项目之后,不明所以的报错。删掉lang="html"就可以正常运行了。至于原因,猜测vue项目和electron-vue项目中对于.vue文件的编译方式不同。待学习。

2. 遇到开发环境跨域问题,如何转发代理

在vue-cli项目中,处理开发环境的跨域问题,只需在config/index.js文件中配置proxyTable。大概长这样,(省略了不必要的参数),将我们项目中的接口请求转发到目标接口

dev: {
    proxyTable: {
      '/**/*': {
        target: 'http://192.168.1.1:8080/', // 目标接口域名
        changeOrigin: true // 是否跨域
      }
    }
}

在electron-vue项目中,并没有配置转发代理的地方,这就需要我们自己来解决跨域问题啦!

跨域问题出现的本质原因是浏览器的同源策略,注意是浏览器哦。只要绕过浏览器的限制(伪装成同源,欺骗浏览器)就能解决跨域啦,当然前提是服务器端允许跨域请求。

方法一:手动设置headers,以axios为例,将referer和host参数设置为,与后台接口一样的地址

axios.get(url, {
  headers: {
    referer: 'https://c.y.qq.com/', // 目标服务器地址
    host: 'c.y.qq.com' // 目标服务器域名
  },
  params: req.query
}).then((response) => {
  console.log(response)
}).catch((e) => {
  console.log(e)
})

 方法二:http-proxy-middleware中间件

既然vue-cli项目能够通过设置参数解决跨域问题,那我们就来倒推一下:

config/index.js  <--  build/webpack.dev.conf.js  <-  build/dev-server.js

在build/dev-server.js文件中我们可以看到http-proxy-middleware中间件的使用,就是她啦。那么怎么在Electron-vue中使用呢?

找到.electron-vue/dev-runner.js文件,修改如下:

 引入中间件

const httpProxyMiddleware = require('http-proxy-middleware')

 在server.listen(9080)之前加一段代码,如下:

server.use(httpProxyMiddleware({
  target: '目标服务器地址',
  changeOrigin: true
}))
server.listen(9080)

1. 什么是Electron

Electron可以让你使用纯 JavaScript 调用丰富的原生 API 来创造桌面应用。你可以把它看作是专注于桌面应用而不是 web 服务器的,io.js 的一个变体。

这不意味着 Electron 是某个图形用户界面(GUI)库的 JavaScript 版本。 相反,Electron 使用 web 页面作为它的 GUI,所以你能把它看作成一个被 JavaScript 控制的,精简版的 Chromium 浏览器

从开发的角度来看, Electron application 本质上是一个 Node. js 应用程序。应用启动的入口是一个与 Node.js 模块相同的 package.json文件

项目名称:Electron

项目官网:https://electronjs.org/docs

2. Electron核心

electron核心我们可以分成2个部分,主进程渲染进程。主进程连接着操作系统和渲染进程,可以把她看做页面和计算机沟通的桥梁。渲染进程就是我们所熟悉的前端环境了。只是载体改变了,从浏览器变成了window。传统的web环境我们是不能对用户的系统就行操作的。而electron相当于node环境,我们可以在项目里使用所有的node api

简单理解就是:给web项目套上一个node环境的壳

3. 什么是Electron-vue

Electron-vue是一个大神写的基于Vue和Electron的脚手架。

我们直接用Electron-vue这个脚手架来改造原来的vue-cli项目能够方便许多!

项目名称:electron-vue

项目地址:https://github.com/SimulatedGREG/electron-vue

项目文档:https://simulatedgreg.gitbooks.io/electron-vue/content/en/

下面实例解析如何通过electron-vue将一个vue项目改装成桌面应用。

4. 运用Electron-vue脚手架改造vue-cli项目

调整前(通过命令vue init webpack my-project 创建的vue项目)

改造后(通过命令vue init simulatedgreg/electron-vue my-project 创建项目,在用该命令初始化vue项目时,各个参数跟vue-cli初始化项目是一样样的)

调整步骤

将 原项目的src目录下的文件 拷贝到 当前项目src/renderer目录 下(没有看错,直接拷贝,全部拷贝)。调整好之后npm run dev启动,一片红啊

可能存在的问题

1.   原项目中引用的工具包,如element-ui  stylus-loader  stylus在新项目中需安装一下

2.   原项目中在build/webpack.base.conf.js中配置的参数对应的修改到新项目的.electron-vue/webpack.renderer.config.js

build/webpack.base.conf.js文件
electron-vue/webpack.renderer.config.js

3.   原项目中用到了stylus预编译,Electron-vue初始化的项目无法编译stylus,需要在.electron-vue/webpack.renderer.config.js 中做相应配置,让新项目能正常编译stylus,(如果用到了less、sass等其他css预编译语言,需设置对应的配置项)

4. 样式出错,Electron是基于WebKit内核的,对于flex、box-sizing、filter等属性需加上-webkit前缀

5. 可能存在的误区

一开始接到要将web页面包装成桌面应用的需求时,因为项目都是用的vue编写,惯性固化的思维让我认为只有vue项目通过Electron-vue的构建方式,(先安装Electron-vue脚手架,再把原先的Vue项目拷贝过来)才能构建成桌面应用。事实是,将项目打包成桌面应用跟使用什么前端框架没有关系,通过Electron任何项目都能打包成桌面应用(注意不是Electron-vue,Electron-vue是能快速将Vue项目打包成桌面程序的脚手架工具,整合了Vue脚手架和Electron的产物)

下一篇 Electron将Web页面打包成桌面应用实例 

与君共勉:再牛逼的梦想,也抵不住傻逼般的坚持!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Electron-vue脚手架改造vue项目(2018.11.13更新) 的相关文章

随机推荐

  • Oracle导入导出数据库(exp/imp和expdp/impdp的区别)

    Oracle导入导出数据库 exp imp和expdp impdp的区别 目录索引 1 exp和expdp的区别 2 expdp导出数据库流程 一 exp和expdp的区别 1 exp和expdp最明显的区别就是导出速度的不同 expdp导
  • libevent介绍

    libevent介绍 1 事件驱动 高性能 轻量级 专注于网络 2 源代码精炼 易读 3 跨平台 4 支持多种I O多路复用技术 如epoll select poll等 5 支持I O和信号等事件 libevent的安装 登录官方网站 ht
  • ORA-00923: 未找到要求的 FROM 关键字

    ORA 00923 未找到要求的 FROM 关键字 注意 别名不能是数字和使用
  • ps长阴影插件_PS插件Long Shadow Generator 安装步骤

    软件 下载 软件名称 Long Shadow Generator 软件大小 536KB 软件语言 简体中文 系统要求 Win10 Win8 Win7 支持版本 PS CC 2015及以上版本 下载链接 https pan baidu com
  • DSP和RAM的区别

    DSP顾名思义就是数字信号处理 厂家主要是德州仪器 TI 主要用于数字型号处理等对运算速度有特殊要求的场合 诸如音频视频算法 军工等领域 但同时dsp有2000 5000 6000等系列也可满足不场合需要 ARM 是一类内核的称谓 就像51
  • HOOK与注入

    HOOK和注入技术经常被恶意代码使用 利用HOOK和注入技术 恶意代码提高了执行隐蔽性 增加了恶意代码分析难度 在某些情况下还能实现权限提升和内存常驻 HOOK技术 挂钩 HOOK 就是在来往信息间安装 钩子 钩取来往信息 在用户层 常见的
  • Canoe 安装流程

    硬件 VN5620 软件 CANoe V15 0 软件 Vector License Client 6 2 驱动 Vector Driver Setup license 购买硬件时 vector会分配 参考文档 First Steps to
  • 理想方波的频谱

    1 理想方波的频谱 时域到频域 理想方波为频率1G 50 占空比 幅度为1v 上升时间为0 把理想方波通过离散傅里叶变换 DFT 就可以知道各个频率分量的幅度 如下图所示 偶次谐波如2G 4G 6G 8G 的幅度都为零 奇次谐波有如下关系式
  • 概率论--数学期望与方差--协方差(详解)

    目录 数学期望与方差 离散型随机变量的数学期望 注意 连续型随机变量的数学期望 方差 常用随机变量服从的分布 二项分布 正态分布 随机向量与随机变量的独立性 随机向量 随机变量的独立性 协方差 协方差的定义 协方差的意义 协方差矩阵 数学期
  • 软件工程专业学生的自我反思

    迷茫时的反思 我现在是一名大三的学生 有时候还是会处在一种很迷茫的状态 这种状态体现在 自己会不自觉的打开王者荣耀 打开BiliBili刷视频 熬夜看剧 慢慢地陷入一个漩涡 越陷越深 你是否经常对自己的行为感到怀疑 对自己做的事感到后悔 那
  • 关于“由于找不到MSVCP140.dll,无法继续执行代码,重新安装程序可能会解决此问题等”解决方案

    首先说明一下该问题 该问题就是表示你们的操作系统中现在确实一些必要的文件 具体是啥我也不是很清楚 然后 你现在要安装的这个软件正好要调用这些文件的一些函数 就可以简单理解为使用这些文件 需要你去安装一下这些文件 解决方案 首先 你自己去从一
  • unity点乘和叉乘的使用

    本文从http blog csdn net yupu56 article details 53609028转载而来 Unity当中经常会用到向量的运算来计算目标的方位 朝向 角度等相关数据 下面咱们来通过实例学习下Unity当中最常用的点乘
  • 星星之火-38:20M的LTE带宽,为什么是1200个子载波?

    先给个结论 在LTE中 单个小区最大的频谱带宽为20M 每个子载波的间隔为15K 带宽为30K 一共可以分为1200个子载波 那这个数据是怎么来得呢 1 15K子载波间隔的由来 如果子载波的带宽30K 那么按照频分复用FDM的规则 频谱利用
  • 春招,进阿里了....

    个人背景是东北某 985 科班本硕 做的 测试开发 有两个自己写的小项目 下面是一些印象比较深刻的面试题 阿里一面 什么是软件测试 软件测试过程中会面向哪些群体 开发一个软件都要经过哪些阶段 什么是黑盒测试 什么是白盒测试 一个测试工程师应
  • 招聘小程序制作:连接人才与企业

    随着人才市场的竞争日益激烈 招聘小程序成为了企业寻找优秀人才和求职者找到理想工作的重要工具 通过招聘小程序 企业可以发布招聘信息 筛选简历 而求职者可以浏览职位 提交简历等 招聘小程序的好处 精准匹配人才 招聘小程序通过智能推荐算法分析求职
  • 2018最新area.json(智行火车票)

    ids 5876 level 1 level4Useing name 广东省 names 广东省 notvalid pid 0 tid 5876 ids 5876 6131 level 2 level4Useing name 东莞市 nam
  • SpringBoot中搭建thymeleaf网页遇到Cannot resolve MVC View ‘###‘的问题

    原因是配置文件pom xml中thymeleaf版本与springBoot版本有冲突 要引入的thymeleaf依赖是这个
  • 使用Redis存储和使用地理空间数据

    目录 让我们回到地理空间数据 什么是Geohash Redis如何存储地理空间数据 用于处理地理空间数据的命令 通过地理空间数据读取和搜索呢 结论 众所周知 处理地理空间数据非常困难 因为纬度和经度是浮点数 应该非常精确 此外 纬度和经度似
  • 基层技术管理工作思考?

    从动机和方法两方面谈谈我的看法 动机 要做好基层技术管理工作 首先要确保自己有良好的动机 即明白自己为何要走上技术管理岗位 做管理的根本是为了获得权力 但获得权力的动机却存在很大的差别 第一种单纯是为了利己 有相当数量的人往技术管理岗位 挤
  • Electron-vue脚手架改造vue项目(2018.11.13更新)

    文章中涉及vue项目都是基于vu cli快速构建 展示的目录结构是vue cli快速构建之后的目录 Electron vue也是基于vue cli的脚手架工具 小伙伴们自己构建的vue项目想要改造成桌面应用 还请移步 Electron将We