开个新坑玩下,如果新项目不赶的话应该会每周持续更新,断更就当我没说,(≧▽≦)/
目前技术栈:electron、vue、elementui、koa
主题:未定(金融类、图书类)
首先是环境构建
npm install -g vue-clivue init simulatedgreg/electron-vue my-projectcd my-projectnpm installnpm i element-ui -Snpm run dev
npm install koa-static koa-static-cache koa-router --save
项目目录
vue代码放在renderer文件夹,koa代码会放在main文件夹
然后是前端router构建
import Vue from 'vue'import Router from 'vue-router'const originalPush = Router.prototype.pushRouter.prototype.push = function push (location) { return originalPush.call(this, location).catch(err => err)}Vue.use(Router)const indexRouter = { path: '/', name: 'index', component: require('@/components/index').default}const backUpRouter = { path: '*', redirect: '/'}const routes = [ indexRouter, backUpRouter]const router = new Router({ mode: 'history', base: process.env.VUE_APP_publicPath, routes: routes, scrollBehavior (to, from, savedPosition) { return { x: 0, y: 0 } }})router.onError((error) => { const pattern = /Loading chunk (\d)+ failed/g const isChunkLoadFailed = error.message.match(pattern) if (isChunkLoadFailed) { location.reload() }})export default router
koa中台代码:
function createWindow () { const Koa = require('koa') const app = new Koa() const path = require('path') const staticCache = require("koa-static-cache"); const serve = require("koa-static") const router = require("koa-router") let child_router = require('./router/index.js') app.use(async (ctx, next)=> { ctx.set('Access-Control-Allow-Origin', '*'); ctx.set('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild'); ctx.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); if (ctx.method == 'OPTIONS') { ctx.body = 200; } else { await next(); } }); app.use(staticCache(path.join(__dirname, "public"), { maxAge: 365 * 24 * 60 * 60 //Add these files to caches for a year })) app.use(serve(path.join(__dirname, "public"))) router.use('/', child_router); app.use(router.routes()).use(router.allowedMethods()); app.listen(2999); mainWindow = new BrowserWindow({ height: 563, useContentSize: true, width: 1000 }) mainWindow.loadURL(winURL) mainWindow.on('closed', () => { mainWindow = null })}
持续更新中。。