首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpacker,babel,uglifyjs-webpack-plugin -不是转换箭头函数,而是只在Vue文件中

Webpacker,babel,uglifyjs-webpack-plugin -不是转换箭头函数,而是只在Vue文件中
EN

Stack Overflow用户
提问于 2018-12-13 22:38:48
回答 1查看 471关注 0票数 2

运行WebPacker3.5.5(创业板和包)。这主要是可行的,但是在IE11中,应用程序被破坏了,因为箭头函数似乎没有被转换。但是,检查缩小的代码--似乎唯一没有转换箭头函数的地方--在我的vue组件中。

我认为这是因为我的babel类属性插件没有以某种方式应用于我的Vue加载程序,但是我还没有想出一个解决方案。

这是我的.babelrc

代码语言:javascript
复制
{
  "presets": [
    [
      "env",
      {
        "modules": false,
        "targets": {
          "browsers": [
            "> 1%",
            "IE 11"
          ],
          "uglify": true
        },
        "useBuiltIns": true
      }
    ]
  ],
  "plugins": [
    "syntax-dynamic-import",
    "transform-object-rest-spread",
    [
      "transform-class-properties",
      {
        "spec": true
      }
    ]
  ],
  "env": {
    "test": {
      "presets": ["es2015"]
    }
  }
}

这里是我的environment.js文件的全部,它修改了webpacker附带的webpack环境(vue加载器在底部)。

代码语言:javascript
复制
const { environment } = require('@rails/webpacker');

environment.loaders.append('expose', {
    test: require.resolve('jquery'),
    use: [{
        loader: 'expose-loader',
        options: 'jQuery'
    }]
});

const webpack = require('webpack');

// append some global plugins
environment.plugins.append('Provide', new webpack.ProvidePlugin({
    $: 'jquery',
    jQuery: 'jquery',
    axios: 'axios',
    moment: 'moment-timezone',
    _: 'lodash'
}));

// Necesary configuration for vue-loader v15
const VueLoaderPlugin = require('vue-loader/lib/plugin');
environment.plugins.append(
    'VueLoaderPlugin',
    new VueLoaderPlugin()
);
environment.loaders.append('vue', {
    test: /\.vue$/,
    loader: 'vue-loader'
});

module.exports = environment;

编辑获取更多信息:这是我的包“摔跤”的入口点

代码语言:javascript
复制
import 'babel-polyfill';
import 'wrestling';

然后在wrestling.js..。

代码语言:javascript
复制
import './styles/wrestling'

import Rails from 'rails-ujs'
Rails.start();

import wrestlingSetup from './wrestlingSetup'
wrestlingSetup();

WrestlingSetup包含对vue文件的实际引用。我已经减少了文件,以显示文件中的单个vue导入是什么样的。其余的基本上都是一样的。

代码语言:javascript
复制
import Vue from 'vue/dist/vue.esm'

// Redacted a bunch of imports, but they all look like this oen
import WrestlerCreate from './vue/wrestler_create.vue'

export default function() {
    document.addEventListener('DOMContentLoaded', () => {
        axiosSetup();

        const app = new Vue({
            el: '#app',
            components: {
                // Other vue components here that I've removed for simplicity
                WrestlerCreate,
            }
        })
    });
}

下面是Vue组件的一个实际示例

代码语言:javascript
复制
<template>
    <div role="form">
        <!-- other form elements -->
    </div>
</template>

<script>
    export default {
        name: 'wrestler-create',
        props: [

        ],
        // This does not get transformed by babel 
        data() {
            return {
                loading: false,
                error: false,
                errorMessage: "Error, please try again later or contact support.",

                first_name: '',
                last_name: '',
                weight_class: '',
                academic_class: ''
            }
        },
        methods: {
            // removed for simplicity
        }
    }
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 05:42:34

为澄清起见:

请对数据使用函数()。我发现函数()给我的麻烦比箭头函数少。

代码语言:javascript
复制
export default {
  data: function() {
     return {
       message: "Hello something!",
       secondMessage: "Hello world!" 
     };
  }
}

如果确实希望使用箭头函数,可以编写:

代码语言:javascript
复制
export default {
  data: () => {
     return {
       message: "Hello something!",
       secondMessage: "Hello world!" 
     };
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53771083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档