基于.NetCore開發博客項目 StarBlog - (5) 開始搭建Web項目

系列文章

  • 基于.NetCore開發博客項目 StarBlog - (1) 為什么需要自己寫一個博客?

  • 基于.NetCore開發博客項目 StarBlog - (2) 環境準備和創建項目

  • 基于.NetCore開發博客項目 StarBlog - (3) 模型設計

  • 基于.NetCore開發博客項目 StarBlog - (4) markdown博客批量導入

  • 基于.NetCore開發博客項目 StarBlog - (5) 開始搭建Web項目

  • ...

前言

距離本系列的上一篇文章發布有段時間了,最近被一個培訓活動整得身心俱疲,休息了一個周末好不容易才緩過來,趕緊繼續來更新博客~

經過了前面的模型設計、博客數據導入之后,我們項目的準備工作已經基本完成,可以開始來做網站了,本文將記錄StarBlog博客的AspNet.Core Web項目的搭建過程。

回顧一下

先來回顧一下,我們的Web項目是MVC類型的項目,作為博客的前臺,本項目使用后端渲染頁面以方便SEO,也就是博客網站這部分是前后端不分離的寫法。

整理項目

打開我們之前創建的好的AspNetCore Web項目StarBlog.Web,模板生成的默認目錄結構類似這樣:

StarBlog.Web
├──?Controllers
│???└──?HomeController.cs
├──?Models
│???└──?ErrorViewModel.cs
├──?Properties
│???└──?launchSettings.json
├──?Views
│???├──?Home
│???├──?Shared
│???├──?_ViewImports.cshtml
│???└──?_ViewStart.cshtml
├──?wwwroot
│???├──?css
│???├──?js
│???├──?lib
│???└──?favicon.ico
├──?Dockerfile
├──?Program.cs
├──?StarBlog.Web.csproj
├──?appsettings.Development.json
└──?appsettings.json

可以看到它自動生成了一堆東西,有些我們不需要,有些可以利用起來的,先來整理一下吧。

wwwroot目錄中的靜態資源是不需要的,模板自帶的bootstrap啥的也不適合放進git,后面我們自己用NPM來管理靜態資源,所以把wwwroot目錄下的文件都刪了。

Views里的是頁面模板,里面代碼是要全部重寫的,先留著,后面直接重寫就行。

Models里的ErrorViewModel.cs沒用上,可以刪了~

暫時先這樣,來進行下一步了。

引入NPM管理前端資源

據說在.Net Framework時代,前端資源甚至能通過nuget來管理,不過包太少了,更新也跟不上NPM,所以現在.Net Core時代已經廢棄了,我之前也寫了一篇博客詳細介紹使用NPM和Gulp來管理AspNetCore Web項目的靜態資源,可以作為本文這部分的擴展閱讀:Asp-Net-Core開發筆記:使用NPM和gulp管理前端靜態文件

這部分依賴于node環境,如果本地沒有安裝node環境,請先在官網下載安裝:https://nodejs.org/en/download/

StarBlog.Web項目的目錄下執行命令初始化node項目(主要就是為了生成package.json文件)

npm?init

然后直接編輯package.json文件添加依賴

{"devDependencies":?{"gulp":?"^4.0.2","gulp-changed":?"^4.0.3","gulp-clean-css":?"^4.3.0","gulp-concat":?"^2.6.1","gulp-rename":?"^2.0.0","gulp-uglify":?"^3.0.2","rimraf":?"^3.0.2"},"dependencies":?{"@fortawesome/fontawesome-free":?"^6.0.0","bootstrap":?"^5.1.3","bootswatch":?"^5.1.3","editor.md":?"^1.5.0","jquery":?"^3.6.0","masonry-layout":?"^4.2.2","vue":?"^2.6.14"}
}

這些是本項目需要用到的前端依賴,一股腦加進去之后,執行命令一鍵安裝依賴

npm?install

到這NPM管理前端資源的使命就結束了。

使用前端自動化工具Gulp

接下來要解決一個問題,NPM安裝的依賴都在node_modules目錄下,要怎么把這些資源放到wwwroot目錄下呢?手動復制粘貼?no,這也太麻煩了,前端工具鏈中為我們提供了更方便的生產力工具——Gulp。

關于Gulp的介紹可以看我之前的這篇博客:Asp-Net-Core開發筆記:使用NPM和gulp管理前端靜態文件

這里就不重復了,直接安裝:

npm?install?--global?gulp-cli

然后在StarBlog.Web目錄下新建gulpfile.js文件,內容比較長,我就不全部貼出來了,全部代碼可以在GitHub查看到:https://github.com/Deali-Axy/StarBlog/blob/master/StarBlog.Web/gulpfile.js

這里貼一下關鍵的配置

//?使用?npm?下載的前端組件包
const?libs?=?[{name:?"jquery",?dist:?"./node_modules/jquery/dist/**/*.*"},{name:?"popper",?dist:?"./node_modules/popper.js/dist/**/*.*"},{name:?"bootstrap",?dist:?"./node_modules/bootstrap/dist/**/*.*"},{name:?"bootswatch",?dist:?"./node_modules/bootswatch/dist/**/*.*"},{name:?"prismjs",?dist:?"./node_modules/prismjs/**/*.*"},{name:?'vue',?dist:?'./node_modules/vue/dist/**/*.*'},{name:?'masonry-layout',?dist:?'./node_modules/masonry-layout/dist/*.*'},
];//?使用?npm?下載的前端組件,自定義存放位置
const?customLibs?=?[{name:?"editormd",?dist:?"./node_modules/editor.md/*.js"},{name:?"editormd/css",?dist:?"./node_modules/editor.md/css/*.css"},{name:?"editormd/lib",?dist:?"./node_modules/editor.md/lib/*.js"},{name:?"editormd/examples/js",?dist:?"./node_modules/editor.md/examples/js/*.js"},{name:?'font-awesome',?dist:?'./node_modules/@fortawesome/fontawesome-free/**/*.*'},
]

搞定,我們配置的是把前端依賴復制到wwwroot/lib目錄下

之后執行命令

gulp?move

搞定~

如果覺得每次添加前端依賴之后還得敲命令麻煩的話,可以看我之前這篇配置gulp的博客,在IDE里配置一下,以后點一下就行。

修改 _Layout 模板

前端資源都準備齊全,接下來修改一下前端主模板,方便接下來的寫頁面~

編輯wwwroot/Shared/_Layout.cshtml文件,修改<head>節點下的引用代碼

<head><!--?第三方依賴?--><link?rel="stylesheet"?href="~/lib/bootstrap/dist/css/bootstrap.css"><link?rel="stylesheet"?href="~/lib/font-awesome/css/all.css"><!--?我們自己寫的樣式?--><link?rel="stylesheet"?href="~/css/features.css"><link?rel="stylesheet"?href="~/css/metro.css"><link?rel="stylesheet"?href="~/css/footer.css">@await?RenderSectionAsync("head",?false)
</head>

修改最后面的js引用

<!--?第三方依賴?-->
<script?src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script?src="~/lib/vue/dist/vue.js"></script>
<!--?我們自己寫的js?-->
<script?src="~/js/site.js"></script>
@await?RenderSectionAsync("bottom",?false)

有些具體的代碼太長了我就不貼了,涉及到具體功能的時候我再貼上關鍵代碼,因為項目已經基本完成,代碼在GitHub都有,大家可以參考一下GitHub代碼~

到這寫頁面的準備工作就完成了,后面就是把頁面一個個寫完~

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

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

相關文章

java計算每個元素出現的百分比_Java程序計算百分比

百分數表示百分數(百)&#xff0c;即百分數與100之比。百分數的符號為&#xff05;。我們通常會計算獲得的商標&#xff0c;投資回報率等百分比。該百分比也可以超過100&#xff05;。例如&#xff0c;假設我們有總數和一部分。所以我們說那一部分占總數的百分之幾&#xff0c;…

ECShop 前臺用戶中心調整左側欄目及中心部分呈現頁面

1、首先調整用戶中心左側欄目&#xff0c;在 .dwt 里面我修改了半天&#xff0c;頁面沒改動。。后來某大神說這個是在另一個文件里&#xff1a;/themes/你用的模板目錄/library/user_menu.lbi 文件改一個試試吧~ 不出意外的成功了吧2、中心部分呈現內容的調整。&#xff08;今天…

【測繪程序設計】高斯克呂格投影:帶號及中央經度計算神器V1.0(附源程序)

【問題描述】:很多情況下,我們知道某一地點的坐標(經緯度),需要計算其在高斯克呂格投影中的帶號及中央經度。關于該問題,有具體的公式可言,只是計算過程稍微繁瑣一些,當然啦,我們可以寫程序來解決,誰叫我們是名副其實的GISer呢?另外,這些復雜的計算過程還是交給計算…

外部中斷0(含知識點)

1 #include "stm32f10x.h" // 相當于51單片機中的 #include <reg51.h>2 #include "stm32f10x_gpio.h"3 #include "stm32f10x_exti.h"4 #include "misc.h"5 6 /*外部中斷配置*/7 8 9 int main(void)10 {11 /*************…

Git之tag

1 tag相關命令 1) 打上tag git tag v1.0.0 git tag -a v1.0.0 -m info 2) 查看tag git tag 3) 切換tag git checkout tagname 4) 刪除tag git tag -d v1.0.0 5) 推送遠程 推送單個tag git push origin v1.0.0 推送所有tag git push origin --tags

[python opencv 計算機視覺零基礎到實戰] 十七、用鼠標畫畫

一、學習目標 了解長軸和短軸參數了解旋轉角度參數了解起始角度參數了解終止角度參數 二、深入了解OpenCV的ellipse方法 2.1 縱橫 橢圓的繪制方法在上一節中我們已經知道了是使用ellipse&#xff0c;ellipse的函數原型如下&#xff0c;為了清晰認識ellipse方法&#xff0c;…

Microsoft Build 2022 到來,開發者們做好準備了嗎?

Microsoft Build 2022 將會在5月24日 - 5月26日正式舉行&#xff0c;作為開發者的你是否和我一樣期待本次的 Build&#xff0c;它會帶來什么的技術革新以及黑科技呢&#xff1f;下面我就針對今年 Build 的幾個主題結合相關技術來談談我對 Build 的期待。開發技術和相關工具今年…

【測繪程序設計】視距測量神器V1.0(附源程序)

神器預覽: 一、視距測量概念 視距測量是利用水準儀的望遠鏡內十字絲分劃板上的視距絲在視距尺(水準尺)上讀數,根據光學和幾何學原理,同時測定儀器到地面點的水平距離和高差的一種方法。 視距測量具有操作簡便、速度快、不受地面起伏變化的影響的優點,被廣泛應用于碎部測…

補作業:隨機生成二元四則運算

四則運算代碼如下&#xff0c;基礎不好&#xff0c;剛完成作業&#xff0c;希望老師多給點平時成績&#xff0c;謝謝老師&#xff01;#include<stdio.h>#include<stdlib.h>#include<time.h>int right0,wrong0;int a,b,c,d;/*加法運算*/void add(){int i,j;fo…

java 從數據庫取值_java 連接數據庫取值問題

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{//TODOAuto-generatedmethodstubXzdatasqlToolnewXzdata();//初始化并...public void doGet(HttpServletRequest request,HttpServletResponse response) throws I…

條件表達式

1.python中&#xff1a; a 1b 2 if a>1 else 3 2.C語言中&#xff1a;max (a>b)?a:b; 說明&#xff1a;條件運算符優先于賦值運算符 也可以這樣寫&#xff1a;a>b? a:c>d? c:d / a>b? (a100):(b100)轉載于:https://www.cnblogs.com/yjw9520/p/4841301.ht

oracle導出數據庫中表出現導出報錯(EXP-00003)未找到段 (0,0) 的存儲定義

前兩天在使用oracle數據庫&#xff0c;使用dba用戶利用PL/SQL 中的tool中export table導出表結構時&#xff0c;出現了如下問題&#xff1a;好多張表“報錯&#xff08;EXP-00003&#xff09;未找到段 (0,0) 的存儲定義 ”&#xff0c;出現這樣的結果&#xff0c;經過查找相關資…

Android Studio之查找當前類的位置圖標沒了

1 問題 我們知道在Android studio里面如果想快速看到該文件所在的目錄位置&#xff0c;點擊這個圖標 現在這個圖標沒了&#xff0c;找不到了 2 解決辦法 把下面的Autoscroll from Source的勾去掉就行。

[python opencv 計算機視覺零基礎到實戰] 十八、用鼠標進行畫畫

一、學習目標 了解如何在圖片中加入文字了解如何使用鼠標進行圖像繪制 二、了解如何通過鼠標進行圖像繪制 2.1 了解putText方法的使用 putText方法接收圖像&#xff0c;文字內容&#xff0c; 坐標 &#xff0c;字體&#xff0c;大小&#xff0c;顏色&#xff0c;字體厚度這…

【測繪程序設計】坐標正算神器V1.0(附C/C#/VB源程序)

坐標正算,就是根據直線的邊長、坐標方位角和一個端點的坐標,計算直線另一個端點的坐標的工作。本文用C#語言和VB語言實現坐標正算,編寫坐標正算神器。 計算實例: 實例1,設直線AB的邊長DAB和一個端點A的坐標XA、YA為已知,則直線另一個端點B的坐標為: XB=XA+ΔXAB YB=YA+…

2.2 PostgreSQL 概念

PostgreSQL 是一種關系型數據庫管理系統(RDBMS)。這意味著它是一種用于管理那些以關系形式存儲數據的系統。關系實際上是表的數學稱呼。今天&#xff0c;把數據存儲在表里的概念已經快成固有的常識了&#xff0c;但是還有其它一些方法用于組織數據庫。在類 Unix 操作系統上的文…

Blazor University (22)路由 —— 定義路由

原文鏈接&#xff1a;https://blazor-university.com/routing/路由與標準 ASP.NET MVC 一樣&#xff0c;Blazor 路由是一種用于檢查瀏覽器 URL 并將其匹配到要呈現的頁面的技術。路由比簡單地將 URL 匹配到頁面更靈活。它允許我們根據文本模式進行匹配&#xff0c;例如&#xf…

Linux文件I/O編程(二)lseek函數

文件I/O編程處理open、read、write、close&#xff0c;等必要函數對文件進行讀寫操作外&#xff0c;lseek、fcntl也是I/O編程很重要的函數。lseek函數lseek函數主要用來移動當前讀寫位置&#xff0c;第一個參數是文件描述符fd&#xff0c;第二個參數是偏移距離&#xff0c;第三…

[python opencv 計算機視覺零基礎到實戰] 十九、簡易繪畫板制作

一、學習目標 了解事件編寫一個簡易繪畫板 二、了解如何制作簡易繪畫板 2.1 了解鼠標多種事件 上一節我們簡單的使用opencv的圖形繪制方法&#xff0c;用鼠標繪制了一些內容。上一節所響應的是簡單的雙擊事件EVENT_LBUTTONDBLCLK&#xff0c;在OpenCV的鼠標事件中還有很多。…