欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

學WEB前端開發你還在用HTML結構?組件化思想才是現代化前端的核心理念

admin
2024年12月24日 11:39 本文熱度 299
本文轉載于稀土掘金技術社區,作者:狂炫一碗大米飯


https://juejin.cn/post/7451058158206009371

前言

場景:你是一個小組長,你的老板要你去開發一個項目,你作為組長要如何分配下去工作呢?一個一個頁面寫或者每人寫幾個頁面?那不得每寫一個頁面或功能的 UI 需要從頭開始重新編寫?NO,今天我要和你介紹現代化前端的核心概念——組件化思想!

什么是組件化思想

組件化思想:是一種軟件架構和開發思想,目的是將應用程序或系統分解為獨立且可復用的“組件”。每個組件都擁有明確的功能、職責和接口,并且通過標準化的方式與其他組件交互。組件化思想廣泛應用于前端開發、后端開發、移動開發等多個領域,尤其在現代前端框架(如 React、Vue、Angular)和微服務架構中得到深刻體現。

就像我們實際生產中,我們生產一件東西,不可能一件一件從頭到尾的去完成,肯定是一個部件一個部件的生產,然后最后組裝在一起。

在我們前端里也一樣,在做前端開發時,如果不使用組件化思想那是不是每個頁面或功能的 UI 需要從頭開始重新編寫,導致大量的代碼重復。不同頁面或部分可能會實現相似的功能或 UI 組件,如按鈕、表單、導航欄等。由于沒有組件的概念,所有這些公共部分都需要在每個頁面中手動復制和粘貼,這樣不僅導致冗余代碼,還增加了維護和更新的困難。

如果不使用組件化思想 我們怎么開發?

  1. 傳統的頁面結構

    • 在沒有組件化的項目中,通常會將整個應用或功能都放在一個頁面文件中。所有的 HTML 結構、CSS 樣式和 JavaScript 功能都放在一起。例如,一個傳統的頁面結構可能是一個大的 HTML 文件,其中包含所有的業務邏輯和視圖層。
  2. 手動 DOM 操作

    • 在沒有組件化的情況下,開發者可能會手動操作 DOM 來更新視圖。這種方法的代碼可能會非常冗長且容易出錯,因為你需要在每次界面更新時手動操作 DOM,并且手動管理事件、狀態等。
  3. 全局狀態管理

    • 如果不使用組件化思想,那么通常會使用全局變量 或全局對象 來存儲和共享數據。所有頁面或功能模塊通過這些全局變量來傳遞和更新數據。這種方式很容易導致全局狀態的混亂和難以維護的問題。
  4. 代碼重復與功能分離

    • 沒有組件化,功能通常是集中在一個地方實現,導致代碼重復和無法復用。這意味著,如果需要相似功能的不同部分,開發者需要再次寫一遍代碼。

就比如在我們的一個項目中可能多個頁面都需要顯示一個按鈕,那難道我需要每個頁面都去寫一個相同的按鈕元素嘛?

<!-- 頁面 1 -->
<button>Submit</button>

<!-- 頁面 2 -->
<button>Submit</button>

<!-- 頁面 3 -->
<button>Submit</button>

當你需要改變按鈕的樣式或行為時,你必須在每個頁面上都修改相同的代碼。這樣做既不高效,也容易出錯。

這時候杠精可能就會說了:這也沒復雜多少啊,也就每個頁面多寫了一行代碼。這是功能簡單,代碼就一行,那要是一個復雜的功能呢?

例如,如果在多個地方需要同樣的登錄表單,但沒有組件化思想,你可能不得不為每個頁面編寫重復的表單代碼。

<!-- 登錄表單 1 -->
<form>
  <input type="text" name="username" placeholder="Username" />
  <input type="password" name="password" placeholder="Password" />
  <button type="submit">Login</button>
</form>


<!-- 登錄表單 2 -->
<form>
  <input type="text" name="username" placeholder="Username" />
  <input type="password" name="password" placeholder="Password" />
  <button type="submit">Login</button>
</form>

代碼重復是一方面,沒有組件化狀態管理也會混亂在沒有組件化的前提下,應用的狀態管理會變得混亂且難以追蹤。如果應用中有多個頁面需要共享和更新狀態(如用戶信息、購物車數據等),沒有組件來封裝每個部分的狀態,狀態可能會混雜在一起,導致邏輯復雜,難以維護和調試。

例如,多個頁面可能需要訪問同一份數據,如果沒有組件化,每個頁面都需要自己處理狀態,并在每個頁面之間傳遞數據。

使用組件化思想

核心概念

  1. 組件:組件是具有特定功能的、獨立的、可重用的單元。每個組件通常有自己的內部狀態、UI 渲染、業務邏輯等,外部通過接口或屬性與其他組件交互。組件可以是“視圖組件”(如 UI 組件)或“業務組件”(如數據處理、API 請求等)。
  2. 獨立性與封裝性:每個組件應該盡可能獨立,負責完成一個特定的功能或任務。每個組件的內部實現細節應該對外部隱藏,只暴露出必要的接口或 API。組件之間通過明確的通信方式(如事件、回調函數或數據傳遞)進行交互。
  3. 復用性:組件化的一個核心優勢是復用。組件應該盡量做到通用和可復用,使得同樣的組件可以在不同的場景中重復使用,減少重復代碼,提高開發效率。
  4. 組合性:組件可以嵌套或組合在一起形成復雜的界面或功能。組件化的一個重要特性是“組合”的能力,即通過將多個小的組件組合成更大的組件,從而構建復雜的應用。
  5. 解耦性:組件之間應盡量解耦,減少相互依賴。良好的解耦可以使得系統更加靈活和可維護。當需要修改一個組件時,不會影響到其他組件的正常工作。

以react為例展示一下組件化思想

這個項目展示了一個待辦事項應用,其中每個功能都拆分為獨立的組件。每個組件負責不同的功能,這些組件之間通過props傳遞數據,從而實現交互。項目結構

src/
  ├── components/
  │   ├── TodoApp.jsx
  │   ├── TodoList.jsx
  │   ├── TodoItem.jsx
  │   ├── AddTodo.jsx
  ├── App.jsx
  ├── main.jsx

組件化思想的實現

  1. TodoApp:這個組件是應用的核心,它負責整個待辦事項列表的狀態管理,并將數據傳遞給TodoList 和AddTodo 組件。
  2. TodoList:顯示所有的待辦事項,它從TodoApp 組件接收待辦事項列表并渲染每個TodoItem
  3. TodoItem:每個待辦事項項,展示單個待辦事項的內容,并允許用戶標記任務為完成。
  4. AddTodo:提供輸入框,允許用戶添加新的待辦事項。它通過回調函數將新增的待辦事項傳遞給TodoApp
TodoApp.jsx

import React, { useState } from 'react';
import TodoList from './TodoList';
import AddTodo from './AddTodo';

const TodoApp = () => {
  const [todos, setTodos] = useState([
    { id1text'Learn React'completedfalse },
    { id2text'Build a To-Do App'completedfalse },
  ]);

  // 添加新待辦事項
  const addTodo = (text) => {
    const newTodo = {
      id: todos.length + 1,
      text: text,
      completedfalse,
    };
    setTodos([...todos, newTodo]);
  };

  // 切換待辦事項完成狀態
  const toggleTodo = (id) => {
    setTodos(todos.map(todo => 
      todo.id === id ? { ...todo, completed: !todo.completed } : todo
    ));
  };

  return (
    <div>
      <h1>To-Do List</h1>
      <AddTodo addTodo={addTodo} />
      <TodoList todos={todos} toggleTodo={toggleTodo} />
    </div>

  );
};

export default TodoApp;
TodoList.jsx

import React from 'react';
import TodoItem from './TodoItem';

const TodoList = ({ todos, toggleTodo }) => {
  return (
    <ul>
      {todos.map(todo => (
        <TodoItem key={todo.id} todo={todo} toggleTodo={toggleTodo} />
      ))}
    </ul>

  );
};

export default TodoList;
TodoItem.jsx

import React from 'react';

const TodoItem = ({ todo, toggleTodo }) => {
  return (
    <li
      style={{
        textDecoration: todo.completed ? 'line-through: 'none',
        cursor: 'pointer',
      }}
      onClick={() =>
 toggleTodo(todo.id)}
    >
      {todo.text}
    </li>

  );
};

export default TodoItem;
AddTodo.jsx

import React, { useState } from 'react';

const AddTodo = ({ addTodo }) => {
  const [newTodoText, setNewTodoText] = useState('');

  const handleChange = (event) => {
    setNewTodoText(event.target.value);
  };

  const handleSubmit = (event) => {
    event.preventDefault();
    if (newTodoText.trim()) {
      addTodo(newTodoText);
      setNewTodoText('');
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input
        type="text"
        value={newTodoText}
        onChange={handleChange}
        placeholder="Add a new task"
      />

      <button type="submit">Add</button>
    </form>

  );
};

export default AddTodo;
App.jsx

import React from 'react';
import TodoApp from './components/TodoApp';

const App = () => {
  return (
    <div>
      <TodoApp />
    </div>

  );
};

export default App;
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
,
  document.getElementById('root')
);

總結

在我們的現代化前端開發中組件化思想和很重要的,組件化思想能夠有效提升軟件系統的可維護性、可擴展性和開發效率。通過將系統拆解成小而獨立的組件,開發人員可以更專注于業務邏輯的實現,減少冗余代碼,提高復用性。我們通過一個例子展示了如何利用組件化思想進行項目的開發。通過將應用拆分成小而獨立的組件,每個組件只負責特定的功能,不僅提高了開發效率,還增強了代碼的可維護性和可復用性。



該文章在 2024/12/24 11:40:32 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved