Electron+Vue+ElementUI开发环境搭建
Node环境搭建
本文假定你完成了nodejs的环境基础搭建:
镜像配置(暂时只配置node包镜像源,部分包的二进制镜像源后续讨论)、全局以及缓存路径配置,全局路径加入到了环境变量
$ node -v
v12.18.1
$ npm -v
6.14.5
$ yarn -v
1.22.4
$ npm list -g --depth 0
+-- hexo@4.2.1 // 忽略Hexo,本人写博用的
`-- yarn@1.22.4
vue脚手架安装
为了更加便捷的创建一个vue项目,我们安装脚手架@vue/cli和@vue/init(vue-cli已经deprecated了)。之所以要安装@vue/init,是因为@vue/cli是3的版本,创建项目使用命令vue create app-name,且无法暂时无法使用模板,但是下文要用electron-vue模板进行创建,还是需要vue2的init命令来通过指定模板创建项目,为了兼容vue2的init特性,官方提供@vue/init作为桥接方式。
$ npm install -g @vue/cli
$ npm install -g @vue/cli-init
$ npm list -g --depth 0
+-- @vue/cli@4.4.6
+-- @vue/cli-init@4.4.6
+-- hexo@4.2.1
`-- yarn@1.22.4
关于init说明:
vue init [options] <template> <app-name> generate a project from a remote template (legacy API, requires @vue/cli-init)
至此,你可以使用如下的形式,利用vue脚手架结合模板(template)来初始化你的vue项目(app-name)结构
vue init [options] <template> <app-name>
初始化Electron项目结构
在指定的目录下,我们使用如下的命令进行electron-vue的项目初始化:
$ vue init simulatedgreg/electron-vue electron-vue-demo
然而,这个过程很慢,甚至卡住不动。原因是指定模板进行创建时,会拉取github上的仓库进行模板初始化。幸运的是vue提供模板离线初始化的功能。
下载模板源码
https://github.com/SimulatedGREG/electron-vue
下载后解压存放在 用户目录/.vue-templates/ 下(没有就创建,注意复数s),形成如下的结构:
{home目录}/
.vue-templates/
electron-vue-master/(目录名随便,但是在待会儿init指定的时候需要一致)
.github/
template/
....
之后就可以使用离线(offline)模式创建:
vue init --offline electron-vue-master electron-vue-demo # 名称和上述文件夹名称一致即可
之后就是按照向导进行创建工作:
$ vue init --offline electron-vue-master electron-vue-demo
> Use cached template at ~\.vue-templates\electron-vue-master
? Application Name electron-vue-demo(项目名)
? Application Id com.compilemind(Id,这里本人使用了自己的域名)
? Application Version 0.0.1(版本)
? Project description electron vue demo(描述)
? Use Sass / Scss? No(是否使用Sass/Scss编译器)
? Select which Vue plugins to install (Press <space> to select, <a> to toggle all, <i> to invert selection)
axios, vue-el, ectron, vue-router, vuex, vuex-electron(插件包)
? Use linting with ESLint? Yes(启用ESlint)
? Which ESLint config would you like to use? Standard(ESLint配置)
? Set up unit testing with Karma + Mocha? No(测试模块)
? Set up end-to-end testing with Spectron + Mocha? No(测试模块)
? What build tool would you like to use? builder # 这里我们使用electron-builder构建可执行程序
? author w4ngzhen <w4ngzhen@hotmail.com>
vue-cli · Generated "electron-vue-demo".
运行Electron-Vue示例
$ cd electron-vue-demo
$ yarn (or `npm install`)
$ yarn run dev (or `npm run dev`)
在install的过程中,我们会看到如下一段console输出:
> electron@2.0.18 postinstall D:\Projects\electron-vue-demo\node_modules\electron
> node install.js
Downloading electron-v2.0.18-win32-x64.zip
[==========================================> ] 97.0% of 50.7 MB (2.77 MB/s)
可以注意到electron的node包安装完成后,配置了postinstall(安装完成后调用的脚本),该脚本执行其内部install.js脚本后,开始下载electron的二进制的文件。
首先为什么会有这个额外下载的过程呢?在本人看来,electron是基于Chromium内核的跨平台客户端解决方案(本人另一篇文章正好进行了CefSharp的封装工作),既然涉及到跨平台,而不同平台的底层实现必然有所差异,那么electron项目通过自己去实现跨平台,封装底层逻辑,让我们不关心底层的实现,而是专心于前端的开发,封装成果就是上述的electron-v2.0.18-win32-x64.zip内容。这里因为我们调试和构建的时候,就需要运行时,所以electron根据我们的当前的平台,去下载了对应已经完成针对平台编译封装的二进制内容。
为什么要下载的问题搞明白了,接下来我们要看看如何去下载。有些朋友可能会发现,自己在进行electron二进制包下载的时候,速度慢的离谱。为什么这么慢?我会过一两天对下载的脚本一探究竟(时间有限,过两天写)
现阶段我们需要在.npmrc文件中增加一行配置,让electron下载二进制文件的时候从指定的地方下载:
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/
完成后,我们在install会发现有明显的提升。完成node包的install后,我们运行命令
$ npm run dev
启动后会发现客户端能够运行起来(即主进程能够运行),但是渲染进程报错:
Webpack ReferenceError:process is not defined,官方ISSUE已经存在该条:ISSUE
解决方案为:移除src\index.ejs中的该段代码,详细原因可以看ISSUE。
// src\index.ejs
<% if (!process.browser) { %>
<script>
if (process.env.NODE_ENV !== 'development') window.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
</script>
<% } %>
移除后,再次运行可以看到渲染成功的界面。
引入ElementUI
引入ElementUI相关包
npm install element-ui -S
在渲染进程模块的main.js中加入ElementUI组件
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
...
Vue.use(ElementUI)
完成配置以后,我们就可以按照以往的方式进行前端的开发了。
Electron+Vue+ElementUI开发环境搭建的更多相关文章
- windows下vue.js开发环境搭建教程
这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...
- vue的开发环境搭建命令加图解
vue的开发环境的搭建 不管什么软件我们都要去官网下载安装,这是作为专业程序员的安全意识. 1.安装node.js 官方下载的页面:点击这里 大约展示的页面是这样子的!我们演示是windows 64位 ...
- 应用一:Vue之开发环境搭建
简单分享下vue项目的开发环境搭建流程~ 1.安装nodeJS vue的运行是要依赖于node的npm的管理工具来实现,下载地址:https://nodejs.org/en/.安装完成之后以管理员身份 ...
- vue.js开发环境搭建以及创建一个vue实例
Vue.js 是一套构建用户界面的渐进式框架.Vue 只关注视图层, 采用自底向上增量开发的设计.Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. 在使用 vue.js ...
- vue + vue-router+vuex+elementUI开发环境搭建
先在npm中安装vue脚手架, //先安装国内镜像源 npm install -g cnpm --registry=https://registry.npm.taobao.org //安装vue cn ...
- vue.js开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- 【vue基础学习】vue.js开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- vue.js 开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- Vue.js开发环境搭建的介绍
包含了最基础的Vue.js的框架,包含了打包工具和测试工具,开发调试的最基本的服务器,不需要关注细节,只需关注Vuejs对项目的实现 npm在国内的网络使用较慢,所以推荐下载安装淘宝的镜像 1: 2: ...
随机推荐
- 刷题-力扣-1011. 在 D 天内送达包裹的能力
1011. 在 D 天内送达包裹的能力 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/capacity-to-ship-packag ...
- 项目版本管理Git使用详细教程
前言 记得刚开始做项目开发的时候都是一个人完成一个项目,单打独斗的开发,也不知道什么是团队开发,没有这个概念,随着工作后来知道公司里项目都是团队开发,这个时候这么多人怎么开发一个项目呢,难道用u盘拷贝 ...
- MySQL-基础-2
MySQL数据库介绍 • MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. • MySQL的历 ...
- 从零开始实现简单 RPC 框架 6:网络通信之 Netty
网络通信的开发,就涉及到一些开发框架:Java NIO.Netty.Mina 等等. 理论上来说,类似于序列化器,可以为其定义一套统一的接口,让不同类型的框架实现,事实上,Dubbo 就是这么干的. ...
- 快速排序(C++)
快速排序 快速排序是面试中经常问到的排序算法 基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分记录继续进行排序,以达到整个序 ...
- Springboot自带定时任务实现动态配置Cron参数
同学们,我今天分享一下SpringBoot动态配置Cron参数.场景是这样子的:后台管理界面对定时任务进行管理,可动态修改执行时间,然后保存入库,每次任务执行前从库里查询时间,以达到动态修改Cron参 ...
- Redis实现主从复制以及sentinel的配置
redis 是一个高性能的 key-value 数据库. redis 的出现,很大程度补偿了 memcached 这类 keyvalue 存储的不足,在部分场合可以对关系数据库起到很 好的补充作用.它 ...
- 数据库CPU 100%处理记录
问题描述 2020年7月13日一大早收到告警,测试环境数据库CPU告警. 登录aws查看监控如下图 问题分析 出现这种cpu 100%的问题,都是因为sql性能问题导致的, 主要表现于 cpu 消 ...
- 20210719 noip20
考场 后两题是原题,教练说不用写了(ycx 不讲武德) T1 先手模了 \(n\le5\) 的情况,尝试找规律失败.那就只能 DP 了,最终没搞出来. 记忆化搜索打了 \(n\le20\) 的表,交了 ...
- 通过JDK动态代理实现 Spring AOP
1.新建一个目标类 接口:public interface IUserService //切面编程 public void addUser(); public void updateUser( ); ...