NiceFish(美人魚)

前端有 3 個版本:

  • 瀏覽器環境
  • 移動端環境
  • Electron 環境

服務端有 2 個版本:

  • SpringBoot 版本(已實現基于 Apache Shiro 的 RBAC 權限控制)
  • SpringCloud 版本

1.主要依賴

名稱版本描述
Angular16.2.0Angular 核心庫。
PrimeNG16.2.0開源組件庫。
Bootstrap5.2.3響應式布局。
ngx-bootstrap11.0.2基于 Bootstrap 的開源組件庫。
echarts5.4.2來自百度的圖形庫。
ngx-echarts15.0.3基于 echarts 封裝的 Angular 組件庫。
ckeditor5-angular5.2.0富文本編輯器。
font-awesome4.7.0開源圖標庫。

注意:為了防止出現 NodeJS 模塊兼容性問題,本項目在 package.json 中鎖定了所有 Node 模塊版本。如有需要,您可以自己測試兼容版本號(不建議這樣做,因為會消耗掉大量的時間)。

2.啟動項目

打開終端,依次執行以下命令:

git clone https://gitee.com/mumu-osc/NiceFish.git
cd NiceFish
npm i -g @angular/cli
npm i
ng serve

打開瀏覽器,訪問?http://localhost:4200/

🚀🚀🚀 中文開發者:網絡原因,推薦安裝 nrm 來管理 npm 的 registry。

npm i -g nrm
nrm use taobao

這時候用 npm 安裝 node 模塊就會使用 taobao 提供的 registry 了。

3.在 Mock 版本和帶服務端版本之間切換

為了方便前后端分離開發,本項目提供 2 種啟動模式:

  • 帶 mock 數據的啟動模式:ng serve --configuration development-mock (或者直接 ng serve 啟動,默認是 mock 模式),所有 mock 數據都在 src/mock-data 目錄中,json 格式,與服務端接口返回的數據格式保持一致。
  • 訪問真實的服務端接口的啟動模式: ng serve --configuration development-backend (使用此模式啟動需要有真實的服務端,把 proxy.config.json 中的服務端地址改成你自己的接口地址,NiceFish 提供了一個基于 SpringBoot 的服務端接口實現版本,

與啟動環境有關的配置項在 environment.* 和 angular.json 中。

4.單元測試

執行以下命令進行單元測試:

ng test

默認使用 ChromeHeadless 執行單元測試,按照 CPU 核心數量并發執行測試用例,karmar.conf.js 配置方式參考了 VWware 的 Clarity 項目,

代碼覆蓋率報告:

關于單元測試的詳細使用方法,以及 Jasmine 的語法

5.集成測試

Angular 從 v12 開始,官方廢棄了原來的集成測試工具 Protractor (量角器),本項目已經切換到官方推薦的 Cypress 集成測試工具,執行以下命令啟動集成測試:

ng e2e

?

6.構建

與開發狀態對應,構建模式有 2 種:

  1. 構建開發環境(帶 mock 數據,不訪問服務端):ng build --configuration development-mock
  2. 構建帶有服務端接口的開發環境(訪問真實的服務端接口):ng build --configuration development-backend

如果需要在構建產物的 index.html 中出現 <base href="/NiceFish/"/>,請在以上命令后面加上參數: --base-href /NiceFish/

注意,這里的 NiceFish 是項目名,如果你把項目名改成了其它的,請把 NiceFish 改成你自己的項目名。

7.直接部署到 nginx

  1. 根據上一步的描述構建出最終產物。
  2. 安裝好 nginx,把 dist/browser 目錄下的所有內容拷貝到 nginx 的 html 目錄下。
  3. 參考本項目根目錄下的 nginx.conf 配置文件,修改配置(此項目中的默認配置用于 Docker 環境,在 Windows 平臺下無法使用)。
  4. 重啟 nginx。

8.部署到 Docker 環境

請依次執行以下命令(請不要使用我的 ID ,改成你自己的 Docker 平臺 ID ):

  1. 構建鏡像:sudo docker build -t damoqiongqiu/nice-fish .
  2. 查看鏡像列表:sudo docker images
  3. 啟動容器:sudo docker run -d -it -p 8080:80/tcp --name nice-fish damoqiongqiu/nice-fish:latest
  4. 查看運行中的容器:sudo docker ps -a
  5. 查看容器日志:docker logs --details CONTAINER_ID
  6. 進入容器:sudo docker exec -it CONTAINER_ID sh

9.打包分析

以下是用 webpack-bundle-analyzer 分析打包之后的模塊構成:

看起來 CKEditor 和 ECharts 占了很大的體積,需要做一下異步加載。

webpack-bundle-analyzer 使用方法,請依次執行以下操作:

  1. npm i webpack-bundle-analyzer --save-dev
  2. package.json 的 scripts 配置里面加一行 "bundle-report": "webpack-bundle-analyzer dist/browser/stats.json"
  3. ng build --stats-json 編譯(--stats-json 選項會生成一份 stats.json 配置文件)
  4. 執行 npm run bundle-report 查看打包過程

10.系列項目

NiceFish 的客戶端項目:
NiceFish 的服務端項目:

11.關于 NodeJS 環境的常見坑點

  • 中文開發者:如果你使用 cnpm 來安裝依賴,可能會導致某些包不一致,導致應用起不來,目前原因不明,需要 cnpm 官方來解決。(cnpm 不是單純的加速節點,它做了很多自己的處理,包括對一些 C++ 編寫的 Node 模塊做了預編譯緩存,因此用它安裝的包可能和官方源不一致。這不是 Angular 框架的問題,所有前端框架都存在這個問題。)
  • 如果之前裝過@angular/cli 需要先卸載:npm uninstall -g @angular/cli
  • 如果之前裝過老版本的 angular-cli 需要先卸載:npm uninstall -g angular-cli
  • 如果你之前已經嘗試用 npm install 安裝過 node 模塊,請手動把 NiceFish 根目錄下的 node_moduels 目錄刪掉重新 npm install
  • 命令行刪除 node_modules 速度更快,Windows 平臺使用: rmdir /s/q node_modules ,*nix 平臺使用:sudo rm -rf node_modules
  • 如果你遇到其它任何看起來比較玄幻的問題,請手動刪掉 node_modules 目錄,然后切換到 npm 官方源,重新安裝所有 node 模塊
  • 如果你需要把項目發布到其它類型的 Server 上,例如 Tomcat,需要對 Server 進行一些簡單的配置才能支持 HTML5 下的 PushState 路由模式,在 How to: Configure your server to work with html5Mode 這個小節里面把常見的 WEB 容器的配置方式都列舉出來了,包括:IIS、Apache、nginx、NodeJS、Tomcat 全部都有。(請注意,這個配置不是 Angular 所特有的,當前主流的 SPA 型前端框架都需要做這個配置。)

12.界面截圖

?

?

?

?

?

?

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

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

相關文章

華為ENSP:STP和鏈路聚合的管理與配置

這里將不再過度闡述STP和鏈路聚合的理論知識&#xff0c;不清楚的同學可以去觀看Cisco文章中的理論知識 理論知識https://blog.csdn.net/2301_76341691/article/details/145166547?fromshareblogdetail&sharetypeblogdetail&sharerId145166547&sharereferPC&…

【PyCharm】連接 Git

【PyCharm】相關鏈接 【PyCharm】連接 Git【PyCharm】連接Jupyter Notebook【PyCharm】快捷鍵使用【PyCharm】遠程連接Linux服務器【PyCharm】設置為中文界面 要在 PyCharm 中連接 Git&#xff0c;確保您的開發環境已經安裝了 Git&#xff0c;并且 PyCharm 能夠訪問它。 以下…

dl學習筆記:(4)簡單神經網絡

&#xff08;1&#xff09;單層正向回歸網絡 bx1x2z100-0.2110-0.05101-0.051110.1 接下來我們用代碼實現這組線性回歸數據 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…

三、華為交換機 Hybrid

一、Hybrid功能 Hybrid口既可以連接普通終端的接入鏈路&#xff08;類似于Access接口&#xff09;&#xff0c;又可以連接交換機間的干道鏈路&#xff08;類似于Trunk接口&#xff09;。它允許多個VLAN的幀通過&#xff0c;并可以在出接口方向將某些VLAN幀的標簽剝掉&#xff0…

Tensor 基本操作1 | PyTorch 深度學習實戰

目錄 創建 Tensor常用操作unsqueezesqueezeSoftmax代碼1代碼2代碼3 argmaxitem 創建 Tensor 使用 Torch 接口創建 Tensor import torch參考&#xff1a;https://pytorch.org/tutorials/beginner/basics/tensorqs_tutorial.html 常用操作 unsqueeze 將多維數組解套&#xf…

Grafana系列之面板接入Prometheus Alertmanager

關于Grafana的儀表板Dashboard&#xff0c;以及面板Panel&#xff0c;參考Grafana系列之Dashboard。可以直接在面板上創建Alert&#xff0c;即所謂的Grafana Alert&#xff0c;參考Grafana系列之Grafana Alert。除了Grafana Alert外&#xff0c;面板也可接入Prometheus Alertma…

Windows 上安裝 MongoDB 的 zip 包

博主介紹&#xff1a; 大家好&#xff0c;我是想成為Super的Yuperman&#xff0c;互聯網宇宙廠經驗&#xff0c;17年醫療健康行業的碼拉松奔跑者&#xff0c;曾擔任技術專家、架構師、研發總監負責和主導多個應用架構。 近期專注&#xff1a; RPA應用研究&#xff0c;主流廠商產…

LeetCode 2266.統計打字方案數:排列組合

【LetMeFly】2266.統計打字方案數&#xff1a;排列組合 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/count-number-of-texts/ Alice 在給 Bob 用手機打字。數字到字母的 對應 如下圖所示。 為了 打出 一個字母&#xff0c;Alice 需要 按 對應字母 i 次&#xff0c…

PTA乙級1001~1005【c++】

首先講解一下PTA乙級在哪里。PTA乙級題其實就是PAT (Basic Level) Practice &#xff08;中文&#xff09; 1001 害死人不償命的(3n1)猜想 #include<iostream> using namespace std;int main() {int cnt 0;int n;cin >> n;while(n ! 1){cnt ;if (n & 1){n …

滲透筆記1

第一天 工具&#xff1a;cs cobalt strike 4.9 / msf kali &#xff08;自帶 Ubuntu&#xff09; cs cobalt strike 4.9&#xff1a;server-client server部署在云服務器上&#xff0c;client分別在各地&#xff0c;與server相連接&#xff1b;連接上后就可以共享上線主機。…

用Python實現SVM搭建金融反詐模型(含調試運行)

1.概述 信用卡盜刷一般發生在持卡人信息被不法分子竊取后&#xff0c;復制卡片進行消費或信用卡被他人冒領后激活并消費等情況下。一旦發生信用卡盜刷&#xff0c;持卡人和銀行都會遭受一定的經濟損失。本節要運用支持向量機分類算法搭建一個金融反欺詐模型。 2.數據集 使用…

HunyuanVideo 文生視頻模型實踐

HunyuanVideo 文生視頻模型實踐 flyfish 運行 HunyuanVideo 模型使用文本生成視頻的推薦配置&#xff08;batch size 1&#xff09;&#xff1a; 模型分辨率(height/width/frame)峰值顯存HunyuanVideo720px1280px129f60GHunyuanVideo544px960px129f45G 本項目適用于使用 N…

第6章 ThreadGroup詳細講解(Java高并發編程詳解:多線程與系統設計)

1.ThreadGroup 與 Thread 在Java程序中&#xff0c; 默認情況下&#xff0c; 新的線程都會被加入到main線程所在的group中&#xff0c; main線程的group名字同線程名。如同線程存在父子關系一樣&#xff0c; Thread Group同樣也存在父子關系。圖6-1就很好地說明了父子thread、父…

nginx常用配置 (含負載均衡、反向代理、限流、Gzip壓縮、圖片防盜鏈 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中&#xff0c; 一般直接 改 conf.d目錄下的 default.conf文件&#xff0c; 然后 先檢測配置文件是否有錯誤 nginx -t 再重新加載配置文件 或 重啟nginx&#xff0c;命令如下 nginx -s reload 或…

Python編程與在線醫療平臺數據挖掘與數據應用交互性研究

一、引言 1.1 研究背景與意義 在互聯網技術飛速發展的當下,在線醫療平臺如雨后春筍般涌現,為人們的就醫方式帶來了重大變革。這些平臺打破了傳統醫療服務在時間和空間上的限制,使患者能夠更加便捷地獲取醫療資源。據相關報告顯示,中國基于互聯網的醫療保健行業已進入新的…

Linux網絡_套接字_UDP網絡_TCP網絡

一.UDP網絡 1.socket()創建套接字 #include<sys/socket.h> int socket(int domain, int type, int protocol);domain (地址族): AF_INET網絡 AF_UNIX本地 AF_INET&#xff1a;IPv4 地址族&#xff0c;適用于 IPv4 協議。用于網絡通信AF_INET6&#xff1a;IPv6 地址族&a…

1 行命令引發的 Go 應用崩潰

一、前言 不久前&#xff0c;阿里云 ARMS 團隊、編譯器團隊、MSE 團隊攜手合作&#xff0c;共同發布并開源了 Go 語言的編譯時自動插樁技術。該技術以其零侵入的特性&#xff0c;為 Go 應用提供了與 Java 監控能力相媲美的解決方案。開發者只需將 go build 替換為新編譯命令 o…

R語言的并發編程

R語言的并發編程 引言 在現代計算中&#xff0c;如何有效地利用計算資源進行數據處理和分析已成為一個重要的研究方向。尤其在大數據時代&#xff0c;數據量的急劇增加讓單線程處理方式顯得力不從心。為了解決這一問題&#xff0c;各種編程語言都開展了并發編程的研究和應用。…

Flink(十):DataStream API (七) 狀態

1. 狀態的定義 在 Apache Flink 中&#xff0c;狀態&#xff08;State&#xff09; 是指在數據流處理過程中需要持久化和追蹤的中間數據&#xff0c;它允許 Flink 在處理事件時保持上下文信息&#xff0c;從而支持復雜的流式計算任務&#xff0c;如聚合、窗口計算、聯接等。狀…

C#項目生成時提示缺少引用

問題描述 剛從git或svn拉取下來的C#項目&#xff0c;在VS生成時提示缺少引用 解決方案 1、從“管理NuGet程序包”中下載并安裝缺少的引用&#xff0c;如果引用較多逐個下載安裝會比較麻煩&#xff0c;建議采用下面第2種方案處理 2、通過命令對所有缺少引用進行安裝 &#…