vue+element-plus完美实现跨境电商商城网站

目录

一、项目介绍

二、项目截图

1.项目结构图

2.首页

3.中英文样式切换

4.金钱类型切换

5.商品详情

6.购物车

7.登录

​编辑

8.注册

9.个人中心

三、源码实现

1.项目依赖package.json

2.项目启动

3.购物车页面

四、总结


一、项目介绍

本项目在线预览:点击访问

本项目模仿跨境电商商城实现,跨境电商一般设计上与传统电商网站是不太一样的,样式上会更加向外;

技术要点:vue3、 路由router、pinia、element-plus、vuex、axios、vite等

二、项目截图

1.项目结构图

开发软件是webstorm,当然vscode、hbuilder等都可以,看自己习惯就行

2.首页

分为顶部+中间具体页面+底部,组件思想重复利用实现

3.中英文样式切换

4.金钱类型切换

5.商品详情

图片动态切换

6.购物车

动态改变数量

7.登录

8.注册

9.个人中心

三、源码实现

项目以组件(顶部、底部)+主布局页面配合路由构思实现,可以通过组件思维重复利用共同的局部页面,简单且美观,也更加利于后期功能页面拓展和维护、修改等。

1.项目依赖package.json

javascript 复制代码
{
  "name": "vue3-project",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
    "format": "prettier --write src/",
    "prepare": "husky install",
    "lint-staged": "lint-staged"
  },
  "dependencies": {
    "@element-plus/icons-vue": "^2.3.0",
    "@vant/area-data": "^1.5.1",
    "@vueup/vue-quill": "^1.2.0",
    "axios": "^1.4.0",
    "element-china-area-data": "^6.1.0",
    "element-plus": "^2.3.7",
    "express-jwt": "^8.4.1",
    "jsonwebtoken": "^9.0.2",
    "pinia": "^2.1.3",
    "vant": "^4.9.0",
    "vite-plugin-style-import": "^2.0.0",
    "vue": "^3.4.0",
    "vue-router": "^4.2.2",
    "vuex": "^4.1.0"
  },
  "devDependencies": {
    "@rushstack/eslint-patch": "^1.2.0",
    "@vitejs/plugin-vue": "^4.2.3",
    "@vue/eslint-config-prettier": "^7.1.0",
    "eslint": "^8.39.0",
    "eslint-plugin-vue": "^9.11.0",
    "husky": "^8.0.0",
    "lint-staged": "^13.2.3",
    "pinia-plugin-persistedstate": "^3.1.0",
    "prettier": "^2.8.8",
    "sass": "^1.63.6",
    "unplugin-auto-import": "^0.16.6",
    "unplugin-vue-components": "^0.25.1",
    "vite": "^4.3.9"
  },
  "lint-staged": {
    "*.{js,ts,vue}": [
      "eslint --fix"
    ]
  }
}

2.项目启动

依次成功执行以下两个命令:

  1. npm install
  2. npm run dev

3.购物车页面

html 复制代码
<template>
    <div class="aiz-main-wrapper d-flex flex-column">

        <section class="pt-5 mb-4">
            <div class="container">
                <div class="row">
                    <div class="col-xl-8 mx-auto">
                        <div class="row aiz-steps arrow-divider">
                            <div class="col active">
                                <div class="text-center text-primary">
                                    <i class="la-3x mb-2 las la-shopping-cart"></i>
                                    <h3 class="fs-14 fw-600 d-none d-lg-block">1.我的购物车</h3>
                                </div>
                            </div>
                            <div class="col">
                                <div class="text-center">
                                    <i class="la-3x mb-2 opacity-50 las la-map"></i>
                                    <h3 class="fs-14 fw-600 d-none d-lg-block opacity-50">2.发货信息</h3>
                                </div>
                            </div>
                            <div class="col">
                                <div class="text-center">
                                    <i class="la-3x mb-2 opacity-50 las la-truck"></i>
                                    <h3 class="fs-14 fw-600 d-none d-lg-block opacity-50">3.交货信息</h3>
                                </div>
                            </div>
                            <div class="col">
                                <div class="text-center">
                                    <i class="la-3x mb-2 opacity-50 las la-credit-card"></i>
                                    <h3 class="fs-14 fw-600 d-none d-lg-block opacity-50">4.付款</h3>
                                </div>
                            </div>
                            <div class="col">
                                <div class="text-center">
                                    <i class="la-3x mb-2 opacity-50 las la-check-circle"></i>
                                    <h3 class="fs-14 fw-600 d-none d-lg-block opacity-50">5.确认</h3>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <section class="mb-4" id="cart-summary">
            <div class="container">
                <div class="row">
                    <div class="col-xxl-8 col-xl-10 mx-auto">
                        <div class="shadow-sm bg-white p-3 p-lg-4 rounded text-left">
                            <div class="mb-4">
                                <div class="row gutters-5 d-none d-lg-flex border-bottom mb-3 pb-3">
                                    <div class="col-md-5 fw-600">产品</div>
                                    <div class="col fw-600">价格</div>
                                    <div class="col fw-600">税收</div>
                                    <div class="col fw-600">数量</div>
                                    <div class="col fw-600">总计</div>
                                    <div class="col-auto fw-600">移除</div>
                                </div>
                                <ul class="list-group list-group-flush">
                                    <li class="list-group-item px-0 px-lg-3">
                                        <div class="row gutters-5">
                                            <div class="col-lg-5 d-flex" @click="toPath('/productDetail')">
                                                <span class="mr-2 ml-0">
                                                    <img src="http://kuajingshop.cpolar.top/public/uploads/all/FX3JDXrJ3l1KANjg2E93Uup52q8CMrYKdr3p18Y0.jpg" class="img-fit size-60px rounded" alt="HUAWEI 华为 MatePad Refresh - 10.4 英寸 2K FullView 平板电脑 - Kirin 810,4 GB RAM,64 GB ROM,7250 mAh,四角扬声器,EMUI 10.1(基于 Android 10.0),Wi-Fi,灰色">
                                                </span>
                                                <span class="fs-14 opacity-60">HUAWEI 华为 MatePad Refresh - 10.4 英寸 2K FullView 平板电脑 - Kirin 810,4 GB RAM,64 GB ROM,7250 mAh,四角扬声器,EMUI 10.1(基于 Android 10.0),Wi-Fi,灰色</span>
                                            </div>

                                            <div class="col-lg col-4 order-1 order-lg-0 my-3 my-lg-0">
                                                <span class="opacity-60 fs-12 d-block d-lg-none">价格</span>
                                                <span class="fw-600 fs-16">$165.00</span>
                                            </div>
                                            <div class="col-lg col-4 order-2 order-lg-0 my-3 my-lg-0">
                                                <span class="opacity-60 fs-12 d-block d-lg-none">税收</span>
                                                <span class="fw-600 fs-16">$0.00</span>
                                            </div>

                                            <div class="col-lg col-6 order-4 order-lg-0">
                                                <div class="row no-gutters align-items-center aiz-plus-minus mr-2 ml-0">
                                                    <button class="btn col-auto btn-icon btn-sm btn-circle btn-light" type="button" :disabled="num<=1?'':disabled" @click="sub()">
                                                        <i class="las la-minus"></i>
                                                    </button >
                                                    <input type="number" class="col border-0 text-center flex-grow-1 fs-16 input-number" v-model="num" min="1" max="1000">
                                                    <button class="btn col-auto btn-icon btn-sm btn-circle btn-light" type="button" @click="add()">
                                                        <i class="las la-plus"></i>
                                                    </button>
                                                </div>
                                            </div>
                                            <div class="col-lg col-4 order-3 order-lg-0 my-3 my-lg-0">
                                                <span class="opacity-60 fs-12 d-block d-lg-none">总计</span>
                                                <span class="fw-600 fs-16 text-primary">$165.00</span>
                                            </div>
                                            <div class="col-lg-auto col-6 order-5 order-lg-0 text-right">
                                                    <el-popconfirm
                                                            width="220"
                                                            confirm-button-text="确定"
                                                            cancel-button-text="取消"
                                                            :icon="InfoFilled"
                                                            icon-color="#626AEF"
                                                            title="确定删除?"
                                                    >
                                                        <template #reference>
                                                            <a href="javascript:void(0)" class="btn btn-icon btn-sm btn-soft-primary btn-circle">
                                                                <i class="las la-trash"></i>
                                                            </a>
                                                        </template>
                                                    </el-popconfirm>
                                            </div>
                                        </div>
                                    </li>
                                </ul>
                            </div>

                            <div class="px-3 py-2 mb-4 border-top d-flex justify-content-between">
                                <span class="opacity-60 fs-15">小计</span>
                                <span class="fw-600 fs-17">$165.00</span>
                            </div>
                            <div class="row align-items-center">
                                <div class="col-md-6 text-center text-md-left order-1 order-md-0">
                                    <a class="btn btn-link" @click="toPath('/')">
                                        <i class="las la-arrow-left"></i>
                                        返回商店
                                    </a>
                                </div>
                                <div class="col-md-6 text-center text-md-right">
                                    <button class="btn btn-primary fw-600">继续发货</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>
    </div>
</template>

<script>
    export default {
        name: "index",
        data() {
            return {
                num: 1
            };
        },
        mounted() {
        },
        methods: {
            toPath(path) {
                this.$router.push({path: path});
            },
            //数量加
            add(){
                this.num++;
            },
            //数量减
            sub(){
                if(this.num > 1){
                    this.num--;
                }
            }
        }
    }
</script>

<style>
    .aiz-main-wrapper {
        min-height: auto !important;
    }
</style>

四、总结

项目页面完整,后续可能将不断升级。

关注作者,及时了解更多好项目!

更多优质项目请看作者主页!

获取源码或如需帮助,可通过博客后面名片+作者即可!

相关推荐
GIS程序媛—椰子11 分钟前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
DogEgg_00117 分钟前
前端八股文(一)HTML 持续更新中。。。
前端·html
ZL不懂前端20 分钟前
Content Security Policy (CSP)
前端·javascript·面试
乐闻x24 分钟前
ESLint 使用教程(一):从零配置 ESLint
javascript·eslint
木舟100924 分钟前
ffmpeg重复回听音频流,时长叠加问题
前端
王大锤439135 分钟前
golang通用后台管理系统07(后台与若依前端对接)
开发语言·前端·golang
我血条子呢1 小时前
[Vue]防止路由重复跳转
前端·javascript·vue.js
黎金安1 小时前
前端第二次作业
前端·css·css3
啦啦右一1 小时前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习