Contents

วิธีรวมฟีเจอร์แฟล็กในแอปพลิเคชันโต้ตอบโดยใช้ Flagsmith

แฟล็กฟีเจอร์เป็นเครื่องมือสำคัญที่ช่วยปรับปรุงการสร้างและเผยแพร่การอัปเดตซอฟต์แวร์ คุณสามารถใช้มันเพื่อกำหนดเป้าหมายกลุ่มผู้ใช้เฉพาะหรือฐานผู้ใช้ทั้งหมดของคุณ

โดยพื้นฐานแล้ว เครื่องมือเหล่านี้ช่วยให้สามารถดำเนินการเปลี่ยนแปลงที่สำคัญภายในสภาพแวดล้อมการผลิตจริงได้ โดยไม่ขัดขวางขั้นตอนการปฏิบัติงาน สิ่งนี้สามารถทำได้โดยการใช้แฟล็กคุณลักษณะซึ่งตรงข้ามกับการแก้ไขโค้ดและกระบวนการปรับใช้ที่ซับซ้อน

แฟล็กคุณลักษณะ: อธิบายการใช้งานและคุณประโยชน์

ไม่ต้องสงสัยเลยว่าการพัฒนาซอฟต์แวร์ถือเป็นการดำเนินการอย่างต่อเนื่องและเป็นวัฏจักร ตราบใดที่บุคคลยังคงมุ่งมั่นในโครงการใดโครงการหนึ่ง การแก้ไขและการปรับปรุงจะถูกนำมาใช้อย่างต่อเนื่องโดยบุคคลหรือนิติบุคคลอย่างน้อยหนึ่งราย

ตามหลักการแล้ว ไปป์ไลน์การบูรณาการอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่อง (CI/CD) ช่วยให้การส่งมอบการอัปเดตโค้ดที่สอดคล้องกันไปยังสภาพแวดล้อมการผลิตเป็นไปอย่างราบรื่น โดยมีการแทรกแซงของมนุษย์น้อยที่สุด อย่างไรก็ตาม กระบวนการนี้มักจะเกี่ยวข้องกับการลงทุนที่สำคัญในความพยายามในการปรับใช้ซึ่งอาจใช้เวลานานและต้องใช้ทรัพยากรมาก

ที่จริงแล้ว ด้วยการใช้แฟล็กฟีเจอร์ เราอาจเผยแพร่การอัปเกรดเป็นบางส่วนหรือทั้งหมดของกลุ่มผู้ใช้ เพียงแค่ปรับการตั้งค่าคอนฟิกูเรชันเท่านั้น

ในสถานการณ์ต่างๆ การใช้แฟล็กคุณลักษณะอาจถือว่าเหมาะสม เช่น:

เมื่อต้องการประเมินแนวคิดเชิงนวัตกรรมก่อนที่จะนำไปใช้ในระดับสากล การดำเนินการทดลองกับกลุ่มตัวอย่างที่ได้รับการควบคุมของผู้ใช้จะให้วิธีการที่มีประสิทธิภาพในการรวบรวมข้อมูลทั้งเชิงคุณภาพและเชิงปริมาณเกี่ยวกับฟังก์ชันการทำงานของผลิตภัณฑ์และอิทธิพลโดยรวมที่มีต่อผู้ใช้ปลายทาง

เมื่อต้องเผชิญกับสถานการณ์เร่งด่วนที่ต้องใช้แพตช์สำคัญหรือการแก้ไขอย่างรวดเร็ว การมีกลไกที่พร้อมสำหรับการปรับใช้การอัปเดตและวิธีแก้ไขปัญหาที่จำเป็นในทันทีสำหรับส่วนประกอบที่ทำงานผิดปกติใดๆ ถือเป็นเรื่องสำคัญ ช่วยให้สามารถดำเนินการได้อย่างรวดเร็วในกรณีที่มีสถานการณ์ที่ไม่คาดฝัน ลดเวลาหยุดทำงานให้เหลือน้อยที่สุด และรับประกันความเสถียรและการทำงานของระบบโดยรวมอย่างต่อเนื่อง

การปรับแต่งประสบการณ์ผู้ใช้โดยการเปิดใช้งานหรือปิดใช้งานฟังก์ชันบางอย่างตามลักษณะเฉพาะ ความชอบ และแผนการสมัครสมาชิกเป็นส่วนสำคัญในการให้บริการที่ปรับแต่งเอง

เริ่มต้นใช้งาน Flagsmith

Flagsmith นำเสนอแนวทางที่ครอบคลุมในการใช้แฟล็กคุณลักษณะ ซึ่งรวมถึงตัวเลือกโอเพ่นซอร์สและแพลตฟอร์มบนคลาวด์ ในตัวอย่างนี้ เราจะใช้บริการบนคลาวด์เพื่อรวมแฟล็กฟีเจอร์ภายในแอปพลิเคชัน React ได้อย่างราบรื่น

ที่จะเริ่มต้น:

⭐ ไปที่ บริการคลาวด์ของ Flagsmith ลงชื่อสมัครใช้บัญชี และลงชื่อเข้าใช้หน้าภาพรวมของบัญชีของคุณ /th/images/flagsmith-homepage-1.jpg

⭐ ในหน้าภาพรวม คลิกที่ปุ่มสร้างโครงการเพื่อตั้งค่าโครงการ Flagsmith ใหม่ Flagsmith จะสร้างทั้งสภาพแวดล้อมการพัฒนาและการใช้งานจริงในหน้าการตั้งค่าโปรเจ็กต์ของคุณโดยอัตโนมัติ สำหรับบทช่วยสอนนี้ คุณจะใช้สภาพแวดล้อมการพัฒนาเพื่อใช้งานแฟล็กฟีเจอร์ /th/images/create-flagsmith-project.jpg

⭐ ตรวจสอบให้แน่ใจว่าคุณอยู่ในสภาพแวดล้อมการพัฒนา เลือกแท็บคุณสมบัติ แล้วคลิกปุ่มสร้างคุณสมบัติแรกของคุณ /th/images/flagsmith-project-settings-dashboard.jpg

⭐ ระบุ ID สำหรับคุณสมบัติที่คุณต้องการตั้งค่าสถานะ โดยควรเป็นสตริง คลิกปุ่มสลับเพื่อเปิดใช้งานตัวเลือกคุณสมบัติเริ่มต้น แล้วกดสร้างคุณสมบัติ ในกรณีนี้ คุณจะใช้แฟล็กคุณลักษณะในการให้คะแนนของผลิตภัณฑ์อีคอมเมิร์ซต่างๆ /th/images/create-new-feature.jpg

⭐ คุณสามารถดูและจัดการคุณสมบัติที่สร้างขึ้นใหม่ได้โดยไปที่หน้าภาพรวมการตั้งค่าคุณสมบัติ /th/images/product-rating-feature-flag.jpg

เพื่อให้การตั้งค่าสภาพแวดล้อมของคุณเสร็จสิ้น คุณจำเป็นต้องได้รับคีย์ที่เกี่ยวข้องกับบริบทฝั่งไคลเอ็นต์

สร้างคีย์สภาพแวดล้อมฝั่งไคลเอ็นต์

หากต้องการรับคีย์สภาพแวดล้อมฝั่งไคลเอ็นต์:

⭐ คลิกแท็บการตั้งค่าใต้สภาพแวดล้อมการพัฒนา /th/images/settings-tab.jpg

⭐ ในหน้าการตั้งค่าสภาพแวดล้อมการพัฒนา ให้คลิกแท็บคีย์ /th/images/environment-settigns-page-1.jpg

⭐คัดลอกคีย์สภาพแวดล้อมฝั่งไคลเอ็นต์ที่ให้มา

ซอร์สโค้ดสำหรับโปรเจ็กต์นี้โฮสต์บนแพลตฟอร์ม GitHub ภายในพื้นที่เก็บข้อมูลเฉพาะ

สร้างโครงการตอบโต้

ประการแรก ตัดสินใจว่าคุณต้องการใช้คำสั่งแรกโดยดำเนินการคำสั่งข้างต้น หรือเลือกใช้คำสั่งหลังโดยใช้เป็นวิธีการตั้งค่าที่คุณต้องการ สิ่งสำคัญคือต้องทราบว่าคำแนะนำที่ให้ไว้ในคู่มือนี้จะถือว่ามีการใช้ Vite เพื่อสร้างแอปพลิเคชัน React

หากต้องการดำเนินการต่อ ให้รวมชุดพัฒนาซอฟต์แวร์ (SDK) ของ Flagsmith ภายในโครงการของคุณ SDK นี้รองรับหลากหลาย

 npm install flagsmith 

การรวมไฟล์.env ภายในไดเร็กทอรีหลักของพื้นที่จัดเก็บข้อมูลของโปรเจ็กต์เป็นขั้นตอนสำคัญเพื่อให้แน่ใจว่ามีการเข้าถึงตัวแปรสภาพแวดล้อมฝั่งไคลเอ็นต์อย่างเพียงพอ หากต้องการสร้างการกำหนดค่านี้ คุณควรสร้างเอกสาร.env ใหม่ และวางไว้ที่แถวหน้าของลำดับชั้นไฟล์ที่มีอยู่ โดยเฉพาะอย่างยิ่ง ต้องป้อนตัวแปรสภาพแวดล้อมฝั่งไคลเอ็นต์ดังที่แสดงด้านล่างเพื่อให้สามารถรวมเข้ากับระบบได้สำเร็จ:

 VITE_REACT_APP_FLAGSMITH_ENVIRONMENT_ID="<your-key-goes-here>" 

เพิ่มส่วนประกอบการทำงานของรายการผลิตภัณฑ์

หากต้องการทดสอบความสามารถด้านฟีเจอร์แฟล็กของ Flagsmith คุณจะต้องสร้างส่วนประกอบง่ายๆ ที่จะแสดงรายการผลิตภัณฑ์อีคอมเมิร์ซจาก DummyJSON API

แต่ละรายการในแค็ตตาล็อกมีลักษณะเฉพาะหลายประการ รวมถึงชื่อ ต้นทุน รายละเอียดสินค้า และการประเมินผลิตภัณฑ์โดยรวม วัตถุประสงค์ของเราคือการใช้คุณลักษณะสลับเพื่อควบคุมแง่มุมการให้คะแนนผลิตภัณฑ์ หลังจากรวมฟังก์ชันการทำงานนี้แล้ว ผู้ใช้จะสามารถจัดการคุณลักษณะนี้ผ่านปุ่มที่อยู่บนอินเทอร์เฟซบริการระยะไกลของ Flagsmith

ในไดเร็กทอรีต้นทาง โปรดสร้างไดเร็กทอรีย่อยใหม่ชื่อ"ส่วนประกอบ"และซ้อนไว้ในลำดับชั้นที่มีอยู่ จากนั้น กรุณาวางไฟล์ใหม่ชื่อ"Products.jsx"ไว้ในโฟลเดอร์ส่วนประกอบดังกล่าว และคัดลอกบล็อกโค้ดที่ตามมาเพื่อเติมเนื้อหาในนั้น

ขั้นแรก ให้ทำการนำเข้าดังต่อไปนี้:

 import "./style.component.css";
import React, { useState, useEffect } from "react";
 import flagsmith from 'flagsmith'; 

รวมองค์ประกอบการทำงานโดยการสร้างพารามิเตอร์สถานะเริ่มต้น การใช้งานส่วนประกอบ JavaScript ที่จำเป็น และรวมองค์ประกอบ HTML ที่เกี่ยวข้องภายในบริบทที่เหมาะสม

 export default function Products() {
  const [products, setProducts] = useState([]);
  const [showProductRating, setShowProductRating] = useState(false);
  const environmentID = import.meta.env.VITE_REACT_APP_FLAGSMITH_ENVIRONMENT_ID;
 
  return (
    <>
       <div className="product-catalogue">
        <div className="product-list">
        </div>
      </div>
    </>
  );
} 

javascriptimport { useState } จาก’react’; นำเข้า axios จาก’axios’; ฟังก์ชั่น DummyAPI() {const [products, setProducts]=useState([]);useEffect(()=> {async function fetchData() {ลอง {const การตอบสนอง=รอ axios.get(’ https://dummy-api.example.com/api/products’);setProducts(response.data);} catch (ข้อผิดพลาด) {console.log(error);}}fetchData();}, []);return ( ผลิตภัณฑ์จำลอง {products.map ((ผลิตภัณฑ์)

รวมรหัสต่อไปนี้ภายในองค์ประกอบการทำงาน:

 useEffect(() => {
    const fetchProducts = async () => {
        await fetch("https://dummyjson.com/products")
          .then((res) => res.json())
          .then((json) => setProducts(json.products));
         }
    fetchProducts();
  }, []); 

เมื่อเรนเดอร์ครั้งแรก ฟังก์ชัน fetchProducts จะถูกดำเนินการ ซึ่งจะดึงข้อมูลผลิตภัณฑ์และอัปเดตสถานะปัจจุบันของตัวแปร ผลิตภัณฑ์ ตามนั้น

ท้ายที่สุดแล้ว เราสามารถสำรวจอาร์เรย์ของรายการและแสดงในเว็บเบราว์เซอร์ได้

ใต้หมวดคลาส"รายการผลิตภัณฑ์"ให้รวมโค้ดที่ตามมาภายในองค์ประกอบ div ใหม่:

 { products.slice(0,6).map((product) => (
    <div className="product" key={product.id}>
        <h2>{product.title}</h2>
         <p>Price: ${product.price}</p>
        <p>{product.description}</p>

        <h3>Rating: {product.rating}</h3>
    </div>
))} 

ด้วยเหตุนี้ เราจึงสามารถเรียกดูและแสดงแค็ตตาล็อกของผลิตภัณฑ์แยกรายการที่ได้รับจาก JSON API จำลองได้อย่างง่ายดาย

บูรณาการ SDK ของ Flagsmith

เพื่อรวมและตั้งค่าชุดพัฒนาซอฟต์แวร์ของ Flagsmith ภายในแอปพลิเคชัน React โดยใช้ฮุก useEffect เราควรวางข้อมูลโค้ดที่กำหนดทันทีหลังจากเรียกใช้ฟังก์ชัน fetchProducts ภายในฮุกดังกล่าว

 flagsmith.init({
    environmentID:environmentID,
    cacheFlags: true,
    enableAnalytics: true,
    onChange: (oldFlags, params) => {
        setShowProductRating(flagsmith.hasFeature('product_rating'));
    }
}); 

การรวมฟังก์ชันการทำงานนี้ช่วยให้สามารถใช้งานแฟล็กคุณลักษณะภายในสภาพแวดล้อมที่แคชและวิเคราะห์ภายในแอปพลิเคชัน React ของคุณ

ฟังก์ชันนี้ใช้กลไกการเรียกกลับเพื่อควบคุมการนำเสนอข้อมูลการให้คะแนนผลิตภัณฑ์ตามสถานะปัจจุบันของแฟล็กคุณลักษณะการให้คะแนนผลิตภัณฑ์\_ สิ่งนี้ถือได้ว่าใช้งานอยู่ (เปิดใช้งาน) เมื่อเปิดใช้งานภายในบริการคลาวด์ หรือไม่ใช้งาน (ปิดใช้งาน) เมื่อปิดใช้งานภายในบริบทเดียวกัน

สุดท้าย แก้ไขแท็ก h3 ของการให้คะแนนผลิตภัณฑ์โดยรวมคำสั่งภายในบล็อกโค้ด return ดังนี้:

   {showProductRating && <h3> Rating: {product.rating}</h3>} 

ฟังก์ชันการทำงานของการอัปเดตปัจจุบันช่วยให้สามารถแสดงการให้คะแนนผลิตภัณฑ์เมื่อเปิดใช้งาน ตามที่เห็นได้จากการเชื่อมโยงกับตัวแปร showProductRating ซึ่งได้รับการอัปเดตเพื่อระบุว่าควรแสดงการให้คะแนนผลิตภัณฑ์ร่วมกับแอตทริบิวต์อื่นๆ ที่เกี่ยวข้อง ในทางกลับกัน เมื่อปิดใช้งาน ตัวแปร showProductRating จะย้อนกลับไปสู่สถานะเดิม ดังนั้นจึงป้องกันการแสดงการให้คะแนนผลิตภัณฑ์ภายในอินเทอร์เฟซ

สุดท้าย แก้ไขไฟล์ App.jsx โดยรวมคำสั่งการนำเข้าสำหรับส่วนประกอบผลิตภัณฑ์

 import "./App.css";
import Products from "./components/Products";

function App() {
  return (
    <div className="App">
      <div className="App-header">
        <h1>Product Catalogue</h1>
        <Products/>
      </div>
    </div>
  );
}

export default App; 

ท้ายที่สุด ให้รันโปรแกรมของคุณและไปที่เว็บเบราว์เซอร์เพื่อดูการทำงานของซอฟต์แวร์

 npm run dev 

หากต้องการตรวจสอบฟังก์ชันการทำงานของแอตทริบิวต์นี้ โปรดไปที่หน้าการตั้งค่าฟีเจอร์ภายใน Flagsmith และปิดใช้งานตัวเลือกการให้คะแนนผลิตภัณฑ์

/th/images/turn-off-feature-flag-1.jpg

เพื่อสังเกตการแก้ไขล่าสุดที่เกิดขึ้นกับแอปพลิเคชัน โปรดรีเฟรชการแสดงผลเว็บเบราว์เซอร์โดยโหลดโปรแกรมที่รันในเครื่องอีกครั้ง ในขณะเดียวกัน การให้คะแนนที่มีอยู่ก่อนหน้านี้ภายในระบบจะหายไป อย่างไรก็ตาม หากคุณเปิดใช้งานฟังก์ชันดังกล่าวอีกครั้งในภายหลัง แล้วกดปุ่มรีเฟรชอีกครั้ง การให้คะแนนที่ขาดหายไปควรปรากฏขึ้นอีกครั้ง

การเปิดตัวฟีเจอร์ไม่ควรยุ่งยากอีกต่อไป

แฟล็กฟีเจอร์ได้กลายเป็นเครื่องมือที่ขาดไม่ได้ในการควบคุมการปรับใช้ฟีเจอร์ภายในแอปพลิเคชันซอฟต์แวร์ การผสานรวมเครื่องมือเหล่านี้มีความคล่องตัวและไม่เกะกะ จึงช่วยบรรเทาอันตรายที่อาจเกิดขึ้นจากการดำเนินการเปิดตัวการอัปเดตได้อย่างมีประสิทธิภาพ

คุณลักษณะนี้มีอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้ซึ่งช่วยให้บุคคลทั้งด้านเทคนิคและไม่ใช่ด้านเทคนิคสามารถปรับเปลี่ยนการตั้งค่าและฟังก์ชันต่างๆ ได้อย่างง่ายดาย โดยไม่จำเป็นต้องมีความรู้ด้านการเขียนโค้ดอย่างกว้างขวาง