《Python Web部署應知應會》Flask網站隱藏或改變瀏覽器URL:從Nginx反向代理到URL重寫技術

Flask網站隱藏或改變瀏覽器顯示URL地址的實現方案:從Nginx反向代理到URL重寫技術

引言

在Web應用開發中,URL路徑的安全性往往被忽視,這可能導致網站結構和后端邏輯被攻擊者輕易推斷。對于Flask框架開發的網站,如何隱藏或改變瀏覽器顯示的URL地址,避免暴露真實的路徑結構,成為一個重要的安全考量。本研究報告將深入探討多種實現方案,從Nginx反向代理到URL重寫技術,為Flask開發者提供全面的解決方案。
在這里插入圖片描述

URL隱藏的必要性

隱藏網站真實路徑結構有以下幾個重要原因:

  1. 增強安全性:隱藏內部目錄結構,防止攻擊者通過分析URL推斷網站架構[1]
  2. 提高SEO效果:優化URL結構,提升搜索引擎排名[9]
  3. 改善用戶體驗:提供更簡潔、友好的URL展示,提升用戶感知[15]

在這里插入圖片描述

實現方案一:使用Nginx反向代理

Nginx是一個高性能的HTTP服務器和反向代理服務器,可以有效地隱藏Flask應用的真實路徑。

基本原理

反向代理服務器(如Nginx)位于客戶端和Flask應用之間,接收客戶端請求并將其轉發到內部服務器。從客戶端的角度來看,它就像一個普通的Web服務器,但客戶端對反向代理是無感知的,因為不需要任何特殊配置[23]。
反向代理的主要優勢包括:

  • 隱藏服務器信息
  • 解決跨域問題
  • 保證內網安全[25]
  • 提供負載均衡
  • 基于高級URL策略管控服務[29]

Nginx配置示例

以下是一個基本的Nginx配置示例,用于反向代理Flask應用:

server {listen 80;server_name example.com;location / {proxy_pass http://localhost:5000; # Flask應用運行在5000端口proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

這個配置將所有對example.com的請求轉發到本地運行在5000端口的Flask應用,而用戶瀏覽器只會顯示example.com的URL,看不到真實的5000端口[22]。

路徑映射配置

當需要將不同的URL路徑映射到不同的后端服務時,可以使用location指令:

server {listen 80;server_name example.com;# 將/api開頭的請求轉發到Flask應用location /api {proxy_pass http://localhost:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 將/static開頭的請求直接返回靜態文件location /static {alias /path/to/static/files;}
}

這種配置方式允許Nginx作為入口,只開放一個端口,按照path前綴代理到不同應用,其中以特定前綴開頭的請求代理到Flask應用[57]。

隱藏服務器信息

通過Nginx反向代理,可以有效隱藏服務器信息:

server {listen 80;server_name example.com;# 關閉服務器token信息server_tokens off;location / {proxy_pass http://localhost:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 關閉代理重定向proxy_redirect off;}
}

server_tokens off指令可以隱藏Nginx版本信息,proxy_redirect off則可以防止Nginx自動重寫Location頭信息,進一步隱藏服務器信息[25]。

實現方案二:URL重寫技術

URL重寫是另一種隱藏真實路徑的有效方法,它可以將瀏覽器顯示的URL與服務器內部處理的路徑映射到不同的路徑。

基本原理

URL重寫是一種用于修改網站URL結構或改變URL路徑的技術。它允許網站管理員修改URL的外觀,使其更加友好、可讀,并且有助于改善網站的搜索引擎優化(SEO)[15]。
通過URL重寫,可以:

  • 隱藏真實路徑:隱藏內部目錄結構,增加安全性[1]
  • 優化URL結構:使URL更加簡潔、有意義
  • 提升用戶體驗:提供更友好的URL導航

Nginx中的URL重寫

Nginx提供了強大的URL重寫功能,可以實現復雜的URL映射規則:

server {listen 80;server_name example.com;# 使用rewrite指令重寫URLrewrite ^/old_path/(.*) /new_path/$1 permanent;location /new_path {proxy_pass http://localhost:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

這個配置將/old_path路徑重寫為/new_path,然后將請求轉發到Flask應用[15]。

正則表達式匹配

Nginx的rewrite規則采用PCRE(Perl兼容正則表達式)語法進行匹配,提供了強大的URL匹配能力:

server {listen 80;server_name example.com;# 使用正則表達式匹配特定模式的URLrewrite ^/articles/([0-9]+)$ /api/article?id=$1 last;rewrite ^/articles/([0-9]+)/comments$ /api/article_comments?id=$1 last;location /api {proxy_pass http://localhost:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

這個配置將/articles/123這樣的URL重寫為/api/article?id=123,將/articles/123/comments重寫為/api/article_comments?id=123,然后將請求轉發到Flask應用[61]。

隱藏真實文件路徑

使用URL重寫可以隱藏服務器上的真實文件路徑和目錄結構,防止攻擊者通過直接訪問文件路徑來獲取敏感信息:

server {listen 80;server_name example.com;# 隱藏真實路徑,使用友好URLrewrite ^/products/([0-9a-zA-Z]+)$ /products.php?id=$1 last;rewrite ^/products/([0-9a-zA-Z]+)/reviews$ /reviews.php?product_id=$1 last;location / {proxy_pass http://localhost:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

這個配置將/products/iphone14這樣的URL重寫為/products.php?id=iphone14,然后將請求轉發到Flask應用[37]。

重寫標志

Nginx的rewrite指令可以使用多種標志來控制重寫行為:

rewrite regex replacement [flag];

常用的標志包括:

  • last:基本都用這個標志,表示重寫后繼續處理
  • break:中止重寫,不在繼續匹配
  • redirect:返回臨時重定向(302)
  • permanent:返回永久重定向(301)[59]

URL重寫的最佳實踐

在使用URL重寫時,應注意以下幾點:

  1. 保持一致性:確保重寫規則不會導致404錯誤
  2. 使用正則表達式:編寫高效的正則表達式,避免性能問題
  3. 測試配置:在生產環境中應用前,先測試配置
  4. 記錄日志:配置適當的日志記錄,便于調試和監控

實現方案三:Flask應用內部處理

除了使用Nginx反向代理和URL重寫,還可以在Flask應用內部處理URL隱藏和路徑映射。

使用查詢參數

一種簡單的方法是使用查詢參數來隱藏變量:

@app.route('/')
def index():# 使用查詢參數return redirect(url_for('show_article', article_id=123))@app.route('/article')
def show_article():article_id = request.args.get('article_id')# 處理article_idreturn f'Article {article_id}'

在這種情況下,URL會顯示為/article?article_id=123,而不是/article/123[5]。

使用自定義URL轉換器

Flask允許自定義URL轉換器,可以通過重寫to_pythonto_url方法來擴展其功能:

from flask import Flask, url_for
from werkzeug.routing import BaseConverter
app = Flask(__name__)
class ListConverter(BaseConverter):def to_python(self, value):return value.split(',')def to_url(self, values):return ','.join(map(str, values))
app.url_map.converters['list'] = ListConverter
@app.route('/post/<list:ids>')
def show_posts(ids):return f'Post IDs: {ids}'

在這種情況下,URL會顯示為/post/1,2,3,而不是顯示具體的路徑結構[12]。

使用URL重寫中間件

可以使用中間件來實現更復雜的URL重寫邏輯:

from flask import Flask, request, Response
app = Flask(__name__)
@app.before_request
def before_request():# 重寫特定的URL路徑if request.path.startswith('/old_path'):new_path = request.path.replace('/old_path', '/new_path', 1)return Response(status=301, headers={'Location': new_path})
if __name__ == '__main__':app.run()

這個中間件會將所有以/old_path開頭的請求重寫為/new_path,并返回301重定向[61]。

使用會話技術

如果瀏覽器不支持cookies,可以使用URL重寫的方式實現會話管理:

from flask import Flask, request, session, redirect, url_for
app = Flask(__name__)
app.secret_key = 'your-secret-key'
@app.route('/')
def index():if 'session_id' not in request.args:session['session_id'] = 'unique_session_id'return redirect(url_for('index', session_id=session['session_id']))return f'Welcome! Session ID: {request.args.get("session_id")}'

在這種情況下,URL會包含session_id參數,而不是存儲在cookies中[8]。

實現方案四:JWT令牌機制

JWT(JSON Web Token)是一種無狀態的認證機制,可以用來隱藏會話信息:

from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
@app.route('/login')
def login():# 創建JWT令牌token = jwt.encode({'user': 'username','exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)}, app.config['SECRET_KEY'])return jsonify({'token': token})
@app.route('/protected')
def protected():# 驗證JWT令牌token = request.args.get('token')try:data = jwt.decode(token, app.config['SECRET_KEY'])return f'Welcome {data["user"]}'except:return 'Could not verify your access level for that URL.', 401

在這種情況下,URL會包含token參數,而不是存儲在cookies中[5]。

實現方案五:前后端分離架構

在前后端分離架構中,前端和后端通過API交互,自然會隱藏后端的真實路徑:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/articles')
def get_articles():# 返回文章列表return jsonify([{'id': 1, 'title': 'First Article'},{'id': 2, 'title': 'Second Article'}])
@app.route('/api/articles/<int:id>')
def get_article(id):# 返回指定id的文章return jsonify({'id': id, 'title': f'Article {id}'})

在這種架構中,前端通過調用API獲取數據,而不是直接訪問HTML頁面,自然會隱藏后端的真實路徑[17]。

綜合解決方案

結合上述各種方法,可以創建一個全面的URL隱藏和路徑映射方案:

# Nginx配置
server {listen 80;server_name example.com;server_tokens off;# 靜態資源直接返回location /static {alias /path/to/static/files;expires 30d;}# API請求轉發到Flask應用location /api {rewrite ^/api/?(.*) /$1 break;proxy_pass http://localhost:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_redirect off;}# 前端路由location / {root /path/to/frontend;index index.html;# 處理前端路由try_files $uri $uri/ /index.html;}
}
# Flask應用配置
from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
@app.route('/api/articles')
def get_articles():# 返回文章列表return jsonify([{'id': 1, 'title': 'First Article'},{'id': 2, 'title': 'Second Article'}])
@app.route('/api/articles/<int:id>')
def get_article(id):# 返回指定id的文章return jsonify({'id': id, 'title': f'Article {id}'})
// 前端代碼
fetch(`/api/articles?token=${token}`).then(response => response.json()).then(data => console.log(data));

這個綜合方案結合了Nginx反向代理、URL重寫、前后端分離架構和JWT令牌機制,提供了多層次的URL隱藏和路徑映射能力。

性能考慮

在實現URL隱藏和路徑映射時,需要注意以下性能考慮:

  1. 緩存配置:對于靜態資源,可以配置Nginx緩存,減少對后端的請求[19]
  2. 負載均衡:對于高流量應用,可以配置Nginx的負載均衡功能,分擔流量[51]
  3. 連接池:使用連接池管理后端連接,提高性能
  4. 壓縮和緩存:配置Nginx壓縮和緩存,減少傳輸數據量

安全考慮

在實現URL隱藏和路徑映射時,還需要考慮以下安全問題:

  1. CSRF保護:配置適當的CSRF保護機制
  2. XSS防護:對用戶輸入進行驗證和轉義
  3. 授權控制:實現細粒度的授權控制
  4. 日志記錄:配置適當的日志記錄,便于審計和監控

結論

隱藏或改變Flask網站瀏覽器顯示的URL地址,避免暴露真實的路徑,是提升網站安全性和用戶體驗的重要措施。本研究報告探討了多種實現方案,包括Nginx反向代理、URL重寫技術、Flask內部處理、JWT令牌機制和前后端分離架構,并提供了具體的配置示例和最佳實踐。
根據具體需求,可以選擇適合的方案或組合多種方案,創建全面的URL隱藏和路徑映射策略。在實施過程中,需要綜合考慮性能和安全因素,確保網站的穩定性和安全性。

參考文獻

[1] 采用URL訪問資源,隱藏真實地址原創 - CSDN博客. https://blog.csdn.net/jianfpeng241241/article/details/44700683.
[5] 如何從flask url路由中隱藏變量? - 騰訊云開發者社區. https://cloud.tencent.com.cn/developer/information/%E5%A6%82%E4%BD%95%E4%BB%8Eflask%20url%E8%B7%AF%E7%94%B1%E4%B8%AD%E9%9A%90%E8%97%8F%E5%8F%98%E9%87%8F%EF%BC%9F-salon.
[8] flask session知識的相關收集原創 - CSDN博客. https://blog.csdn.net/qq_29996285/article/details/81943826.
[9] Url重寫隱藏網頁路徑技術 - 博客園. https://www.cnblogs.com/hyh749/p/17631490.html.
[12] flask路由和重寫轉換器原創 - CSDN博客. https://blog.csdn.net/qq_41056152/article/details/102781265.
[15] Nginx:URL重寫(示意圖+舉例+配置講解) 原創 - CSDN博客. https://blog.csdn.net/lifetime_gear/article/details/133822760.
[17] Nginx 反向代理重寫URL - ZHHBSTUDIO. https://zhhb.studio/posts/Nginx-proxy_pass/.
[19] Nginx反代服務器進階學習最佳配置實踐指南 - 博客園. https://www.cnblogs.com/hahaha111122222/p/16453638.html.
[22] flask部署到nginx_flask部署404-騰訊云開發者社區. https://cloud.tencent.com/developer/article/2131863.
[23] Nginx使用總結- 夏夜星空晚風 - 博客園. https://www.cnblogs.com/wanghuizhao/p/17179918.html.
[25] Nginx配置反向代理隱藏服務器信息并解決跨域問題! 原創 - CSDN博客. https://blog.csdn.net/wyh757787026/article/details/105953976.
[29] 反向代理 - 正心全棧編程-文檔站. https://docs.zhengxinonly.com/devops/04.nginx/04.reverse-proxy.html.
[37] Nginx rewrite地址重寫(十個例子詳細解析) 原創 - CSDN博客. https://blog.csdn.net/m0_62396418/article/details/135747521.
[51] Nginx配置反向代理隱藏服務器信息并解決跨域問題! 原創 - CSDN博客. https://blog.csdn.net/wyh757787026/article/details/105953976.
[57] nginx 反向代理到前后不分離的python應用原創 - CSDN博客. https://blog.csdn.net/qq_43024789/article/details/140130853.
[59] Nginx反代服務器進階學習最佳配置實踐指南 - 博客園. https://www.cnblogs.com/hahaha111122222/p/16453638.html.
[61] nginx之旅(第五篇):URL重寫介紹 - 博客園. https://www.cnblogs.com/Nicholas0707/p/12210551.html.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78929.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

elementui里的el-tabs的內置樣式修改失效?

1.問題圖 紅框里的是組件的內置樣式&#xff0c;紅框下的是自定義樣式 2.分析 2.1scoped vue模板編譯器在編譯有scoped的stye標簽時&#xff0c;會生成對應的postCSS插件&#xff0c;該插件會給每個scoped標記的style標簽模塊&#xff0c;生成唯一一個對應的 data-v-xxxhash…

大數據測試集群環境部署

Hadoop大數據集群搭建&#xff08;超詳細&#xff09;_hadoop_小飛飛519-GitCode 開源社區 hadoop集群一之虛擬機安裝(mac)_hadoop_皮皮蝦不皮呀-華為開發者空間 hadoop集群二之hadoop安裝_hadoop_皮皮蝦不皮呀-華為開發者空間 虛擬機如何查看gateway | PingCode智庫

Nginx 核心功能筆記

目錄 一、Nginx 簡介 二、核心功能詳解 三、關鍵指令解析 四、性能優化要點 五、常見應用場景 一、Nginx 簡介 定位 高性能的 HTTP/反向代理服務器&#xff0c;同時支持郵件協議代理&#xff08;IMAP/POP3/SMTP&#xff09;。采用 事件驅動、異步非阻塞 架構&#xff0c;…

強化學習(二)馬爾科夫決策過程(MDP)

1. 簡介 馬爾可夫決策過程正式地描述了強化學習的環境其中環境是完全可觀測的即當前狀態完全表征了這個過程幾乎所有的強化學習問題都可以形式化為馬爾可夫決策過程&#xff0c;例如&#xff1a; 最優控制主要處理連續的馬爾可夫決策過程部分可觀察的問題可以轉化為馬爾可夫決…

Day16(貪心算法)——LeetCode45.跳躍游戲II763.劃分字母區間

1 LeetCode45.跳躍游戲II 1.1 題目描述 與跳躍游戲類似&#xff0c;跳躍游戲II給定長為n的從0開始索引的整數數組nums&#xff0c;nums[i]是你在i處能向右跳躍的最大步數&#xff0c;求到達數組最后一個索引處需要跳躍的最少次數。 ??一個示例&#xff1a;nums[2,3,1,1,4]&a…

告別碎片化!兩大先進分塊技術如何提升RAG的語義連貫性?

研究動機 論文核心問題及研究背景分析 1. 研究領域及其重要性 研究領域&#xff1a;檢索增強生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;系統&#xff0c;結合自然語言處理&#xff08;NLP&#xff09;與信息檢索技術。重要性&#xff1a; RAG通過動態…

leetcode day37 474

474 一和零 給你一個二進制字符串數組 strs 和兩個整數 m 和 n 。 請你找出并返回 strs 的最大子集的長度&#xff0c;該子集中 最多 有 m 個 0 和 n 個 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 示例 1&#xff1a; 輸入&#xff1a;s…

二、信息時代社會結構的轉變

到了信息時代,以及在核武器的前提下,上述的社會結構的邏輯,就有了一個根 本性的轉變,就是暴力的成本和收益,都在下降。 暴力的成本在降低。比如說槍支,它的制造和分發都變得非常容易。現在我們都 知道有 3D 打印,它就好像工業時代的印刷機,印刷圣經或者書籍,使知識更加 普及和容…

Elasticsearch 堆內存使用情況和 JVM 垃圾回收

作者&#xff1a;來自 Elastic Kofi Bartlett 探索 Elasticsearch 堆內存使用情況和 JVM 垃圾回收&#xff0c;包括最佳實踐以及在堆內存使用過高或 JVM 性能不佳時的解決方法。 堆內存大小是分配給 Elasticsearch 節點中 Java 虛擬機的 RAM 數量。 從 7.11 版本開始&#xff…

C++之類和對象:構造函數,析構函數,拷貝構造,賦值運算符重載

前提&#xff1a;如果一個類是空類&#xff0c;C中空類中真的什么都沒有嗎&#xff0c;不是的&#xff0c;編譯器會自動生成6個默認成員函數。默認成員函數&#xff1a;用戶沒有顯式實現&#xff0c;編譯器會生成的成員函數稱為默認成員函數。 默認成員函數&#xff1a;構造函…

【專題五】位運算(1):常見位運算操作總結

&#x1f4dd;前言說明&#xff1a; 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄&#xff0c;按專題劃分每題主要記錄&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代碼&#xff1b;&#xff08;2&#xff09;優質解法 優質代碼&#xff1b;&#xff…

小草GrassRouter多卡聚合路由器聚合衛星、MESH網絡應用解決方案

一、多網融合解決方案 衛星網絡融合? 支持接入衛星通信模塊&#xff0c;在無地面網絡覆蓋的極端場景&#xff08;如偏遠山區、海洋救援&#xff09;下&#xff0c;形成“5G衛星”雙鏈路冗余傳輸&#xff0c;衛星鏈路可作為核心通信備份&#xff0c;確保關鍵指令和視頻數據實…

【Mybatis】Mybatis基礎

文章目錄 前言一、搭建MyBatis1.1 創建maven工程1.2 加入log4j日志功能1.3 MyBatis的增刪改查1.4 核心配置文件詳解 二、MyBatis獲取參數值的兩種方式2.1 單個字面量類型的參數2.2 多個字面量類型的參數2.3 map集合類型的參數2.4 實體類類型的參數2.5 使用Param標識參數 三、 M…

AI四大邊界

大模型訓練的邊界并非由單一因素決定&#xff0c;而是技術、倫理、法律及實際應用需求共同作用的結果。以下從四個維度解析其邊界來源&#xff1a; 一、技術邊界&#xff1a;資源與能力的雙重限制 計算資源瓶頸 成本與算力&#xff1a;大模型訓練依賴海量GPU/TPU資源&#xff…

Twitter 工作原理|架構解析|社交APP邏輯

這是對Twitter 工作原理&#xff5c;架構解析&#xff5c;社交APP邏輯_嗶哩嗶哩_bilibili的學習&#xff0c;感謝up小凡生一 在兩年半前&#xff0c;埃隆馬斯克收購了Twitter&#xff0c;并且進行了一系列重大改革。今天我們來解析一下這個全球知名社交平臺的架構。首先&#x…

Java基礎學習內容大綱

Java基礎學習內容大綱 第一階段:建立編程思想 ? Java概述:如何快速學習Java技術、Java歷史、Java特點、Sublime、Java運行機制、JDK、轉義字符、Java開發規范、Java API ? 變量:數據類型、變量基本使用、數據類型轉換 ? 運算符:運算符介紹、算數運算符、關系運算符、…

如何對多維樣本進行KS檢驗

對于形狀為 ( 10000 , 1 , 304 ) (10000, 1, 304) (10000,1,304)的三維數據&#xff0c;若需使用scipy.stats.ks_2samp進行KS檢驗&#xff0c;可按以下步驟處理&#xff1a; 數據降維 KS檢驗要求輸入為一維數組&#xff0c;需將三維數據展平或按特定維度聚合&#xff1a; ? 方…

在 VMware 虛擬機中安裝 Windows7

文章目錄 前言1.安裝VMware 虛擬機1. VMware虛擬機軟件安裝2. 虛擬機創建配置&#xff08;超詳細步驟&#xff09;3. Windows7系統安裝 3、安裝 VMware tools4. VMware Tools安裝與優化5. 總結與常見問題 前言 最近有不少朋友在問如何在電腦上同時使用多個操作系統&#xff0c…

直播預告|TinyVue 組件庫高級用法:定制你的企業級UI體系

TinyVue 是一個跨端跨框架的企業級 UI 組件庫&#xff0c;基于 renderless 無渲染組件設計架構&#xff0c;實現了一套代碼同時支持 Vue2 和 Vue3&#xff0c;支持 PC 和移動端&#xff0c;包含 100 多個功能豐富的精美組件&#xff0c;可幫助開發者高效開發 Web 應用。 4 月 …

分治而不割裂—分治協同式敏捷工作模式

分治而不割裂&#xff1a;解密敏捷協同工作模式如何驅動大企業持續領跑 在數字化浪潮中&#xff0c;亞馬遜僅用11天完成Prime Day全球技術架構升級&#xff0c;華為5G基站項目組創造過單周迭代47個功能模塊的紀錄&#xff0c;這些商業奇跡的背后&#xff0c;都隱藏著一個共性秘…