当前位置:首页 > 文章列表 > 文章 > 前端 > 反思我的旅程:构建初学者房地产列表全栈应用程序

反思我的旅程:构建初学者房地产列表全栈应用程序

来源:dev.to 2024-09-14 22:06:55 0浏览 收藏

哈喽!今天心血来潮给大家带来了《反思我的旅程:构建初学者房地产列表全栈应用程序》,想必大家应该对文章都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习文章,千万别错过这篇文章~希望能帮助到你!

反思我的旅程:构建初学者房地产列表全栈应用程序

当我第一次开始学习 python 时,我不知道这段旅程会带我走向何方。我记得深入研究 python 教程,努力学习循环、函数和面向对象编程等基本概念。快进到今天,我使用 flask 后端和 react 前端的组合构建了一个全栈房地产列表应用程序。这个项目不仅是一个挑战,也是一次令人难以置信的学习经历,帮助我成长为一名开发人员。让我带您完成整个旅程,并重点介绍我在构建此应用程序时学到的一些关键方面。

开始:学习 python 基础知识

当我开始使用 python 时,我知道它是一种多功能且适合初学者的语言。然而,像大多数初学者一样,我也面临着一些挑战。理解语法、学习如何调试以及熟悉 python 的库都是我必须克服的障碍。我花了无数的时间在一些小项目上,比如一个简单的计算器和一个待办事项列表 cli 应用程序,以掌握基础知识。

当我开始开发我的房地产列表应用程序时,这些基础练习得到了回报。 python 基础知识对于编写干净、高效的代码至关重要,尤其是在为应用程序创建模型和处理数据时。

我首先使用 flask(一个轻量级 web 框架)构建后端。 flask 使用起来很简单,但也需要对 python 基础知识有很好的了解。我的初始步骤包括设置虚拟环境和构建项目,确保安装了所有必要的库,例如用于 orm(对象关系映射)的 sqlalchemy,它简化了数据库交互。

使用 flask 构建后端

房地产列表应用程序的后端旨在处理用户身份验证、房产列表、应用程序和愿望清单。这要求我创建多个模型,包括用户、属性和应用程序,每个模型都有自己的一组字段和关系。

这是我如何使用 sqlalchemy 定义用户模型的片段:

from flask_sqlalchemy import sqlalchemy

db = sqlalchemy()

class user(db.model):
    __tablename__ = 'users'

    id = db.column(db.integer, primary_key=true)
    username = db.column(db.string(50), unique=true, nullable=false)
    email = db.column(db.string(100), unique=true, nullable=false)
    password = db.column(db.string(100), nullable=false)
    # relationships
    properties = db.relationship('property', backref='owner', lazy=true)

此代码片段显示了用户模型的创建,其中包含用户名、电子邮件和密码等字段。我还与 property 模型建立了一对多关系,这对于将用户(代理)链接到他们列出的属性至关重要。

使用 react 应对前端挑战

虽然由于我对 python 的熟悉,后端大部分都很简单,但前端却提出了一个全新的挑战。我选择 react 是因为它基于组件的架构和充满活力的生态系统。然而,学习 react 意味着深入研究 javascript——一种我不太熟悉的语言。

我首先为应用程序的不同部分创建可重用的组件,例如属性列表页面、用户注册页面和应用程序管理页面。例如,propertyagent 组件允许代理创建、编辑和删除房产列表:

import react, { usestate, useeffect } from 'react';
import axios from 'axios';
import './propertyagent.css';

const propertiesagent = () => {
    const [properties, setproperties] = usestate([]);
    const [newproperty, setnewproperty] = usestate({ title: '', description: '', price: '', location: '', property_type: 'apartment' });
    const [error, seterror] = usestate('');
    const [success, setsuccess] = usestate('');

    useeffect(() => {
        fetchproperties();
    }, []);

    const fetchproperties = async () => {
        try {
            const response = await axios.get('/properties', {
                headers: { authorization: `bearer ${localstorage.getitem('token')}` }
            });
            setproperties(response.data || []);
        } catch (error) {
            seterror('error fetching properties');
        }
    };

    const handlecreateproperty = async (event) => {
        event.preventdefault();
        try {
            await axios.post('/properties', newproperty, {
                headers: { authorization: `bearer ${localstorage.getitem('token')}` }
            });
            setsuccess('property created successfully!');
            fetchproperties();
        } catch (error) {
            seterror('error creating property');
        }
    };

    return (
        
{/* jsx for rendering the properties and the form to create a new property */}
); }; export default propertiesagent;

此代码片段说明了如何使用 react hooks(usestate 和 useeffect)来管理状态和处理副作用,例如从后端 api 获取数据。

有用的技术方面:了解 javascript 的异步特性

我在使用 react 和 javascript 时学到的最重要的方面之一是如何处理异步操作。 javascript 的非阻塞、异步特性对于初学者来说可能有点令人畏惧,尤其是在处理 api 调用时。

例如,从后端获取数据需要使用async/await语法的异步函数:

const fetchProperties = async () => {
    try {
        const response = await axios.get('/properties', {
            headers: { Authorization: `Bearer ${localStorage.getItem('token')}` }
        });
        setProperties(response.data || []);
    } catch (error) {
        setError('Error fetching properties');
    }
};

与使用 promise 相比,使用 async/await 使代码更具可读性且更易于调试。它还确保在执行任何依赖于该数据的操作之前获取数据,这对于维持无缝的用户体验至关重要。

回顾:从 python 基础到全栈开发的成长

回顾过去,从学习 python 基础知识到构建全栈应用程序的旅程非常有意义。我不仅提高了编码技能,还获得了使用不同技术和框架的宝贵经验。

构建这个房地产列表应用程序教会了我在编程基础知识方面打下坚实基础的重要性。它还强化了软件开发中学习永无止境的理念。总是有一个新的框架、库或工具需要掌握,每个项目都会带来自己独特的挑战。

此旅程中最令人满意的方面之一就是看到应用程序变得栩栩如生。从设置后端到处理用户身份验证,再到构建动态、响应式的前端组件,每一步都是一个学习的机会。

结论

总之,开发这款房地产列表应用程序是一次宝贵的经历,它强调了坚持不懈、持续学习和以开放的态度应对新挑战的重要性。随着我作为一名开发人员的不断成长,我对未来以及我将在此过程中获得的新技能和知识感到兴奋。

如果您刚刚开始,我的建议是继续编码,继续学习,并且不要害怕承担那些让您走出舒适区的项目。你修复的每一个错误、你学到的每一项新技术、你完成的每一个项目都离成为一名熟练的开发人员更近了一步。

https://github.com/migsldev/real_estate_listing_app

终于介绍完啦!小伙伴们,这篇关于《反思我的旅程:构建初学者房地产列表全栈应用程序》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
Java 函数式编程对大型代码库的维护和可扩展性有哪些影响?Java 函数式编程对大型代码库的维护和可扩展性有哪些影响?
上一篇
Java 函数式编程对大型代码库的维护和可扩展性有哪些影响?
PHP 函数通过引用传递参数时如何避免意外修改?
下一篇
PHP 函数通过引用传递参数时如何避免意外修改?
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    70次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    85次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    85次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    229次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    230次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码