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

2019-03-06  本文已影响0人  广告位招租
  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'));
}
上一篇下一篇

猜你喜欢

热点阅读