使用electron-vue中使用到的方法

  1. 开启监听端口监测端口是否重复
// index.js
import express from 'express'
import { portIsOccupied } from './constant/portIsOccupied'
// 监听端口
const app = express()
portIsOccupied(5657)
     .then(port => {
         app.listen(port, () => {
             console.log(`start http://localhost:${port}`)
         })
     })

// portIsOccupied.js
import net from 'net'

export const portIsOccupied = port => {
    const server = net.createServer().listen(port)
    return new Promise((resolve, reject) => {
        server.on('listening', () => {
            console.log(`the server is runnint on port ${port}`)
            server.close()
            resolve(port)
        })

        server.on('error', (err) => {
            if (err.code === 'EADDRINUSE') {
                console.log(`this port ${port} is occupied.try another.`)
                resolve(portIsOccupied(port + 1)) //如占用端口号+1
            } else {
                reject(err)
            }
        })
    })
}
  1. 设置允许跨域
const app = express()
    // 设置允许跨域
app.all('*', function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*'); //访问控制允许来源:所有
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); //访问控制允许报头 X-Requested-With: xhr请求
    res.header('Access-Control-Allow-Metheds', 'PUT, POST, GET, DELETE, OPTIONS'); //访问控制允许方法
    res.header('X-Powered-By', 'nodejs'); //自定义头信息,表示服务端用nodejs
    res.header('Content-Type', 'application/json;charset=utf-8');
    next();
});
  1. 读取本地json文件并输出一个json
import fs from 'fs'
import Glob from 'glob'
import path from 'path'
import pify from 'pify' // Promisify a callback-style function
export const readJsonFiles = async app => {
    const glob = pify(Glob);
    let arr = (await glob(`jsonFiles/**/*.{json, js}`, {
        cwd: path.resolve(__dirname, process.cwd() + '/static')
    })),
        jsonDate = [];
    
    arr.forEach(element => {
        let _data = fs.readFileSync(path.resolve(__dirname, process.cwd() + '/static') + `/` + element),
            content = JSON.parse(_data.toString());

        jsonDate.push({
            id: (element + '').split('.')[0],
            content: content
        })
    });
    
    return jsonDate
}

nodejs中常用的路径

    //获取node.exe的绝对路径
    console.log(process.execPath);//D:\nodejs\node.exe

    //存放当前文件(即server.js)文件夹的绝对路径
    console.log(__dirname);//D:\nodeTest\node_path\lib

    //当前文件(即server.js)的绝对路径
    console.log(__filename);//D:\nodeTest\node_path\lib\server.js

    //从所传入的文件路径(相对或绝对)中获取存放传入文件的文件夹的相对或绝对路径 
    //(例如 传入 public/home.html 则返回的是public)
    console.log(path.dirname(__filename));//D:\nodeTest\node_path\lib

    //执行当前脚本(即server.js)的位置 (例如 在根目录下执行 node ./xxx/xxx/a.js 则返回的是根目录地址 )
    console.log(process.cwd());//D:\nodeTest\node_path\lib

    //'a/b/c'和'../src' 组合而成的绝对路径 文件或文件夹都行
    //例如 console.log(path.resolve('a/b/c', '../src'));//D:\nodeTest\node_path\lib\a\b\src
    console.log(path.resolve(__dirname, '../public'));//D:\nodeTest\node_path\public

    //'a/b/c'和'../src'组成的相对路径
    //console.log(path.join('a/b/c', '../src'));//a\b\src
    console.log(path.join(__dirname, '../public'));//D:\nodeTest\node_path\public

    //相当于path.resolve(__dirname, '../public/home.html')或path.join(__dirname, '../public/home.html')
    //但传入的必须是文件路径,而不是文件夹路径,而且当文件不存在时会抛出异常
    console.log(require.resolve('../public/home.html'));//D:\nodeTest\node_path\public\home.html
  1. 文件压缩和文件解压
const path = require("path");
const zipper = require("zip-local"); // https://www.npmjs.com/package/zip-local
// 压缩文件夹
export const gzip = () => {
    zipper.zip(path.resolve(__dirname, process.cwd() + '/static/jsonFiles'), function (error, zipped) {

        if (!error) {
            zipped.compress(); // compress before exporting

            var buff = zipped.memory(); // get the zipped file as a Buffer

            // or save the zipped file to disk
            zipped.save(path.resolve(__dirname, process.cwd() + '/static/jsonFiles.zip'), function (error) {
                if (!error) {
                    console.log("saved successfully !");
                }
            });
        }
    });

}
// 解压文件夹
export const jzip = () => {
    zipper.sync.unzip(path.resolve(__dirname, process.cwd() + '/static/jsonFiles.zip')).save(path.resolve(__dirname, './jsonFiles'));
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271