将文件内容读入vue组件内的数组

Posted

技术标签:

【中文标题】将文件内容读入vue组件内的数组【英文标题】:Read contents of file into array inside vue component 【发布时间】:2019-09-24 12:49:21 【问题描述】:

在我的media.txt 文件中,我有:

"https://www.dropbox.com/s/******/687.jpg?dl=0",
"https://www.dropbox.com/s/******/0688.jpg?dl=0

我有以下 Vue 轮播组件:

<template>
  <section>
    <v-card
        class="mx-auto"
        color="#26c6da"
        dark
        max-
      >

      <v-carousel>
        <v-carousel-item v-for="(item,i) in items" :key="i" :src="item.src"></v-carousel-item>
      </v-carousel>

    </v-card>
  </section>
</template>

<script>
var cache = ;
// const images = require.context('../static/', false, /\.png$|\.jpg/);
// const images = require.context('../static/', false, /\.png$|\.jpg|\.mp4/); // WORKING
const images = require.context('../static/media.txt', false, /\.png$|\.jpg|\.mp4/);
var imagesArray = Array.from(images.keys());
// const images = ["./52lv.PNG", "./Capture1.PNG", "./maps.PNG"]
console.log(images.keys());
console.log('images');
console.log(images);
var constructed = [];
function constructItems(fileNames, constructed) 
  fileNames.forEach(fileName => 
    constructed.push(
      'src': fileName.substr(1)
    )
  );
  return constructed;

console.log('items ');
console.log(imagesArray);
// At build-time cache will be populated with all required modules. 
var res = constructItems(imagesArray, constructed);
console.log(res);
export default 
  data: function() 
    return 
      items: res
    ;
  
;
</script>

我想将media.txt 文件中的图像读取到一个数组中,然后用这些填充轮播src。我一直在尝试使用 Webpack 的 require.context 函数,但我收到了 module not found 错误。

我怎样才能让它工作?

【问题讨论】:

【参考方案1】:

你可能应该安装https://github.com/webpack-contrib/raw-loader#getting-started(一个用于 webpack 读取 txt 文件的加载器),在你的 vue.config.js 中配置它,你应该能够像这样导入: import txt from 'raw-loader!./file 。文本文件';而是使用 require。

【讨论】:

【参考方案2】:

您似乎正在尝试将字符串数组 (JSON) 导入到变量中。该字符串数组应由方括号分隔,如下所示:

[
  "foo",
  "bar"
]

require.context(dirPath, useSubDirs, filenameRegex) 不是在此处使用的适当 API,因为该方法从指定目录导入多个文件。例如,下面的代码告诉 Webpack 从名为 ../static/media.txt 的目录(可能实际上是一个文件)中加载 *.png*.jpg*.mp4 文件。

require.context('../static/media.txt', false, /\.png$|\.jpg|\.mp4/) // DON'T DO THIS

相反,您可以简单地使用require('path/to/file.json') 将指定文件导入为 JSON 对象/数组。例如,要导入src/assets/media.json(包含顶部提到的数组),语法为:

// e.g., in src/components/Foo.vue
const media = require('../assets/media.json')
console.log(media) // => [ "foo", "bar" ]

demo

【讨论】:

以上是关于将文件内容读入vue组件内的数组的主要内容,如果未能解决你的问题,请参考以下文章

VB6.0中如何实现逐行读入文本文件?

使用buffered流结合byte数组,读入文件中的内容,包括中文字符

无法将制表符分隔的文件读入 numpy 二维数组

Windows C++ API:如何将整个二进制文件读入缓冲区?

二维数组转稀疏数组,写入文件后再读取文件,将内容转回二维数组

java如何按空格读入文件内容