返回

Vue 项目 Webpack 打包构建入门与配置详解

前端







## Vue 项目之 Webpack 打包 Vue 代码(4)

「这是我参与 11 月更文挑战的第 23 天,活动详情查看:[2021 最后一次更文挑战](https://juejin.cn/post/7038155167558279198)」

前面说到,我们要把 `template` 选项中的内容、`data` 选项中的内容以及样式代码分别抽离出来,然后分别放在对应的文件中。这里我们用一个计数器的例子来演示一下。

```html
<!-- App.vue -->
<template>
  <div id="app">
    <p>{{ count }}</p>
    <button @click="increment">+</button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        count: 0
      }
    },
    methods: {
      increment() {
        this.count++
      }
    }
  }
</script>

<style>
  #app {
    font-family: Avenir, Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
    margin-top: 60px;
  }
</style>

首先,我们把 template 选项中的内容抽离出来,放到一个单独的 HTML 文件中,比如 App.html

<!-- App.html -->
<div id="app">
  <p>{{ count }}</p>
  <button @click="increment">+</button>
</div>

然后,我们把 data 选项中的内容抽离出来,放到一个单独的 JavaScript 文件中,比如 App.js

// App.js
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  }
}

最后,我们把样式代码抽离出来,放到一个单独的 CSS 文件中,比如 App.css

/* App.css */
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}

现在,我们的 App.vue 文件就只剩下一个空壳了:

<!-- App.vue -->
<template>
  <div id="app">
    <!-- 这里什么都没有了 -->
  </div>
</template>

<script>
  import App from './App.js'
  export default App
</script>

<style>
  @import './App.css';
</style>

通过这种方式,我们就把 Vue 组件的模板、数据和样式代码分离开来了。这样做的好处有很多,比如:

  • 代码的可维护性更高。 当我们把组件的各个部分分离开来之后,代码的可维护性就会更高。比如,当我们需要修改组件的样式时,我们只需要修改 App.css 文件就可以了,而不用去修改 App.vue 文件。
  • 代码的复用性更高。 当我们把组件的各个部分分离开来之后,代码的复用性也会更高。比如,我们可以把 App.js 文件中的数据逻辑复用