vue项目入门

发布于:2025-07-27 ⋅ 阅读:(11) ⋅ 点赞:(0)

入门

1. 创建 Vue 项目

首先,确保你已经安装了 Node.jsVue CLI(如前面所提到的)。然后,你可以创建一个新的 Vue 项目:

vue create vue-crud-project

选择 Vue 3 和默认配置(或者根据需要自定义配置)。

2. 推荐的 Vue.js 项目目录结构

以下是一个常见的、适合中小型 Vue.js 项目的目录结构:

vue-crud-project/
    ├── public/                # 存放静态资源
    │   ├── index.html         # 应用的 HTML 入口
    ├── src/                   # 源代码
    │   ├── assets/            # 存放静态资源(如图片、字体等)
    │   ├── components/        # 存放 Vue 组件
    │   ├── views/             # 存放页面视图组件
    │   ├── router/            # 存放路由文件
    │   ├── store/             # Vuex 状态管理(如果需要)
    │   ├── services/          # 存放 API 请求等业务逻辑
    │   ├── App.vue            # 根组件
    │   ├── main.js            # 项目入口文件
    ├── node_modules/          # npm 安装的依赖包
    ├── package.json           # 项目依赖、脚本等配置文件
    ├── vue.config.js          # Vue CLI 配置文件(如果需要)
    └── README.md              # 项目说明文件

推荐2

frontend/
├── public/                      # 静态资源
│   ├── index.html               # 入口 HTML 文件
│   ├── favicon.ico              # 网站图标
│   └── ...
├── src/                         # 核心代码
│   ├── assets/                  # 静态资源 (图片、字体等)
│   │   └── styles/              # 样式文件 (如全局样式、变量等)
│   │       └── variables.scss   # Element UI 主题定制变量
│   ├── components/              # 公共组件
│   │   └── OrderDealTable.vue   # 订单管理表格组件
│   ├── pages/                   # 页面文件
│   │   └── OrderDealPage.vue    # 订单管理主页面
│   ├── router/                  # 路由配置
│   │   └── index.js             # 路由入口文件
│   ├── store/                   # 状态管理 (Vuex)
│   │   └── modules/
│   │       └── orderDeal.js     # 订单管理模块状态
│   ├── utils/                   # 工具函数
│   │   ├── api.js               # Axios 请求封装
│   │   └── enums.js             # 枚举值管理
│   ├── views/                   # 视图
│   │   └── OrderDealView.vue    # 订单管理视图
│   ├── App.vue                  # 根组件
│   ├── main.js                  # 项目入口文件
│   └── ...
├── .env                         # 环境变量配置文件
├── .gitignore                   # Git 忽略文件
├── package.json                 # 项目依赖配置
├── vue.config.js                # Vue CLI 配置
└── README.md                    # 项目说明

3. 详细解释各个目录及文件

public/
  • 存放静态资源,例如 index.html,这个文件在构建时不会被修改。可以在此文件中配置一些公共资源或 <title> 标签等。
src/
  • assets/:用于存放静态资源(如图片、CSS、字体等)。不需要处理过的文件放在这里。
  • components/:用于存放可复用的 Vue 组件。每个 Vue 组件通常包含三个部分:模板(HTML)、脚本(JS)、样式(CSS)。
  • views/:存放每个页面的组件(如 Home.vue、About.vue)。这些组件通常是视图级别的,包含较复杂的结构或逻辑。
  • router/:用于管理 Vue Router 配置。Vue Router 用于处理页面导航。
  • store/:存放 Vuex 相关代码。如果你使用了 Vuex 来管理应用的状态,它的文件会放在这里。
  • services/:用于存放与后端交互的 API 请求、业务逻辑处理等。
package.json

这是项目的核心配置文件,记录了项目的依赖、脚本、版本等信息。

main.js

这是 Vue 项目的入口文件,通常在这里引入 App.vue,并初始化 Vue 实例。

4. 项目组织实践

4.1 创建组件

src/components 目录下,你可以创建一些常用的 Vue 组件。例如,创建一个表格组件 Table.vue 来显示订单交易数据:

**src/components/Table.vue**

<template>
  <table border="1">
    <thead>
      <tr>
        <th>订单</th>
        <th>代码</th>
        <th>买入时间</th>
        <th>买入总金额</th>
        <th>买入成交价格</th>
        <th>卖出时间</th>
        <th>卖出总金额</th>
        <th>卖出成交价格</th>
        <th>持仓时间</th>
        <th>盈亏百分比</th>
        <th>盈亏</th>
        <th>亏损原因</th>
        <th>说明</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(item, index) in records" :key="index">
        <td>{{ item.order }}</td>
        <td>{{ item.code }}</td>
        <td>{{ item.buyTime }}</td>
        <td>{{ item.buyAmount }}</td>
        <td>{{ item.buyPrice }}</td>
        <td>{{ item.sellTime }}</td>
        <td>{{ item.sellAmount }}</td>
        <td>{{ item.sellPrice }}</td>
        <td>{{ item.holdingTime }}</td>
        <td>{{ item.profitPercentage }}%</td>
        <td>{{ item.profit }}</td>
        <td>{{ item.lossReason }}</td>
        <td>{{ item.notes }}</td>
      </tr>
    </tbody>
  </table>
</template>

<script>
  export default {
    name: "Table",
    props: {
      records: Array
    }
  };
</script>

<style scoped>
  /* 样式根据需要自行调整 */
</style>

在上述代码中,Table.vue 是一个用于展示表格数据的组件,它接收一个 records 属性,用于显示订单交易记录。

4.2 路由配置

src/router/index.js 文件中配置 Vue Router,用来管理页面间的导航。

**src/router/index.js**

import Vue from 'vue'
import Router from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    }
  ]
})

src/views/Home.vue 中,你可以使用你创建的 Table 组件来展示数据。

4.3 组织服务层

如果需要与后端进行 API 请求,可以创建一个 src/services/api.js 文件,集中管理所有 API 请求。

**src/services/api.js**

import axios from 'axios';

const api = axios.create({
  baseURL: 'https://api.example.com',  // 替换为你的 API 基础 URL
  timeout: 5000,
});

export const getRecords = () => {
  return api.get('/orders');
};

export const addRecord = (data) => {
  return api.post('/orders', data);
};

export const updateRecord = (id, data) => {
  return api.put(`/orders/${id}`, data);
};

export const deleteRecord = (id) => {
  return api.delete(`/orders/${id}`);
};

5. 在 VS Code 中调试和运行

5.1 启动开发服务器

在项目根目录下,运行以下命令启动开发服务器:

npm run serve

浏览器会自动打开,并且你可以访问 http://localhost:8080 查看你的 Vue 项目。

5.2 使用 VS Code 调试

你可以在 VS Code 中直接调试 Vue.js 项目。VS Code 支持 Chrome 调试,只需要安装 DebuggerforChrome插件 并按照文档进行设置。


总结

  1. VS Code 中开发 Vue.js 项目时,保持清晰的文件夹结构非常重要。推荐使用 src/componentssrc/views 来分离组件和页面,src/services 来管理 API 请求,src/router 来管理页面路由。
  2. 使用 Vue CLI 创建项目并启动开发服务器。
  3. 在开发过程中,可以使用 VS Code 的插件来提高效率,比如 Vetur(Vue.js 语法支持),ESLint(代码质量检查)等。
  4. 定期使用 npm run serve 来启动和查看项目进展。

这样,你就可以快速构建一个具有 CRUD 功能的 Vue.js 项目,并在 VS Code 中高效开发。

element-ui

要使用 Element UI 实现一个简单的 CRUD 页面并展示表格数据,首先,你需要确保 Vue 项目已经引入了 Element UI 库。接下来,我会为你展示如何使用 Element UI 来创建一个包含表格、增删改查功能的页面。

步骤 1: 创建 Vue 项目

如果你还没有创建 Vue 项目,首先使用 Vue CLI 创建一个新的 Vue 项目:

vue create vue-crud-project

然后选择 Vue 3 和默认配置。

步骤 2: 安装 Element UI

进入你的项目目录并安装 Element UI 库:

cd vue-crud-project
npm install element-plus --save
npm install axios --save

步骤 3: 在 main.js 中引入 Element UI

src/main.js 中引入 Element UI 和相关的样式:

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

createApp(App)
  .use(ElementPlus)
  .mount('#app')

步骤 4: 创建表格组件和 CRUD 页面

接下来,我们在 src/components 目录下创建一个表格组件,并实现基本的 增删改查(CRUD)功能。

1. 创建 Table.vue 组件

**src/components/Table.vue**

<script>
import axios from 'axios';

export default {
  name: 'Table',
  data() {
    return {
      records: [], // 用于存储从后端获取的数据
      formData: {
        order: '',
        code: '',
        buyTime: '',
        buyAmount: '',
        buyPrice: '',
        sellTime: '',
        sellAmount: '',
        sellPrice: '',
        profit: ''
      },
      dialogVisible: false,
      isEditMode: false,
      editIndex: null
    };
  },
  mounted() {
    this.fetchRecords(); // 页面加载时获取数据
  },
  methods: {
    // 获取所有记录
    async fetchRecords() {
      try {
        const response = await axios.get('/api/records');
        this.records = response.data;
      } catch (error) {
        console.error('Error fetching records:', error);
      }
    },
    
    // 显示添加对话框
    showAddDialog() {
      this.formData = {
        order: '',
        code: '',
        buyTime: '',
        buyAmount: '',
        buyPrice: '',
        sellTime: '',
        sellAmount: '',
        sellPrice: '',
        profit: ''
      };
      this.isEditMode = false;
      this.dialogVisible = true;
    },

    // 显示编辑对话框
    showEditDialog(row) {
      this.formData = { ...row };
      this.isEditMode = true;
      this.dialogVisible = true;
      this.editIndex = this.records.indexOf(row);
    },

    // 提交表单(添加或编辑)
    async submitForm() {
      if (this.isEditMode) {
        // 编辑操作
        try {
          await axios.put(`/api/records/${this.formData.id}`, this.formData);
          this.records[this.editIndex] = this.formData; // 更新本地数据
        } catch (error) {
          console.error('Error editing record:', error);
        }
      } else {
        // 添加操作
        try {
          const response = await axios.post('/api/records', this.formData);
          this.records.push(response.data); // 将新增记录推入本地数据
        } catch (error) {
          console.error('Error adding record:', error);
        }
      }
      this.dialogVisible = false;
    },

    // 删除记录
    async deleteRecord(row) {
      try {
        await axios.delete(`/api/records/${row.id}`);
        this.records = this.records.filter(record => record !== row);
      } catch (error) {
        console.error('Error deleting record:', error);
      }
    }
  }
};
</script>

代码解释

  • 表格 (**el-table**):用于展示记录,表格中有每一列的操作按钮(编辑和删除)。
  • 操作按钮 (**el-button**):用于触发添加、编辑、删除操作。
  • 添加/编辑对话框 (**el-dialog**):用于输入或编辑表单数据,表单字段是与表格数据一一对应的。
  • **submitForm**** 方法**:判断是进行添加操作还是编辑操作,根据不同的模式(isEditMode)来更新数据。
  • **deleteRecord**** 方法**:删除选中的记录。

步骤 5: 在 App.vue 中使用 Table 组件

<template>
  <div id="app">
    <Table />
  </div>
</template>

<script>
  import Table from './components/Table.vue';

  export default {
    name: 'App',
    components: {
      Table
    }
  };
</script>

<style>
  /* 样式根据需要自行调整 */
</style>

步骤 6: 运行项目

在项目根目录下运行开发服务器:

npm run serve

浏览器会自动打开,并且你可以访问 http://localhost:8080 查看你的 CRUD 页面。

总结

  1. 使用 Element UI 来构建一个表格,并实现增删改查功能。
  2. 使用 **el-table** 显示数据,**el-dialog** 用于弹出添加/编辑表单。
  3. 在表格的每一行提供 编辑删除 按钮,方便进行数据操作。

这个页面是一个简单的增删改查功能的实现,适用于你展示订单交易数据的需求。在实际开发中,你可以根据需求进一步拓展,比如与后端进行数据交互。


网站公告

今日签到

点亮在社区的每一天
去签到