美文网首页
使用electron-vue中使用到的方法

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

作者: 广告位招租 | 来源:发表于2019-03-06 11:35 被阅读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'));
    }
    

    相关文章

      网友评论

          本文标题:使用electron-vue中使用到的方法

          本文链接:https://www.haomeiwen.com/subject/sictpqtx.html