北京網(wǎng)站關(guān)鍵詞優(yōu)化全國(guó)前十名校程序開發(fā)公司
鶴壁市浩天電氣有限公司
2026/01/22 10:20:04
北京網(wǎng)站關(guān)鍵詞優(yōu)化,全國(guó)前十名校程序開發(fā)公司,家具網(wǎng)站設(shè)計(jì)方案,wordpress放到哪里文章目錄
一. 什么是微前端二. 微前端的優(yōu)勢(shì)三. 微前端的多種實(shí)現(xiàn) 3.1 iframe iframe子窗口調(diào)用父窗口的方法iframe父窗口調(diào)用子窗口方法iframe子窗口向父窗口通信iframe的父窗口傳遞參數(shù)給子窗口 3.2 服務(wù)端模板組合3.3 微前端框架 single-spa3.4 微前端框架 qiankun3.5 微前…文章目錄一. 什么是微前端二. 微前端的優(yōu)勢(shì)三. 微前端的多種實(shí)現(xiàn)3.1 iframeiframe子窗口調(diào)用父窗口的方法iframe父窗口調(diào)用子窗口方法iframe子窗口向父窗口通信iframe的父窗口傳遞參數(shù)給子窗口3.2 服務(wù)端模板組合3.3 微前端框架 single-spa3.4 微前端框架 qiankun3.5 微前端microApp一. 什么是微前端“微前端架構(gòu)”就是構(gòu)建基于微服務(wù)的前端應(yīng)用架構(gòu)。其思想是將前端應(yīng)用切分為一系列可以單獨(dú)部署的松耦合的應(yīng)用然后將這些應(yīng)用組裝起來創(chuàng)建單個(gè)面向用戶的應(yīng)用程序。二. 微前端的優(yōu)勢(shì)降低代碼耦合獨(dú)立開發(fā)、獨(dú)立部署增量升級(jí)微前端是一種非常好的實(shí)施漸進(jìn)式重構(gòu)的手段和策略獨(dú)立運(yùn)行時(shí)每個(gè)微應(yīng)用之間狀態(tài)隔離運(yùn)行時(shí)狀態(tài)不共享團(tuán)隊(duì)可以按照業(yè)務(wù)垂直拆分更高效三. 微前端的多種實(shí)現(xiàn)3.1 iframeiframe天然具備微前端的基因。我們只需將單體的前端應(yīng)用按照業(yè)務(wù)模塊進(jìn)行拆分分別部署。最后通過iframe進(jìn)行動(dòng)態(tài)加載即可。html head title微前端-ifame/title /head body h1我是容器/h1 iframe idmfeLoader/iframe script typetext/javascript const routes { /: https://app.com/index.html, /app1: https://app1.com/index.html, /app2: https://app2.com/index.html, }; const iframe document.querySelector(#mfeLoader); iframe.src routes[window.location.pathname]; /script /body /html優(yōu)點(diǎn)實(shí)現(xiàn)簡(jiǎn)單天然具備隔離性缺點(diǎn)主頁面和 iframe 共享最大允許的 HTTP 鏈接數(shù)。iframe 阻塞主頁面加載。瀏覽器的后退按鈕無效iframe子窗口調(diào)用父窗口的方法在iframe的頁面中通過JavaScript編寫代碼來調(diào)用父組件的方法??梢允褂脀indow.parent或window.top來引用父窗口對(duì)象然后調(diào)用父窗口的方法。例如假設(shè)父組件中有一個(gè)名為handleClick的方法可以在iframe的頁面中使用以下代碼來調(diào)用它window.parent.handleClick(); // 或者 window.top.handleClick();iframe父窗口調(diào)用子窗口方法在父窗口中通過JavaScript獲取iframe的引用然后使用contentWindow屬性訪問子窗口的對(duì)象var iframe document.getElementById(myIframe); var childWindow iframe.contentWindow; childWindow.handleClick();iframe子窗口向父窗口通信postMessage用于在不同的域之間發(fā)送消息。它允許你發(fā)送消息到父窗口并接收來自父窗口的消息。在 iframe 中window.parent.postMessage(Hello from iframe!, http://example.com);在父窗口中window.addEventListener(message, function(event) { if (event.origin ! http://example.com) return; // 驗(yàn)證消息來源 console.log(Received message from iframe:, event.data); }, false);iframe的父窗口傳遞參數(shù)給子窗口方法一父窗口可以使用window.postMessage方法向子窗口發(fā)送消息var iframe document.getElementById(myIframe); iframe.contentWindow.postMessage(Hello from parent!, *);在子窗口中可以使用以下代碼監(jiān)聽消息window.addEventListener(message, function(event) { if (event.origin ! http://example.com) return; // 驗(yàn)證消息來源 console.log(Received message from parent:, event.data); }, false);方法二使用URL查詢參數(shù)如果父窗口和子窗口處于同一域下并且沒有跨域限制父窗口可以通過修改iframe的src屬性將參數(shù)作為URL查詢參數(shù)傳遞給子窗口。在父窗口中可以使用以下代碼將參數(shù)作為URL查詢參數(shù)傳遞給子窗口var iframe document.getElementById(myIframe); iframe.src child.html?param1value1param2value2;在子窗口中可以通過JavaScript獲取URL查詢參數(shù)var param1 getUrlParam(param1); // 獲取URL查詢參數(shù)的方法可以根據(jù)實(shí)際情況實(shí)現(xiàn) var param2 getUrlParam(param2); // 獲取URL查詢參數(shù)的方法可以根據(jù)實(shí)際情況實(shí)現(xiàn)3.2 服務(wù)端模板組合常見的實(shí)現(xiàn)方式是服務(wù)端根據(jù)路由動(dòng)態(tài)渲染特定頁面的模板文件。架構(gòu)圖如下優(yōu)點(diǎn)實(shí)現(xiàn)簡(jiǎn)單技術(shù)棧獨(dú)立缺點(diǎn)需要額外配置 Nginx前后端分離不徹底3.3 微前端框架 single-spa借助single-spa開發(fā)者可以為不同的子應(yīng)用使用不同的技術(shù)棧比如子應(yīng)用 A 使用vue開發(fā)子應(yīng)用 B 使用react開發(fā)完全沒有歷史債務(wù)。single-spa 的實(shí)現(xiàn)原理并不難從架構(gòu)上來講可以分為兩部分子應(yīng)用和容器應(yīng)用。子應(yīng)用與傳統(tǒng)的單頁應(yīng)用的區(qū)別在于不需要 HTML 入口文件js 入口文件導(dǎo)出的模塊必須包括 bootstrap、mount 和 unmount 三個(gè)方法。容器應(yīng)用主要負(fù)責(zé)注冊(cè)應(yīng)用當(dāng) url 命中子應(yīng)用的路由時(shí)激活并掛載子應(yīng)用或者當(dāng)子應(yīng)用不處于激活狀態(tài)時(shí)將子應(yīng)用從頁面中移除卸載。其核心方法有兩個(gè)registerApplication注冊(cè)并下載子應(yīng)用start啟動(dòng)處于激活狀態(tài)的子應(yīng)用。容器應(yīng)用代碼html body script srcsingle-spa-config.js/script /body /htmlsingle-spa-config.js代碼如下import * as singleSpa from single-spa; const appName app1; const app1Url http://app1.com/app1.js // loadJS 方法是偽代碼表示加載 app1.js。開發(fā)者需要自己實(shí)現(xiàn)或者借助 systemJS 來實(shí)現(xiàn)。 singleSpa.registerApplication(app1,() loadJS(app1Url), location location.pathname.startsWith(/app1)) singleSpa.start();子應(yīng)用代碼//app1.js let domEl; export function bootstrap(props) { return Promise .resolve() .then(() { domEl document.createElement(div); domEl.id app1; document.body.appendChild(domEl); }); } export function mount(props) { return Promise .resolve() .then(() { domEl.textContent App 1 is mounted! }); } export function unmount(props) { return Promise .resolve() .then(() { domEl.textContent ; }) }優(yōu)點(diǎn)純前端解決方案可以使用多種技術(shù)棧完善的生態(tài)缺點(diǎn)上手成本高需要改造現(xiàn)有應(yīng)用跨應(yīng)用的聯(lián)調(diào)變得復(fù)雜3.4 微前端框架 qiankunqiankun是一個(gè)基于single-spa的微前端實(shí)現(xiàn)庫旨在幫助大家能更簡(jiǎn)單、無痛的構(gòu)建一個(gè)生產(chǎn)可用微前端架構(gòu)系統(tǒng)。在主應(yīng)用中注冊(cè)微應(yīng)用import { registerMicroApps, start } from qiankun; registerMicroApps([ { name: react app, // app name registered entry: //localhost:7100, container: #yourContainer, activeRule: /yourActiveRule, }, { name: vue app, entry: { scripts: [//localhost:7100/main.js] }, container: #yourContainer2, activeRule: /yourActiveRule2, }, ]); start();當(dāng)微應(yīng)用信息注冊(cè)完之后一旦瀏覽器的 url 發(fā)生變化便會(huì)自動(dòng)觸發(fā) qiankun 的匹配邏輯所有 activeRule 規(guī)則匹配上的微應(yīng)用就會(huì)被插入到指定的 container 中同時(shí)依次調(diào)用微應(yīng)用暴露出的生命周期鉤子。微應(yīng)用需要在自己的入口 js (通常就是你配置的 webpack 的 entry js) 導(dǎo)出bootstrap、mount、unmount三個(gè)生命周期鉤子以供主應(yīng)用在適當(dāng)?shù)臅r(shí)機(jī)調(diào)用。/** * bootstrap 只會(huì)在微應(yīng)用初始化的時(shí)候調(diào)用一次下次微應(yīng)用重新進(jìn)入時(shí)會(huì)直接調(diào)用 mount 鉤子不會(huì)再重復(fù)觸發(fā) bootstrap。 * 通常我們可以在這里做一些全局變量的初始化比如不會(huì)在 unmount 階段被銷毀的應(yīng)用級(jí)別的緩存等。 */ export async function bootstrap() { console.log(react app bootstraped); } /** * 應(yīng)用每次進(jìn)入都會(huì)調(diào)用 mount 方法通常我們?cè)谶@里觸發(fā)應(yīng)用的渲染方法 */ export async function mount(props) { ReactDOM.render(App /, props.container ? props.container.querySelector(#root) : document.getElementById(root)); } /** * 應(yīng)用每次 切出/卸載 會(huì)調(diào)用的方法通常在這里我們會(huì)卸載微應(yīng)用的應(yīng)用實(shí)例 */ export async function unmount(props) { ReactDOM.unmountComponentAtNode( props.container ? props.container.querySelector(#root) : document.getElementById(root), ); } /** * 可選生命周期鉤子僅使用 loadMicroApp 方式加載微應(yīng)用時(shí)生效 */ export async function update(props) { console.log(update props, props); }優(yōu)點(diǎn)簡(jiǎn)單qiankun 對(duì)于用戶而言只是一個(gè)類似 jQuery 的庫你需要調(diào)用幾個(gè) qiankun 的 API 即可完成應(yīng)用的微前端改造解耦/技術(shù)棧無關(guān)完善的生態(tài)缺點(diǎn)上手成本高需要改造現(xiàn)有應(yīng)用跨應(yīng)用的聯(lián)調(diào)變得復(fù)雜3.5 微前端microAppmain.ts中初始化micro-app和相關(guān)配置/** * micro-app 微前端 */ import microApp from micro-zoe/micro-app; microApp.start({ disable-memory-router: true, // 關(guān)閉虛擬路由系統(tǒng) disable-patch-request: true, // 關(guān)閉對(duì)子應(yīng)用請(qǐng)求的攔截 lifeCycles: { created() { // console.log(created); }, beforemount() { // console.log(beforemount); }, mounted() { console.log(fst, performance.now().toFixed()); // 首屏?xí)r間 // console.log(mounted); }, unmount() { console.log(unmount); }, error(e) { Sentry.captureException(new Error(主站Error:生命周期錯(cuò)誤), { level: error, extra: { ...e } }); } } }); microApp.router.setBaseAppRouter(router); microApp.router.beforeEach({ micoro-app-homeweb-app: (to, from) { const toQuery qs.parse(to.search, { ignoreQueryPrefix: true }); const fromQuery qs.parse(from.search, { ignoreQueryPrefix: true }); if ( toQuery.type ! fromQuery.type || (from.pathname /search fromQuery.threadId !toQuery.threadId toQuery.type chat) ) { // 設(shè)置全局ref savePageRef(to.fullPath); } else if (to.pathname /search toQuery.type chat toQuery.threadId) { const BASE_URL (import.meta as any).env.VITE_HOST; sessionStorage.setItem(ref, BASE_URL to.fullPath); } else { savePageRef(to.fullPath); } } }); microApp.router.afterEach({ micoro-app-homeweb-app: (to, from) { const names { /: 首頁, /search: 搜索, /g-star: g-star, /g-star/apply: g-star 申請(qǐng), /explore: 搜索開源 }; const toQuery qs.parse(to.search, { ignoreQueryPrefix: true }); if (to.pathname /search toQuery.type ! repo) { // 對(duì)話有threadid后上報(bào) if (toQuery.threadId) useReport(pageview, {}, { homeweb-page-title: names[to.pathname] }); } else { useReport(pageview, {}, { homeweb-page-title: names[to.pathname] }); } } });路由中添加micorApp名稱{ path: /, component: DefaultLayout, children: [ { path: , name: home, component: () import(/views/micro-page/proxy-homeweb.vue), meta: { micorApp: [micoro-app-homeweb-app], hasMobile: true, hiddenFooter: true, reportTitle: 首頁, className: w-full min-w-full, headerClassName: } }, ... ] }Layout.vue中添加相關(guān)路由守衛(wèi)和監(jiān)聽器microApp.router.afterEach({ micoro-app-homeweb-app: (to, from) { outOfSearch.value to.pathname ! /search; } }); const checkPage (data: any) { if (data.type checkPage) { return ready; } }; onMounted(() { microApp.addDataListener(micoro-app-homeweb-app, checkPage, false); }); onUnmounted(() { microApp.removeDataListener(micoro-app-homeweb-app, checkPage); });頁面中加載微應(yīng)用template div idhomeweb-container/div /template onMounted(() { toolbarContain.value document.getElementById(toolbarBottom); microApp.renderApp({ name: micoro-app-homeweb-app, url: origin, container: #homeweb-container, data: { emitter, toolbarContain, $router: router }, iframe: true, baseroute: /, defaultPtah: route.path }); }); onBeforeUnmount(() { microApp.unmountApp(micoro-app-homeweb-app); });這是前端程序員在某紅薯平臺(tái)自述前端被裁的真實(shí)經(jīng)歷2025開年AI技術(shù)打得火熱正在改變前端人的職業(yè)命運(yùn)阿里云核心業(yè)務(wù)全部接入Agent體系字節(jié)跳動(dòng)30%前端崗位要求大模型開發(fā)能力騰訊、京東、百度開放招聘技術(shù)崗80%與AI相關(guān)……大模型正在重構(gòu)技術(shù)開發(fā)范式傳統(tǒng)CRUD開發(fā)模式正在被AI原生應(yīng)用取代最殘忍的是業(yè)務(wù)面臨轉(zhuǎn)型領(lǐng)導(dǎo)要求用RAG優(yōu)化知識(shí)庫檢索你不會(huì)帶AI團(tuán)隊(duì)微調(diào)大模型要準(zhǔn)備多少數(shù)據(jù)你不懂想轉(zhuǎn)型大模型應(yīng)用開發(fā)工程師等相關(guān)崗沒項(xiàng)目實(shí)操經(jīng)驗(yàn)……這不是技術(shù)焦慮而是職業(yè)生存危機(jī)曾經(jīng)React、Vue等熱門的開發(fā)框架已不再是就業(yè)的金鑰匙。如果認(rèn)為會(huì)調(diào)用API就是懂大模型、能進(jìn)行二次開發(fā)那就大錯(cuò)特錯(cuò)了。制造、醫(yī)療、金融等各行業(yè)都在加速AI應(yīng)用落地未來企業(yè)更看重能用AI大模型技術(shù)重構(gòu)業(yè)務(wù)流的技術(shù)人。如今技術(shù)圈降薪裁員頻頻爆發(fā)傳統(tǒng)崗位大批縮水相反AI相關(guān)技術(shù)崗瘋狂擴(kuò)招薪資逆勢(shì)上漲150%大廠老板們甚至開出70-100W年薪挖掘AI大模型人才不出1年 “有AI項(xiàng)目開發(fā)經(jīng)驗(yàn)”或?qū)⒊蔀榍岸巳送哆f簡(jiǎn)歷的門檻。風(fēng)口之下與其像“溫水煮青蛙”一樣坐等被行業(yè)淘汰不如先人一步掌握AI大模型原理應(yīng)用技術(shù)項(xiàng)目實(shí)操經(jīng)驗(yàn)“順風(fēng)”翻盤大模型目前在人工智能領(lǐng)域可以說正處于一種“炙手可熱”的狀態(tài)吸引了很多人的關(guān)注和興趣也有很多新人小白想要學(xué)習(xí)入門大模型那么如何入門大模型呢下面給大家分享一份2025最新版的大模型學(xué)習(xí)路線幫助新人小白更系統(tǒng)、更快速的學(xué)習(xí)大模型2025最新版CSDN大禮包《AGI大模型學(xué)習(xí)資源包》免費(fèi)分享**一、2025最新大模型學(xué)習(xí)路線一個(gè)明確的學(xué)習(xí)路線可以幫助新人了解從哪里開始按照什么順序?qū)W習(xí)以及需要掌握哪些知識(shí)點(diǎn)。大模型領(lǐng)域涉及的知識(shí)點(diǎn)非常廣泛沒有明確的學(xué)習(xí)路線可能會(huì)導(dǎo)致新人感到迷茫不知道應(yīng)該專注于哪些內(nèi)容。我們把學(xué)習(xí)路線分成L1到L4四個(gè)階段一步步帶你從入門到進(jìn)階從理論到實(shí)戰(zhàn)。L1級(jí)別:AI大模型時(shí)代的華麗登場(chǎng)L1階段我們會(huì)去了解大模型的基礎(chǔ)知識(shí)以及大模型在各個(gè)行業(yè)的應(yīng)用和分析學(xué)習(xí)理解大模型的核心原理關(guān)鍵技術(shù)以及大模型應(yīng)用場(chǎng)景通過理論原理結(jié)合多個(gè)項(xiàng)目實(shí)戰(zhàn)從提示工程基礎(chǔ)到提示工程進(jìn)階掌握Prompt提示工程。L2級(jí)別AI大模型RAG應(yīng)用開發(fā)工程L2階段是我們的AI大模型RAG應(yīng)用開發(fā)工程我們會(huì)去學(xué)習(xí)RAG檢索增強(qiáng)生成包括Naive RAG、Advanced-RAG以及RAG性能評(píng)估還有GraphRAG在內(nèi)的多個(gè)RAG熱門項(xiàng)目的分析。L3級(jí)別大模型Agent應(yīng)用架構(gòu)進(jìn)階實(shí)踐L3階段大模型Agent應(yīng)用架構(gòu)進(jìn)階實(shí)現(xiàn)我們會(huì)去學(xué)習(xí)LangChain、 LIamaIndex框架也會(huì)學(xué)習(xí)到AutoGPT、 MetaGPT等多Agent系統(tǒng)打造我們自己的Agent智能體同時(shí)還可以學(xué)習(xí)到包括Coze、Dify在內(nèi)的可視化工具的使用。L4級(jí)別大模型微調(diào)與私有化部署L4階段大模型的微調(diào)和私有化部署我們會(huì)更加深入的探討Transformer架構(gòu)學(xué)習(xí)大模型的微調(diào)技術(shù)利用DeepSpeed、Lamam Factory等工具快速進(jìn)行模型微調(diào)并通過Ollama、vLLM等推理部署框架實(shí)現(xiàn)模型的快速部署。整個(gè)大模型學(xué)習(xí)路線L1主要是對(duì)大模型的理論基礎(chǔ)、生態(tài)以及提示詞他的一個(gè)學(xué)習(xí)掌握而L3 L4更多的是通過項(xiàng)目實(shí)戰(zhàn)來掌握大模型的應(yīng)用開發(fā)針對(duì)以上大模型的學(xué)習(xí)路線我們也整理了對(duì)應(yīng)的學(xué)習(xí)視頻教程和配套的學(xué)習(xí)資料。二、大模型經(jīng)典PDF書籍書籍和學(xué)習(xí)文檔資料是學(xué)習(xí)大模型過程中必不可少的我們精選了一系列深入探討大模型技術(shù)的書籍和學(xué)習(xí)文檔它們由領(lǐng)域內(nèi)的頂尖專家撰寫內(nèi)容全面、深入、詳盡為你學(xué)習(xí)大模型提供堅(jiān)實(shí)的理論基礎(chǔ)。書籍含電子版PDF三、大模型視頻教程對(duì)于很多自學(xué)或者沒有基礎(chǔ)的同學(xué)來說書籍這些純文字類的學(xué)習(xí)教材會(huì)覺得比較晦澀難以理解因此我們提供了豐富的大模型視頻教程以動(dòng)態(tài)、形象的方式展示技術(shù)概念幫助你更快、更輕松地掌握核心知識(shí)。四、大模型項(xiàng)目實(shí)戰(zhàn)學(xué)以致用當(dāng)你的理論知識(shí)積累到一定程度就需要通過項(xiàng)目實(shí)戰(zhàn)在實(shí)際操作中檢驗(yàn)和鞏固你所學(xué)到的知識(shí)同時(shí)為你找工作和職業(yè)發(fā)展打下堅(jiān)實(shí)的基礎(chǔ)。五、大模型面試題面試不僅是技術(shù)的較量更需要充分的準(zhǔn)備。在你已經(jīng)掌握了大模型技術(shù)之后就需要開始準(zhǔn)備面試我們將提供精心整理的大模型面試題庫涵蓋當(dāng)前面試中可能遇到的各種技術(shù)問題讓你在面試中游刃有余。因篇幅有限僅展示部分資料需要點(diǎn)擊下方鏈接即可前往獲取2025最新版CSDN大禮包《AGI大模型學(xué)習(xí)資源包》免費(fèi)分享