ASP.NET CORE SPA SSR

1. 安裝 asp.net core匆赃,vscode, node etc.

2. Asp.net core 自帶的模板生成工具等

? ?1)?Microsoft.AspNetCore.SpaTemplates 提供了一些基礎(chǔ)模板(angular,react,knockout 等)

? ?2)?Microsoft.AspNetCore.SpaServices :關(guān)于SpaTemplates生成的項(xiàng)目內(nèi)部如何工作的锐帜,為SPA提供了很多有用得特性,如服務(wù)器端渲染及與webpack的集成等

? ?3)?Microsoft.AspNetCore.NodeServices :關(guān)于SpaServices內(nèi)部是如何工作的归薛,為構(gòu)造ASP.NET Core項(xiàng)目提供了一個(gè)快速健壯的在服務(wù)器端運(yùn)行的方法

? 以上提及的特性都能在github上找到:https://github.com/aspnet/JavaScriptServices?

? 可以直接安裝vs2017,里面包括了asp.net core?https://visualstudio.microsoft.com/zh-hans/vs/whatsnew/?rr=https%3A%2F%2Fdevblogs.microsoft.com%2Faspnet%2Fbuilding-single-page-applications-on-asp-net-core-with-javascriptservices%2F


1.運(yùn)行dotnet new(這里給出了很多實(shí)用的模板)


2.選擇一個(gè)mvc的項(xiàng)目,運(yùn)行dotnet new web

3.運(yùn)行dotnet restore

4.為ASP.NET指定運(yùn)行環(huán)境為development

? ? ?1)如果你是在windows下使用powershell:?$Env:ASPNETCORE_ENVIRONMENT = "Development"

? ? ?2)如果你是在使用cmd :?setx ASPNETCORE_ENVIRONMENT "Development" 并重啟你的cmd使配置生效

? ? ?3)如果你在使用Mac/Linux:??export ASPNETCORE_ENVIRONMENT=Development

5. 執(zhí)行 dotnet run把項(xiàng)目跑起來:

服務(wù)器端渲染:

? ? 服務(wù)器端渲染會(huì)使得你的初始UI出現(xiàn)得更快,因?yàn)橛脩魺o須等待他們的瀏覽器下載火本,評(píng)估,及執(zhí)行巨大的js文件聪建,我們將在服務(wù)器端執(zhí)行angular,react等組件钙畔,這也意味著及時(shí)在客戶端禁止的js,也能夠正常的渲染頁面金麸,從而也能保證你的網(wǎng)站能被搜素引擎抓取擎析。

NodeServices:

? ? 即使你不創(chuàng)建spa項(xiàng)目,它也能使你能在服務(wù)器端運(yùn)行js挥下,這也是SpaServices能工作的原因揍魂,比如如果你要在服務(wù)器端渲染一個(gè)angular或者React組件,通過使用NodeServices棚瘟,會(huì)創(chuàng)建一個(gè)Node.js的實(shí)例现斋,并且.net 提供了一個(gè)快速、健壯的方法調(diào)用它

? ?使用NodeServices:

? ?1. dotnet add package Microsoft.AspNetCoreNodeServices

? ?2. dotnet restore

? ?3. Startup.cs 添加 services.AddNodeServices(); (*可以添加不同配置解取,如允許debug: services.AddNodeServices(x=>x.LaunchWithDebugging = true))

4. 在 index control中添加引用?using Microsoft.AspNetCore.NodeServices

5. 在index方法中使用nodeService


? 6.添加chartModule文件

? ? ?

7.在index.cshtml中直接輸出

8.運(yùn)行 dotnet run (后臺(tái)執(zhí)行完畢的js直接顯示)

?9. Chart示例步责, npm install --save node-chartist

10. 在index controller中添加mock數(shù)據(jù)


11.改寫chartModules.js?


12.在index.cshtml中引入對應(yīng)css文件

13. 運(yùn)行dotnet run


使用SapServices

? ? 添加對其引用,并運(yùn)行dotnet restore


添加對應(yīng)TagHelper



安裝npm包

1.npm init

2.npm install --save aspnet-prerendering

3. 在about頁面加上對應(yīng)代碼


4. 添加一個(gè)ClientApp目錄在此目錄下新建boot-server.js

5. 編寫一個(gè)測試用例:(引用aspnet-prerendering并返回一個(gè)Promise)

6:打開頁面:


為此js文件添加初始化數(shù)據(jù)

1.使用asp-prerender-data


2. 在js文件中調(diào)用傳過來的參數(shù)


3. 刷新頁面






更進(jìn)一步,使用ts:

1.npm install --save ts-loader typescript webpack

2.添加webpack配置文件


3. 添加tsconfig并把boot-server.js改成ts


4.將boot-server換成ts


5.執(zhí)行webpack,編譯后的文件已生成至ClientApp/dist目錄下,main-server.js

6.更改about頁面的引用為main-server(編譯后文件)


7. 再次運(yùn)行dotnet run





Reference:https://devblogs.microsoft.com/aspnet/building-single-page-applications-on-asp-net-core-with-javascriptservices/

https://github.com/wuzinong/JsLearning/tree/master/DotNetCoreSingleApplication/ServerSideRendering

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔓肯,一起剝皮案震驚了整個(gè)濱河市遂鹊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔗包,老刑警劉巖秉扑,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異调限,居然都是意外死亡舟陆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門耻矮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秦躯,“玉大人,你說我怎么就攤上這事裆装□獬校” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵哨免,是天一觀的道長茎活。 經(jīng)常有香客問我,道長琢唾,這世上最難降的妖魔是什么载荔? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮采桃,結(jié)果婚禮上懒熙,老公的妹妹穿的比我還像新娘。我一直安慰自己芍碧,他們只是感情好煌珊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泌豆,像睡著了一般定庵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上踪危,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天蔬浙,我揣著相機(jī)與錄音,去河邊找鬼贞远。 笑死畴博,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓝仲。 我是一名探鬼主播俱病,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼官疲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亮隙?” 一聲冷哼從身側(cè)響起途凫,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溢吻,沒想到半個(gè)月后维费,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡促王,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年犀盟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇狼。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阅畴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出题翰,到底是詐尸還是另有隱情恶阴,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布豹障,位于F島的核電站,受9級(jí)特大地震影響焦匈,放射性物質(zhì)發(fā)生泄漏血公。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一缓熟、第九天 我趴在偏房一處隱蔽的房頂上張望累魔。 院中可真熱鬧,春花似錦够滑、人聲如沸垦写。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梯投。三九已至,卻和暖如春况毅,著一層夾襖步出監(jiān)牢的瞬間分蓖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工尔许, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留么鹤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓味廊,卻偏偏與公主長得像蒸甜,于是被迫代替她去往敵國和親棠耕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容