node.js脚本与js的数据通讯

背景

    最近在写瀑布流视图,要用到不少图片,想拿到本地图片的数据信息,因而乎就写了Node脚本。就有了数据传输的问题。node

解决

  • err: 一、当时最早想到的是importexport,可是目前nodejs还不支持,据说快要支持了。 因此这个行不通。
  • 最后实现方法为经过nodefs这个对象来把数据抛到imgData.json文件中。
  1. 爬虫把数据写入文件(json,js,xml,txt,log......)
  2. js去导入这些文件(import,require,http)

代码

一、拿到本地文件内的图片信息

获取图片信息参考于 nodejs获取本地文件夹下的图片信息json

//获取项目工程里的图片
var fs = require('fs');//引用文件系统模块
var image = require("imageinfo"); //引用imageinfo模块

function readFileList(path, filesList) {
  var files = fs.readdirSync(path);
  files.forEach(function (itm, index) {
    var stat = fs.statSync(path + itm);
    if (stat.isDirectory()) {
      //递归读取文件
      readFileList(path + itm + "/", filesList)
    } else {
      var obj = {};//定义一个对象存放文件的路径和名字
      obj.path = path;//路径
      obj.filename = itm//名字
      filesList.push(obj);
    }
  })
}
var getFiles = {
  //获取文件夹下的全部文件
  getFileList: function (path) {
    var filesList = [];
    readFileList(path, filesList);
    return filesList;
  },
  //获取文件夹下的全部图片
  getImageFiles: function (path) {
    var imageList = [];
    this.getFileList(path).forEach((item) => {
      var ms = image(fs.readFileSync(item.path + item.filename))//获取img对象
      let obj = ms
      obj.name = item.filename//获取文件名
      ms.mimeType && (imageList.push(obj))
    });
    return imageList;
  }
};
//获取文件夹下的全部图片信息
var imglist=getFiles.getImageFiles("../../static/img/life/");
复制代码

二、利用fs.appendFileimglist抛到imgData.json

注意 必定要先把imglist转为字符串抛过去,否则那边拿到的只是[Object]这种。app

//一、清空文件数据
fs.writeFile('../js/imgData.json', '', function(){console.log('清空成功')})
//二、把获得的图片对象抛到imgData.json文件中
fs.appendFile('../js/imgData.json', JSON.stringify(imglist), (err) => {
  if (err) throw err;
  console.log('数据已追加到文件');
});

复制代码

三、取imgData.json

import imgData from '../js/imgData.json'
 console.log(82,imgData)
复制代码
相关文章
相关标签/搜索