使用单文件组件的方式来开发 Vue 组件

本文是一篇使用“单文件组件”方式来开发 vue 组件的入门教程,尽量避免使用无关技术。另外,本文也不是 webpack、babel 等技术的教程,不会介绍相关语法,而只是简单地分享一下开发的流程。
本项目不涉及 Vue CLI,只会创建一个很简单的组件,并用一个很简单的 HTML 文件把组件显示出来。

单文件组件速览

单文件组件是将组件的结构、逻辑和样式组织到同一个 *.vue 文件之中,下面先看一下单文件是长什么样子:

<!-- 模板 -->
<template>
  <div class="example">{{ msg }}</div>
</template>

<!-- 逻辑 -->
<script>
export default {
  data() {
    return {
      msg: "Hello world!"
    };
  }
};
</script>

<!-- 样式 -->
<style>
.example {
  color: red;
}
</style>

初始化项目

创建目录和文件

# 创建项目根目录
mkdir vue-sfcs
cd vue-sfcs

# 初始化项目
npm init -y

# 创建相关目录和源文件
mkdir src\components
touch src\components\hello.vue
touch src\index.html
touch src\index.js
  • hello.vue 是一个能输出 “Hello world” 的单文件 Vue 组件。
  • 后续操作会把 hello.vue 打包到 dist\bundle.js 中。
  • index.html 将会消费 hello 组件。
  • index.js 是入口文件,相当于前端代码的运行起点。

编写源文件

编写单文件组件

单文件组件的源码已在上面给出了,写入 src\components\hello.vue 即可。

编写首页 HTML 文件

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Vue SFCs</title>
</head>
<body>
  <div id="app"></div>
  <script src="../dist/bundle.js"></script>
</body>
</html>
  • dist/bundle.js 将会是打包后的产物。
  • 由于项目是经过打包的,所以不能引用 src/index.js,而是要引用打包后的文件。

编写首页 js 文件

import Vue from 'vue';                        // 导入 Vue
import hello from './components/hello.vue';   // 导入组件

new Vue({
  el: "#app",
  template: '<hello/>',
  components: {     // 注册组件
    hello
  }
});

安装 Vue

从上面的首页 js 文件中可以看出,项目需要导入 vue,下面通过 npm 进行安装:

npm i --save vue

Babel

Babel 用于语法转译。

安装 Babel

npm install --save @babel/core @babel/preset-env

参考网址:
https://babel.docschina.org/setup
https://webpack.docschina.org/loaders/babel-loader/
https://babeljs.io/docs/en/usage

配置 Babel

要使用 Babel,需要对 Babel 进行配置,即编写 babel.config.js 文件。在项目根目录下添加该文件,内容如下:

module.exports = function (api) {
  api.cache(true);

  const presets = ["@babel/preset-env"];
  const plugins = [];

  return {
    presets,
    plugins
  };
}
  • 上面的配置实现了对 ES6+ 语法的转译。

webpack

webpack 用于打包,也就是将项目中涉及的所有文件中的所有代码集中到一个文件中。通常需要指定一个入口文件,例如本项目的入口文件就是 src/index.js,在这个文件中导入了 vue 和 components/hello.vue 组件,而这些文件可能又导入了其他的一些文件,反正涉及的文件会很多,但经过 babel 的打包后,最终会得到一个出口文件(dist/bundle.js),其中包含了所有的运行逻辑。

安装 webpack

npm i --save webpack webpack-cli

参考网址: https://webpack.docschina.org/guides/installation/#预先准备

安装 Loader

webpack 支持在打包过程中对被处理的文件进行插件化处理,比如对 *.vue / *.css 等类型的文件进行定制化处理。webpack 只负责打包,打包过程中的文件处理,比如 ES6 转 ES5、*.vue 转换为浏览器能理解的 JS 代码等工作,是由各种各样的 Loader 来完成的。

npm i --save babel-loader
npm i --save vue-loader vue-template-compiler
npm i --save css-loader

参考网址: https://babel.docschina.org/setup#installation
参考网址: https://vue-loader.vuejs.org/zh/guide/#手动设置

配置 webpack

在项目根目录下添加一个 webpack.config.js 文件,用于对 webpack 进行配置,内容如下:

const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  mode: 'development',
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
    }
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
      {
        test: /\.js$/,
        loader: 'babel-loader'
      },
      {
        test: /\.css$/,
        use: [
          'vue-style-loader',
          'css-loader'
        ]
      }
    ]
  },
  plugins: [
    new VueLoaderPlugin()
  ]
}

执行 webpack

因为 webpack 采用的本地安装,要运行 webpack 需要借助 npx 命令。

npx webpack --watch

现在,webpack 就会自动进行打包了,当对源文件进行修改时,也会自动打包到 dist/ 中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要进行 Vue 文件组件开发,你需要按照以下步骤进行操作: 1. 安装 Vue CLI:首先,你需要装 Vue CLI,它一个用于快速搭建 Vue.js 项目的工具。你可以在命令行中运行以下命令进行安装: ``` npm install -g @vue/cli ``` 2. 创建新项目:使用 Vue CLI 创建一个新的 Vue 项目,你可以在命令行中运行以下命令: ``` vue create my-project ``` 这将引导你选择一些配置选项,如包管理器、特性预设等。 3. 创建文件组件:在 Vue 项目中,每个组件通常被封装在一个独的文件中,这就是所谓的文件组件。在你的项目目录中,创建一个以 `.vue` 为扩展名的文件,比如 `MyComponent.vue`。 4. 编写文件组件代码:在新创建的 `.vue` 文件中,你可以通过以下方式编写组件的代码: ```vue <template> <!-- 组件的模板部分 --> </template> <script> // 组件的逻辑部分 </script> <style> /* 组件的样式部分 */ </style> ``` 在 `<template>` 标签中编写组件的模板部分,使用 Vue 的模板语法来定义组件的结构。在 `<script>` 标签中编写组件的逻辑部分,比如定义组件的数据、方法等。在 `<style>` 标签中编写组件的样式部分。 5. 在其他组件或页面中使用组件:在其他组件或页面中,你可以通过引入和注册文件组件方式使用它。比如,在一个父组件中引入和使用 `MyComponent` 组件: ```vue <template> <div> <my-component></my-component> </div> </template> <script> import MyComponent from './path/to/MyComponent.vue'; export default { components: { MyComponent } } </script> ``` 通过 `import` 语句引入 `MyComponent` 组件,并在 `components` 属性中注册该组件,然后就可以在模板中使用它了。 这就是进行 Vue 文件组件开发的基本步骤。你可以根据自己的需求,编写更复杂的文件组件,并在项目中灵活地使用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值