在基於vue-next-admin的Vue3+TypeScript前端項目中,為了使用方便全局掛載對象介面

来源:https://www.cnblogs.com/wuhuacong/archive/2023/03/23/17243300.html
-Advertisement-
Play Games

在基於vue-next-admin 的 Vue3+TypeScript 前端項目中,可以整合自己的 .NET 後端,前端操作一些功能的時候,為了使用方便全局掛載的對象介面,以便能夠快速處理一些特殊的操作,如消息提示、輔助函數、正則測試等等。本篇隨筆介紹在Vue3+TypeScript 前端項目中全局... ...


在基於vue-next-admin 的 Vue3+TypeScript 前端項目中,可以整合自己的 .NET 後端,前端操作一些功能的時候,為了使用方便全局掛載的對象介面,以便能夠快速處理一些特殊的操作,如消息提示、輔助函數、正則測試等等。本篇隨筆介紹在Vue3+TypeScript 前端項目中全局掛載對象$u,獲得相關 $u_interface 的統一入口的介面信息。這樣在組件或者頁面中就可以方便的使用便捷對象的相關處理方法了。

vue-next-admin 是一個不錯的後臺開源免費模板項目,可以利用它來開發自己的項目前端,它的技術棧是:vue3.x + setup 語法糖 + TypeScript + Vite + ElementPlus。

1、定義全局掛載對象的入口對象,以及相關的介面

我們知道,基於Typescrip的項目,在項目中都有一個Typescrip的配置文件tsconfig.json,其中對一些Typescrip的目錄或者設置進行設定。由於在VSCode載入項目的時候,會把項目相關的類型定義載入進來,因此我們可以在編碼的時候就有智能提示,它的配置在Include的配置項中。

通過通配符的匹配,可以自動載入對應的類型信息。

 這裡面可以按照作用分類不同的文件, 我們在這裡增加一個獨立的文件 $u.d.ts ,來設置我們定義掛載對象的介面類型信息。

另外我們打算的全局輔助類對象的信息,放在utils 目錄裡面,如下所示。

 為了方便在Vue3+TypeScript 前端項目中掛載對象,我編寫相關的代碼,提供一個install的組件安裝方法,給在main.ts中調用處理。

 在mian.ts中,使用use的方式實現掛載處理即可

 app.use($u);//掛載自定義的一些變數輔助類

對應的輔助類介面定義,統一放在全局的Types目錄的一個單獨的$u.d.ts文件中定義。

 例如我們定義常規彈出消息的函數介面如下所示。

//定義自定義類$u的介面類型
interface message_interface {
  Message(message: string): any;
  success(message: string): any;
  warn(message: string): any;
  error(message: string): any;
  confirm(message = '您確認刪除選定的記錄嗎?'): Promise<any>;
  notify(message: string, position: any = 'bottom-right', type: any = 'info'): any;
}

其他的一些介面定義,則進行組合處理即可。

 

 然後把各部分的介面進行統一組合即可。

 而我們最終的目的就是通過$u可以獲得相關 $u_interface 的介面信息即可。這樣在組件或者頁面中就可以通過引入使用全局掛載的便捷對象了。

import { $user } from '/@/utils/$u'; //使用簡便模式獲取註入全局變數u
let $u = $user(); //實例化

定義好後,我們就可以在頁面中進行調用統一的入口對象了,如下代碼所示。

import { $user } from '/@/utils/$u'; //使用簡便模式獲取註入全局變數u
let $u = $user(); //實例化
console.log($u.$t("message.router.home"));//測試$t變數

nextTick(() => {
    $u.message.notify('測試');
});

// 刪除
const delFile = (row: any) => {
    var tips = `確定刪除文件:【${row.fileName}】?`;
    $u.message.confirm(tips)
        .then(async () => {
            await fileApi.delete({ id: row.id });
            $u.message.success('刪除成功');
        })
        .catch(() => { });
};

 

頁面很多地方使用了基於Vue3+TypeScript的全局對象的註入處理。如一些信息提示,一些通用函數的調用等。

 

專註於代碼生成工具、.Net/.NetCore 框架架構及軟體開發,以及各種Vue.js的前端技術應用。著有Winform開發框架/混合式開發框架、微信開發框架、Bootstrap開發框架、ABP開發框架、SqlSugar開發框架等框架產品。
  轉載請註明出處:撰寫人:伍華聰  http://www.iqidi.com 
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ?問題 :如何添加token,解決鑒權問題 方案:通過登錄頁面,發送請求,獲取到token值,並把token值存儲(localStorage、sessionStorage、cookieStore),示例如下: <template> <el-form label-width="80px"> <el-f ...
  • 使用 glup 打包組件庫並實現按需載入 當我們使用 Vite 庫模式打包的時候,vite 會將樣式文件全部打包到同一個文件中,這樣的話我們每次都要全量引入所有樣式文件做不到按需引入的效果。所以打包的時候我們可以不讓 vite 打包樣式文件,樣式文件將使用 gulp 進行打包。那麼本篇文章將介紹如何 ...
  • 在使用阿裡雲伺服器部署完flask項目後,實際訪問網站發現網站載入速度慢 問題分析: 打開開發者工具-網路,發現echarts文件及其3D庫載入時間過長,頁面空白時間長,用戶等待時間長,如下圖 解決辦法: 1、利用CDN內容分髮網絡使用戶根據自己網路的特點更快、更穩定地訪問到節點伺服器中的資源,從而 ...
  • CSS 為實現重疊效果,將 margin-top 設為負值時,div 背景被 img 圖片遮擋 一、未實現重疊效果 <body> <img src="https://cdn.uviewui.com/uview/swiper/swiper2.png" style="width: 375px;" alt ...
  • <template> <el-button style="float: right; margin: 10px" type="primary" @click="export2">導出</el-button> <!-- 導出表格 start--> <el-table class="tableExpor ...
  • const: 這個最簡單,只需記住是聲明的常量,定義的時候必須聲明const的具體值,且之後不允許改變const的值 var和let區別 1、由於js引擎存在預解析,會把var變數名進行提升 對於var來說是這樣執行的 var m; console.log(m); m=10; let不存在變數提升, ...
  • ### canvas特性 標簽中的文本只有在瀏覽器下支持canvas標簽時才顯示 行內塊元素 高度設置在標簽屬性上 ### 填充色設置 ctx.fillStyle="#ff0000" ### 線條顏色設置 ctx.strokeStyle="ff0000" ### 線條粗細 ctx.lineWidth ...
  • 備忘錄模式(Memento Pattern):是一種行為型設計模式,在不破壞封裝性的前提下,捕獲一個對象的內部狀態,併在該對象之外保存這個狀態。在JavaScript中,可以使用閉包來實現備忘錄模式。 備忘錄模式通常用於處理用戶界面的狀態。當用戶與應用程式交互時,應用程式會根據用戶的輸入更改其狀態。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...