vue.js - 更改 Vue JS 项目的 .vue 文件中的值不起作用

标签 vue.js

在github上找到了一个叫XLSX to JSON的工具,是用vuejs/sheetjs做的。 git repo ,这个工具可以通过一个界面在线使用——但最近它似乎坏了,我无法下载我转换后的 json 文件。

因此我的意图是克隆 repo,并更改一些位来修复它(只是控制台 json 文件而不是 DL)。

我以前没有用过 Vue js。在查看了索引和函数的起源后,我发现整个页面似乎都依赖于这个 app.vue 文件。但是 - 在编辑值并重新加载网页时 - 没有任何变化!

App.vue:

  <template>
  <div class="col">
    <div class="row">
      <div id="dropZone" v-on:drop.prevent="parseXLSX($event)" v-on:dragend="cleanup" ondragenter="event.preventDefault();" ondragover="event.preventDefault(); event.dataTransfer.dropEffect='copy'" class="col drop-box">
        <h2 class="text-center"> Drag your xlsx file here.</h2>
      </div>
    </div>
    <div class="row">
      <input type='file' id='inputFile' v-on:change="parseXLSX($event.target.files)">
      <div v-if="hasDownload">
        <a id="download"> Download Localalization JSON </a>
      </div>
    </div>   
    <div class="row">
      <div class="col json-box">
        <h2 class="text-center"> JSON Output</h2>
        <pre id="output"> </pre>
      </div>
    </div>
    <xlsx-footer></xlsx-footer>
  </div> 
</template>


<script>
import Footer from './components/footer.vue';
export default {
  data() {
    return {
      hasDownload: false,
    }
  },
  methods: {
    parseXLSX(event) {
      const XLSX = window.XLSX;
      let file = this.getFile(event);
      let workBook = null;
      let jsonData = null;

      if(file !== null) {
        const reader = new FileReader();
        const rABS = true;
        reader.onload = (event) => {
          // I WANT TO do edits but nothing seems to work
          //console logs not working etc...
          const data = event.target.result; 
          if(rABS) {
            workBook = XLSX.read(data, {type: 'binary'});
            jsonData = workBook.SheetNames.reduce((initial, name) => {
              const sheet = workBook.Sheets[name];
              initial[name] = XLSX.utils.sheet_to_json(sheet);
              return initial;
            }, {});
            const dataString = JSON.stringify(jsonData, 2, 2);
            document.getElementById('output').innerHTML = dataString.slice(0, 300).concat("...");
            this.setDownload(dataString);

          }
        }
        if(rABS) reader.readAsBinaryString(file);
        else reader.readAsArrayBuffer(file);
      }
    },
    getFile(item) {
      if(item.dataTransfer !== undefined) {
        const dt = item.dataTransfer;
        if(dt.items) {
          if(dt.items[0].kind == 'file') {
           return dt.items[0].getAsFile();
          }
        }
      }
      else {
        return item[0];
      }
    },
    setDownload(json) {
      this.hasDownload = true;
      setTimeout(()=> {
        const el = document.getElementById("download");
        el.href = `data:text/json;charset=utf-8,${encodeURIComponent(json)}`;
        el.download = 'localization.json';
      }, 1000)

    },
    cleanup(event) {
      console.log("Cleaned up Event", event);
    }
  },
  components: {
    'xlsx-footer': Footer,
  }
}
</script>

ma​​in.js:

    'use strict';

var _vue = require('vue');

var _vue2 = _interopRequireDefault(_vue);

var _app = require('./app.vue');

var _app2 = _interopRequireDefault(_app);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var app = new _vue2.default({
  el: "#app",
  render: function render(h) {
    return h(_app2.default);
  }
});

index.html:

    <!DOCTYPE html>
<html>
  <head>
    <title> XLSX-TO-JSON </title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/tether/1.4.0/tether.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.11.3/xlsx.full.min.js"></script>
    <link rel="stylesheet" type="text/css" href="./css/style.css">
  </head>
  <body>
    <h1 class="title text-center"> XLSX-TO-JSON </h1>
    <div id="app" class="container">
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"> </script>
    <script src="bin/bundle.js"></script>
    <!-- <script src="assets/bundle.js"></script> -->
  </body>
</html>

我只想编辑 app.vue 文件中的函数!

任何帮助都会很棒,干杯!

最佳答案

尝试通过在“scripts”括号中添加"prod":"webpack" 来修改package.json 文件。运行 npm run prod 应该在使用提供的 webpack.config.js 修改 .vue 文件后重新创建 bundle.js 文件。 您也可以使用脚本 test 使用 npm run test 来启动 webpack-dev-server 并启用热重载,这对于开发目的来说更方便。

关于vue.js - 更改 Vue JS 项目的 .vue 文件中的值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54063812/

相关文章:

javascript - 如何在加载惰性加载的路由组件时显示 "loading"动画?

javascript - Vue : Accessing Nested Object Component's Values

javascript - 在 vue.js 模板中包含外部脚本

unit-testing - 未找到转换选项中的模块 <rootDir>/node_modules/vue-jest

javascript - 在Vue Mounted函数中访问DOM

php - Laravel 5.7 验证带星号的字段,required_if

webpack - 在 Vue 上使用带有 Webpack 的 plotly.js 3d scatter3d

caching - Laravel+Vue。缓存问题(其实只是保留变量名)

javascript - 如何在 Node.js 服务器上部署 Vue.js 应用程序

javascript - Vue 和 Webpack : Global development and production variables