小兔鲜儿项目模块代码

主页面

读取本地缓存

 <script>
        // 如果本地存储有数据,则显示用户信息
        let obj = JSON.parse(localStorage.getItem('data'));
        // 否则 显示 请跳转到注册页面
        var top_nav = document.querySelector(".xtx_navs");
        if (obj){
            top_nav.firstElementChild.firstElementChild.href = "javascript:";
            top_nav.firstElementChild.firstElementChild.innerHTML = obj.username;
        }
    </script>

登录页面

登录功能

   <script>
        // 需求:
        // 1. 登录按钮点击的时候,需要先判断
        // 如果没有勾选同意,则提示要勾选
        // 如果勾选协议,则记住用户名和密码
        // 登录成功则跳转到首页
        // 注意,登录按钮需要先阻止默认行为

        // 获取元素
        // input 表单元素
        let username = document.querySelector('[name=username]');
        let password = document.querySelector('[name=password]');
        // 复选框
        let remember = document.querySelector('.remember');
        let dl = document.querySelector('.dl');

        // 添加监听事件
        dl.addEventListener('click', function(e) {
            // 不需要提交 阻止默认行为 只需完成跳转功能即可!
            e.preventDefault();

            // 条件判断  如果没有勾选协议 弹出警示框 return false
            if (!remember.checked) {
                alert('请勾选协议!');
                return false;
                // return alert('请勾选协议!');
            }

            let obj = {
                username: username.value,
                password: password.value
            }

            // console.log(obj);

            // 模拟本地存储 将 obj 转化为 字符串
            // JavaScript 存储对象:https://www.runoob.com/jsref/obj-storage.html

            localStorage.setItem('data', JSON.stringify(obj));
            // 实现跳转
            location.href = 'index.html';

        })

        // 记录用户信息 转化为 JSON 对象
        // JS 本地存储:https://www.cnblogs.com/yingqing/p/7868085.html


        // 2. 打开页面时候,如果本地存储有数据,则自动记录显示用户名和密码,并勾选复选框
        let obj = JSON.parse(localStorage.getItem('data'));
        if (obj) {
            username.value = obj.username;
            password.value = obj.password;

            // 如果有数据 则默认勾选
            remember.checked = true;
        }
        
    </script>

注册页面

注册页面模块代码

小兔鲜儿电商项目是一个基于 Vue 3 的前端实战项目,涵盖了多个核心功能模块的实现。以下是对项目代码结构和功能的详细说明,并结合引用内容提供相关信息。 ### 项目结构概述 小兔鲜儿电商项目代码通常按照 Vue 3 的标准项目结构组织,包括以下几个主要部分: 1. **组件**:如 `HomeCategory`、`GoodsItem` 等,用于展示商品分类和商品列表[^2]。 2. **Pinia 状态管理**:通过 Pinia 实现全局状态管理,例如 `useCategoryStore` 用于存储商品分类数据[^3]。 3. **API 请求**:使用异步方法获取后端数据,例如 `getSubCategoryAPI` 用于加载商品子分类数据[^2]。 4. **事件处理**:通过 Vue 3 的组合式 API (`script setup`) 实现交互逻辑,例如按钮点击事件 `addCount`[^4]。 以下是项目中几个关键文件的代码示例: --- ### 文件:`HomeProduct.vue` 该文件展示了商品分类页面的基本结构和功能。 ```vue <script setup> import { ref } from 'vue' import { getSubCategoryAPI } from '@/api/home.js' // 商品列表数据 const goodsList = ref([]) const reqData = ref({ page: 1, pageSize: 10 }) // 是否禁用加载更多 const disabled = ref(false) // 加载更多商品 const load = async () => { reqData.value.page += 1 const res = await getSubCategoryAPI(reqData.value) goodsList.value = [...goodsList.value, ...res.result.items] if (res.result.items.length === 0) { disabled.value = true } } </script> <template> <div class="home-product"> <div class="body" v-infinite-scroll="load" infinite-scroll-disabled="disabled"> <!-- 商品列表 --> <GoodsItem v-for="good in goodsList" :key="good.id" :good="good" /> </div> </div> </template> <style scoped> .home-product { padding: 20px; } </style> ``` --- ### 文件:`LayoutHeader.vue` 该文件实现了顶部导航栏的功能,包含商品分类和搜索框。 ```vue <script setup> import { useCategoryStore } from '@/stores/category.js' // 使用 Pinia 状态管理 const categoryStore = useCategoryStore() </script> <template> <header class="app-header"> <div class="container"> <h1 class="logo"> <RouterLink to="/">小兔鲜</RouterLink> </h1> <ul class="app-header-nav"> <li class="home" v-for="item in categoryStore.categoryList" :key="item.id"> <RouterLink to="/">{{ item.name }}</RouterLink> </li> </ul> <div class="search"> <i class="iconfont icon-search"></i> <input type="text" placeholder="搜一搜" /> </div> </div> </header> </template> <style scoped> .app-header { background-color: #fff; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } </style> ``` --- ### 文件:`Counter.vue` 该文件展示了 Vue 3 中组合式 API 的基本用法。 ```vue <script setup> import { ref } from 'vue' const count = ref(0) const addCount = () => count.value++ </script> <template> <button @click="addCount"> {{ count }} </button> </template> <style scoped> button { padding: 10px 20px; font-size: 16px; cursor: pointer; } </style> ``` --- ### 如何获取完整源码? 由于小兔鲜儿电商项目为教学用途开发,其完整源码通常可以通过以下方式获取: 1. **官方课程资源**:如果该项目来源于某个在线课程,可以查看课程提供的配套资源下载链接[^1]。 2. **GitHub 仓库**:许多类似的 Vue 3 实战项目会开源到 GitHub,可以通过搜索关键词(如“Vue3 小兔鲜儿”)找到相关仓库。 3. **联系作者**:如果是私人项目,可以尝试联系开发者或课程讲师获取源码。 --- ### 注意事项 在实际开发中,需要确保项目依赖正确安装,并配置好环境变量(如 API 地址)。此外,建议参考官方文档学习 Vue 3 和 Pinia 的最新用法。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值