组件模块化

Android 开发:由模块化到组件化(一) 当你看到这的时候,想必心理一阵恶寒:模块化?组件化?到底是什么鬼?有啥区别. 有这种感觉才是对的,模块化和组件化本质思想是一样的,都是"大化小",两者的目的都是为了重用和解耦,只是叫法不一样.如果非要说区别,那么可以认为模块化粒度更小,更侧重于重用,而组件化粒度稍大于模块,更侧重于业务解耦. 阅读详情

回顾新闻点赞案列:
http://blog.youkuaiyun.com/github_26672553/article/details/76619122

父子组件

<h2>文章标题:{this.state.news.title}</h2>

我们可以把 新闻标题 部分HTML抽取处理,定义为一个专门的组件。

// 新闻标题组件
class Title extends React.Component{
    render(){
        return <div>
            <h2>文章标题:{this.props.title}</h2>
        </div>
    }
}

注意是用this.props.title获取。

在News组件里使用这个Title组件(Title就是子组件):

// 在News组件里 用
 <Title title={this.state.news.title}/>
 // 替换
 <h2>文章标题:{this.state.news.title}</h2>

注意在组件的时间传递属性值。

OK,我们发现页面正常显示和为修改之前一样。说明我们的修改没有问题。
全部代码如下:

import React from 'react';
import ReactDOM from 'react-dom';
import axios from "axios";


// 定义新闻组件
class News extends React.Component{
    // 初始化
    constructor(props){
        super(props);

        this.state = {
            news: {}, // 新闻数据
            clickNum:0 // 点赞数
        };
    }

    // 组件渲染之前
    componentWillMount(){
        // ajax请求服务器获取新闻数据
        axios.get(
            "http://localhost/news.php",
            {params:{newsid:this.props.newsid}}
        )
        .then((res)=>{
            //console.log(res.data);
            this.setState({
                news: res.data, // 保存从服务器请求回来的数据
                clickNum:res.data.clickNum
            })
        })
    }

    // 渲染到页面
    render(){
        return <div>
            <Title title={this.state.news.title}/>
            <p>
                <span>创建时间:{this.state.news.created}</span> |
                点赞数:<a href="javascript:;" onClick={this.clickNumHandel.bind(this)}>{this.state.clickNum}</a>
            </p>
            <p>{this.state.news.desc}</p>
        </div>
    }

    //自定义函数处理 用户点赞动作
    clickNumHandel(){
        axios.post(
            "http://localhost/test.php",
            {params:{newsid:this.props.newsid}}
        )
            .then((res)=>{
                console.log(res.data);
                this.setState({
                    clickNum:res.data.clickNum  // 更新 点赞数
                })
            })
    }
}

// 新闻标题组件
class Title extends React.Component{
    render(){
        return <div>
            <h2>文章标题:{this.props.title}</h2>
        </div>
    }
}


// 最后渲染
ReactDOM.render(
    <News newid="101" />, // 使用组件
    document.getElementById('root')
);

我想你和我一样 看出来了 这个代码有点儿长了

组件模块化(分开到多个文件)

我们把 2个组件抽取处理
title.js标题组件:

import React from 'react';
export default  class Title extends React.Component{
    render(){
        return <div>
            <h2>文章标题:{this.props.title}</h2>
        </div>
    }
}

news.js新闻组件:

// 用到的引入
import React from 'react';
import axios from "axios";

// 引入组件
import Title from "./title";

export default class News extends React.Component{
    // 初始化
    constructor(props){
        super(props);

        this.state = {
            news: {}, // 新闻数据
            clickNum:0 // 点赞数
        };
    }

    // 组件渲染之前
    componentWillMount(){
        // ajax请求服务器获取新闻数据
        axios.get(
            "http://localhost/news.php",
            {params:{newsid:this.props.newsid}}
        )
            .then((res)=>{
                //console.log(res.data);
                this.setState({
                    news: res.data, // 保存从服务器请求回来的数据
                    clickNum:res.data.clickNum
                })
            })
    }

    // 渲染到页面
    render(){
        return <div>
            <Title title={this.state.news.title}/>
            <p>
                <span>创建时间:{this.state.news.created}</span> |
                点赞数:<a href="javascript:;" onClick={this.clickNumHandel.bind(this)}>{this.state.clickNum}</a>
            </p>
            <p>{this.state.news.desc}</p>
        </div>
    }

    //自定义函数处理 用户点赞动作
    clickNumHandel(){
        axios.post(
            "http://localhost/test.php",
            {params:{newsid:this.props.newsid}}
        )
            .then((res)=>{
                console.log(res.data);
                this.setState({
                    clickNum:res.data.clickNum  // 更新 点赞数
                })
            })
    }
}

最后在入口文件index.js:

import React from 'react';
import ReactDOM from 'react-dom';



// 引入News组件
import News from "./components/news";


// 最后渲染
ReactDOM.render(
    <News newid="101" />, // 使用组件
    document.getElementById('root')
);

入口文件一下子代码量少了很多。

这里写图片描述
分离完成查看页面没有任何不同。

APP模块化组件化 APP模块化组件化 该库部分思想借鉴了”得到”APP: 个人demo地址:MyComponent 得到开源地址:得到APP 组件化缘故: 当项目逐渐变大的时候,每次你改动了很小的一部分,你也需要重新编译整个APP,举个例子,修改了个人中心样式显示,就得重新编译整个APP.当随着业务的增多,代码变的越来越复杂,每个模块之间的代码耦合变得越来越严重,解耦问题急需解决,同时编译时间也会越来越长... 阅读详情

相关推荐

LIN总线从入门到精通:低成本汽车通信协议原理与实战

在汽车电子和嵌入式系统中,串行通信协议是实现分布式控制的关键技术。其中,LIN(Local Interconnect Network)总线作为一种专为低成本应用设计的单主多从网络协议,其核心原理在于通过简化的“领导-汇报”通信模式,在满足车身控制、传感器数据采集等场景需求的同时,将硬件与布线成本降至最低。LIN总线采用标准化的帧结构,包含间隔场、同步场和受保护标识符场,并依赖调度表来管理通信时序,确保了网络的确定性与可靠性。其技术价值在于为车窗、座椅、灯光等非安全关键系统提供了高性价比的解决方案,是构建分层

weixin_29185167的博客 260

模块化与组件化

组件相当于库,模块相当于框架

追梦的鱼儿 1570

Aspice的理解

ASPICE 是由汽车行业的主要公司和组织合作开发的,包括德国汽车工业联合会(VDA)和国际汽车工作组(Automotive SIG)。其目标是通过标准化的软件开发流程,提高汽车电子系统的软件质量和可靠性。

hkj8808的博客 2013

vue组件模块化开发

vue组件的使用,简单传值

优快云lele666的博客 731

SAP ABAP实战:如何用CVI_EI_INBOUND_MAIN批量更新BP邮箱(附完整代码)

本文深入解析了SAP ABAP中CVI_EI_INBOUND_MAIN函数在业务伙伴(BP)邮箱地址批量维护场景下的应用。通过详细讲解数据结构构建、关键参数(如任务参数'5')配置及完整代码示例,为开发者提供了一套高效、稳定的批量更新解决方案,并分享了性能优化与错误处理的最佳实践。

weixin_29228781的博客 76

STM32-DAC定时器触发三角波生成【频率与幅度精准控制】

本文详细介绍了STM32 DAC定时器触发三角波生成的原理与实现方法,涵盖硬件配置、频率与幅度精准控制技巧及代码实现。通过定时器触发DAC模块,可灵活调节三角波的频率和幅度,适用于信号发生器等高精度应用场景。

weixin_29161785的博客 452

React模块与组件详解:从基础概念到实战复用,一篇吃透核心要点

《React模块与组件:从基础到实践》摘要: 本文系统介绍了React中模块与组件的核心概念。模块是代码组织单元,通过文件形式实现功能解耦和复用;组件则是UI构建块,分为函数式和类式两种形式。函数式组件简洁轻量,配合Hook可实现状态管理;类式组件通过state和生命周期方法处理复杂逻辑。二者的关键区别在于:模块化侧重代码组织,适用于全栈开发;组件化专注UI构建,是前端框架的核心思想。文章通过代码示例展示了props传递、状态管理和生命周期等实践要点,为构建可维护的React应用提供了方法论指导。

m0_60941346的博客 707

特性阻抗 – SI/PI 世界碰撞的地方

除了谐振零点和峰值外,在一定频率下,传输线的阻抗看起来像远端开路时的电容器的阻抗,也看起来像远端短路时电感的阻抗。如果随后的制造变化将测得的阻抗推到 -10% 容差的低端(例如 44 欧姆)的测量区域内,那么如果在初始下降时测量,则真正的特性阻抗将在 42 欧姆时降低 5%,并且超出规格。这意味着,当我们测量红色或蓝色图的峰和相邻谷之间的中间阻抗时,它是该频率下传输线的特性阻抗。图 7 远端开路时(红色常亮)与远端短路时(蓝色常亮)的电感和电容抗阻抗与频率的关系(上图)和传输线的阻抗与频率(下图)的对比。

jkh920184196的博客 962

Vue模块与组件、模块化与组件化

Vue模块与组件、模块化与组件化

m0_61787196的博客 1090

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1708

Hermes Agent 安装部署完全指南

Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。

简简单单Onlinezuozuo 2612

模块化是什么,组件化是什么,两者的区别是什么

**定义**:组件化是指将用户界面或功能单元拆分为相互独立、可复用的组件,每个组件都有自己的业务逻辑和展示效果。- **定义**:模块化是指将一个大型系统拆分为相互独立、功能相关的小模块,以便于开发、维护和复用。每个模块都有清晰的接口和功能边界,可以独立开发、测试和部署。1. **抽象层级不同**:模块化更多地关注于代码层面的组织和复用,而组件化更多地关注于用户界面或功能模块的组织和复用。2. **复用粒度不同**:模块化的复用单位更偏向于代码级别的功能模块,而组件化的复用单位更偏向于界面或功能单元。

子玉的博客 995

Modis数据处理工具:MRT百度网盘下载和手把手图文安装教程

如下图所示为MODIS Reprojection Tool(MRT)的软界面,看似简单,却是Modis遥感影像必不可少的处理工具,如投影变换等。本文以图文并茂的形式,详细讲解MRT软件在Windows10平台上的安装过程,并附MRT软件百度网盘下载地址。 Modis Tool主界面: 一、安装过程 1、安装Java运行环境 双击Java.exe,安装运行环境。默认的安装路径为C:\Program Files (x86)\Java\jre6\bin,后面需要用到这个路径。 等待...

智慧空间实验室 2621

Android模块化和组件化开发

目录 一.模块化介绍 1.1:模块化简介 1.2:模块化和组件化的区别 1.3:模块化的优点 1.4:模块化的层级介绍 二.如何实现组件化 2.1:实现模块化需要解决的问题 2.2:各个问题的解决方法 一:模块化介绍 (1)对于简单的小项目,大多都采用的是单一工程,独立开发。由于项目不大,编译速度及维护成本这些也在接受范围之内。而对于一个大型App产品,多人合作、单一工程...

MR_LABO的博客 4915

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

代码模块化,组件化

(以下是我作为初学者对代码模块化的理解,可能会有很多不足,有什么错误,补充的,可以向我提出)

2403_85247886的博客 878

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

前端组件化和模块化最大的区别是什么_组件化和模块化有什么区别?

相信很多人和我一样看过很多组件化和模块化设计的文章,但依然没有搞清楚这两个的区别,在写这篇文章之前,我一直以为组件化和模块化是一个概念(捂脸),在阅文无数后,决定做个总结,加上案例讲解,来帮助理解这两者的概念。本文概要:什么是组件和模块组件和模块的区别为什么要使用组件化和模块化组件的创建和嵌套方法组件化和模块化源于软件开发,现在越来越被更多地应用于UI设计当中。下面是我为了便于理解做了个示意图。一...

weixin_39517199的博客 2036

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android组件化、模块化、插件化

将一个完整的工程,按业务划分为不同的插件,都是分治法的一种体现。组件更多的是从自下而上的视角,按照技术实现的思维划分实现代码,并将这些代码组装成一个app。本来就是不同的apk, 你把微信的朋友圈,聊天,通讯录单独做一个完全独立的app, 需要微信的时候插在一起,就是一个大型的app了。模块化编程是一种软件设计技术,强调将程序的功能分离为独立的可互换模块,因此每个模块都包含仅执行所需功能的一个方面所需的一切。能做的只是, 朋友圈已经有了,我想单独调试,维护,和别人不耦合,但是和整个项目还是有关联的。

lhm1124的博客 1307

安卓之模块化&组件化

安卓之模块化&组件化

slave_of_life的博客 487

前端的组件化和模块化

什么是前端的模块化和组件化

huangzhixin1996的博客 1347

【Android 组件化】从模块化到组件化

一、从模块化到组件化、 二、build.gradle 构建脚本分析、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 3318

安卓开发之模块化、组件化设计

/ 执行跳转 } });if (rootProject.ext.isModule) { apply plugin: 'com.android.application' //指定为独立运行的应用 } else { apply plugin: 'com.android.library' //库 } defaultConfig { if (rootProject.ext.isModule) { applicationId "com.ls.fuser"//如果独立运行 需要提供applicationId } }

qq_62618558的博客 1489

【JavaScript】浅谈前端模块化与组件化

一、模块 模块化主要是指JS模块化,一个JS文件就是一个模块,向外提供特定功能的程序。 模块内部的数据是私有的,向外暴露一些接口与外部其他模块进行通信。 二、模块化 当整个应用JS以模块来编写,这个应用就是一个模块化应用。 三、组件 实现特定功能的代码块,资源集合,可以包含HTML、CSS、JS 作用:代码的复用 / 简化编码,提高效率 四、组件化 当整个应用的代码已组件的形式来编写,这个应用就是一个组件化应用。 ...

weixin_48989252的博客 1695

模块化和组件化

当你进行用户需求调研后,往往收集到的都是一个个的用户需求点,而一个软件需求分析员要做的是最终将这些需求实现为一个完整的业务系统。这里面就涉 及到业务模块的划分,模块间的分...

cpongo10的博客~ 1047

组件化和模块化对比

项目里面组件化开发和模块化开发都是常用手段,关于两者的区别有必要进行一下梳理。 概念: 组件:把重复的代码提取出来合并成为组件,功能相对单一,主要目的是重用。位于框架最底层,可供不同功能使用/依赖,独立性强。 模块:按功能/业务来进行隔离(分装)成独立的模块,在划分时需要把控颗粒度(界定模块的功能范围)。不同模块之间也会存在依赖关系(单向依赖,如module A依赖于module B,那么B不能依赖A),基本都是业务性的跳转,从地位上来说它们都是平级的。 优点: 组件:组件化的重点就是重用,.

u013773608的博客 1596

一文读懂前端组件化,模块化概念及原理

前端组件化是一种将复杂的用户界面拆分成多个独立、可复用的组件的过程。每个组件都封装了自己的逻辑、样式和模板,通过组合这些组件来构建整个应用程序。组件化提高了代码的可维护性、可复用性和开发效率,是现代前端开发的重要趋势。模块化是指将一个复杂的系统或程序按照功能、逻辑等划分为多个独立、可复用的模块的过程。在前端开发中,模块化和组件化通常是结合使用的。模块化用于划分系统的功能结构,而组件化则用于构建具体的用户界面。通过模块化和组件化的结合,可以构建出既易于维护又高效复用的前端应用程序。实际上,你可能需要在。

u014676858的博客 3592

Android组件化和模块化

作为安卓程序员,理解安卓中的组件化和模块化是非常有必要的,其更能体现一个程序员的内功,而不仅仅是业务能力,本篇文章就带领大家学习如何在安卓中组件化和模块化开发项目。

zjm807778317的博客 1654
上一篇: 新闻点赞案列
下一篇: React路由 - 初步
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值