使用React和Bulma打造的个人软件开发作品集

需积分: 10 0 下载量 70 浏览量 更新于2024-12-28 收藏 11.94MB ZIP 举报
资源摘要信息:"portfolio" 知识点详细说明: 1. React技术栈: - 文件标题和描述中提到了React,这表明该作品集网站是使用React构建的。React是由Facebook开发的一个用于构建用户界面的JavaScript库,以其声明式、组件化和高效的特点而受到开发者的喜爱。 - 在React中,“组件”是构建UI的基本单元。每个组件都可以独立于其他组件存在,并拥有自己的状态和生命周期。描述中提到的“React组件”是实现网页响应性和可重用性的关键。 - 描述中还提到了“状态和钩子”,状态(State)是组件内部的变量,用于存储组件的数据;钩子(Hooks)是React 16.8版本之后引入的新特性,它允许开发者在不编写类的情况下使用状态和其他React特性。 2. CSS框架Bulma: - Bulma是描述中提到的CSS框架,它是一个基于Flexbox的现代CSS框架,用于快速开发响应式布局。 - 描述中提到了“布尔玛课程的使用”,这可能是指作者为了构建作品集网站而学习了Bulma框架的课程,或者是在项目中实际应用了Bulma框架。 - Bulma提供了一套易于使用的CSS类,可以快速构建出美观的网页布局和组件。 3. 响应式网页设计: - 描述中提到作品集“被设计为主要使用React和Bulma的响应式网页”,意味着网页可以适应不同的屏幕尺寸和设备,提供良好的用户体验。 - 响应式设计通常涉及到媒体查询(Media Queries)、弹性布局(Flexbox)、流式网格(Fluid Grids)等技术。 4. 导航栏与一致性: - 描述中提到“跨所有网页的一致导航栏”,这表明网站在多个页面间保持导航栏的一致性,有助于用户在网站内导航。 - 导航栏是网站中重要的UI元素,有助于提升用户满意度和提高网站的可用性。 5. 语义HTML元素: - 描述中提到了“语义HTML元素”,这些元素能够明确地表达其内容的含义,例如article、section、header、footer等标签。 - 使用语义HTML不仅有助于SEO(搜索引擎优化),还可以使网页内容更容易被屏幕阅读器等辅助技术解析,从而提高网页的可访问性。 6. Git和代码托管: - 描述中提到了如何查看已部署的应用程序,并说明了通过GitHub克隆代码的过程。 - Git是一个版本控制系统,广泛用于软件开发中管理源代码的历史版本。 - GitHub是一个基于Git的代码托管和协作平台,允许开发者共享和审查代码,并管理项目。 7. 作品集的用途: - 描述中指出,作品集“可用于查看我的工作和源代码”,这表明其主要功能是展示作者的软件开发项目和相关的源代码。 - 作品集通常用于职业发展,帮助开发者展示他们的技能和经验给潜在的雇主或合作者。 8. 知识产权声明: - 描述的最后提到了版权和许可证信息,其中“麻省理工学院执照”指的是广泛使用的开源许可证MIT License。 - MIT License允许用户在几乎所有项目中自由地使用、修改和分发代码,无论是个人使用还是商业用途。 9. 作品集文件结构: - 文件名称列表中只有一个“portfolio-main”,这表明作品集的根目录可能就是这个文件,包含了整个项目的代码和资源。 综上所述,该作品集网站是一个使用现代前端技术构建的响应式网页,展示了作者的软件开发能力,通过使用React框架和Bulma CSS框架,实现了组件化的响应式设计,并利用Git进行代码管理。作品集还展示了一致性的导航和语义HTML,增强了网站的可用性和可访问性,其源代码通过GitHub向公众开放。最后,该作品集遵循MIT License开放源代码,方便其他开发者学习和使用。

分析封装。 private final String name; private double liquidity; private Set<MarketProperty> portfolio; //constructors //Creating an empty portfolio of assets and zero liquidity. public PropertyManagementCompany(String name, double liquidity) { this.name = checkName(name); this.liquidity = liquidity; this.portfolio = createEmptyPortfolio(); } private Set<MarketProperty> createEmptyPortfolio() { return new TreeSet<>(Comparator.comparingDouble(MarketProperty::getCurrentValuation).reversed()); } //creating a portfolio and liquidity with parameters such as company name, liquidity, and portfolio list public PropertyManagementCompany(String name, double liquidity, List<MarketProperty> portfolio) { this.name = checkName(name); this.liquidity = liquidity; this.portfolio = createEmptyPortfolio(); this.portfolio.addAll(portfolio); } //validators private String checkName(String name) { //The aim of this method is to ensure the type of category. if (name.isEmpty() ) { throw new IllegalArgumentException("The company name can't be empty!"); } else { return name; } } //Purchase a real estate asset with the purchase price. public void buyProperty(MarketProperty property, double price) { if (liquidity >= price) { if (portfolio.contains(property)) { throw new IllegalArgumentException("The property has been held."); } else { //MarketProperty marketProperty = new MarketProperty(property.getID(), property.getCategory(), property.getSize(), property.getInitialPrice()); portfolio.add(property); liquidity -= price; } } else { throw new IllegalArgumentException("Insufficient liquidity to purchase the property. "); } } //Sell a real estate asset with the current valuation. public void sellProperty(MarketProperty property) { if (portfolio.contains(property)) { liquidity += property.getCurrentValuation(); portfolio.remove(property); } else { throw new IllegalArgumentException("Property not found in portfoliio!"); } } //getters public String getName() { return name; } public double getLiquidity() { return liquidity; } public List<MarketProperty> g

2023-05-15 上传
2023-05-15 上传