Sparkling - Hạ tầng đa nền tảng của TikTok
(github.com/tiktok)- TikTok đã mã nguồn mở lớp hạ tầng được xây dựng để vận hành engine Lynx ở quy mô production trong ứng dụng của mình. Cung cấp tích hợp từ scaffolding ứng dụng, build, native bridge đến điều hướng
- Giống như React Native cần Expo, đây là framework hạ tầng production để thực sự vận hành ứng dụng trên engine Lynx
- Chỉ với một lệnh CLI duy nhất, có thể lập tức tạo ra một dự án ứng dụng Lynx hoàn chỉnh kèm native shell Android/iOS, đồng thời thực hiện build → cài đặt → chạy trong một lần
- Với Sparkling Method, chỉ cần viết khai báo TypeScript là có thể tự động sinh mã Kotlin/Swift để triển khai bridge JS↔native an toàn về kiểu
- Với điều hướng URL scheme hợp nhất theo dạng
hybrid://, việc routing giữa trang Lynx và màn hình native được xử lý trong một hệ thống duy nhất
Vị trí của Sparkling: mối quan hệ với Lynx
- Lynx là engine render UI đa nền tảng do TikTok công bố; nếu viết mã theo cách tương tự React thì đây là framework vẽ màn hình Android/iOS bằng rendering native
- Bản thân Lynx là một "engine rendering", nên để vận hành ứng dụng thực tế vẫn cần thêm hạ tầng như pipeline build, giao tiếp native↔JS, điều hướng trang, truy cập storage/media
- Sparkling đảm nhiệm vai trò của lớp hạ tầng này, tức framework ứng dụng chạy trên engine Lynx
- Cũng như chỉ với React Native thì khó làm ứng dụng hoàn chỉnh và cần Expo, chỉ với Lynx cũng khó vận hành ứng dụng quy mô lớn, và Sparkling lấp đầy khoảng trống đó
- Hiện đang ở giai đoạn public beta, API đang tiếp tục được mở rộng và tài liệu được cải thiện
CLI scaffolding và build ứng dụng
- Chỉ với một dòng
npm create sparkling-app@latest my-applà có thể tạo một dự án hoàn chỉnh kèm native shell Android/iOS - Dùng
npx sparkling buildđể build bundle Lynx, vànpx sparkling run:android/run:iosđể build → cài đặt → chạy trong một lần - Dùng
npx sparkling devđể chạy hot reload development server (cổng mặc định 5969, là dãy số khi gõ LYNX trên bàn phím điện thoại) - Dùng
npx sparkling doctorđể tự động chẩn đoán môi trường phát triển như Node.js, JDK, Android SDK, Xcode, CocoaPods - Dùng
npx sparkling autolinkđể tự động đăng ký dependency Gradle/Podfile của module Sparkling Method và sinh mã native registry - Dùng
npx sparkling copy-assetsđể sao chép bundle đã biên dịch vào thư mục tài nguyên Android/iOS
Sparkling Method — bridge JS↔native an toàn về kiểu
- Chỉ cần viết khai báo hàm trong file TypeScript
.d.ts, CLI (sparkling-method-cli codegen) sẽ tự động sinh mã native Kotlin/Swift và phần triển khai TS - Chỉ cần kế thừa abstract class đã được tạo và triển khai phần business logic native, là có thể gọi trực tiếp từ JS
- Cung cấp sẵn các Method built-in như Navigation (router), Storage (kho key-value), Media (camera/album/file)
- Tên package theo dạng
sparkling-<module>, tên method theo quy ước<module>.<action>(ví dụ:router.open) - Sau khi phát hành lên npm, phía dùng chỉ cần
npm install+npx sparkling autolinklà hoàn tất tích hợp
Điều hướng hợp nhất dựa trên scheme
- Với URL scheme hợp nhất dạng
hybrid://lynxview_page?bundle=main.lynx.bundle&title=Home, có thể route trang Lynx và màn hình native theo cùng một cơ chế - Thiết kế cấu trúc đa trang nơi mỗi trang có bundle entrypoint độc lập, phù hợp cho ứng dụng quy mô lớn
- Trong hàm
navigate(), ngoài các khóa được định nghĩa sẵn còn có thể truyền tham số tùy chỉnh vào URL scheme
Tích hợp dần vào ứng dụng hiện có (Brownfield)
- Không chỉ cho ứng dụng mới, Sparkling còn có thể nhúng container vào ứng dụng Android/iOS hiện có để áp dụng dần từng bước
- Android: sau khi thêm Maven artifact (
com.tiktok.sparkling:sparkling:2.0.0), khởi tạo bằngHybridKit.init()rồi dùngSparkling.build(context).navigate()để mở container - iOS: sau khi thêm CocoaPods (
pod 'Sparkling', '2.0.0'), dùngSPKRouter.create(withURL:)để push controller hoặcSPKContainerViewđể nhúng view - Sao chép file
.lynx.bundleđã build vào asset của ứng dụng native, rồi chỉ định bundle tương ứng bằng tham sốbundle=
Cấu trúc dự án
packages/sparkling-sdk: Sparkling SDK cốt lõipackages/sparkling-method: Sparkling Method SDK (bridge JS↔native)packages/methods: package Sparkling methods built-in (Navigation, Storage, Media)packages/sparkling-app-cli: CLI build và chạy ứng dụng Sparklingpackages/create-sparkling-app: CLI scaffolding ứng dụngpackages/sparkling-method-cli: công cụ codegen cho Sparkling Methodpackages/sparkling-types: gom định nghĩa kiểu GlobalProps vào một package duy nhấtpackages/playground: ứng dụng Playground cho phát triển cục bộ
Tech stack và môi trường
- Môi trường Node.js ^22 || ^24, pnpm v10.26.0
- Android: yêu cầu JDK 11 trở lên, SDK android-34
- iOS: cần Xcode 16+, Ruby ≥2.7 <3.4, CocoaPods
- Cấu hình đa ngôn ngữ gồm TypeScript, Swift, Kotlin, JavaScript
- Giấy phép Apache 2.0
1 bình luận
Lynx - công cụ phát triển ứng dụng native dựa trên công nghệ web - GeekNews
Lynx - 웹 기술 기반 네이티브 앱 개발 도구
Không thấy xuất hiện trong mục các bài viết nên xem cùng.