Nuxt.js Next.js Nest.js

  1. Nuxt.js和Next.js都是服務端渲染框架(SSR),屬于前端框架,Nest.js則是node框架,屬于后端框架。

  2. 其中Nuxt.js是vue的ssr框架,Next.js是react的ssr框架。

  3. 都是比vue和react更上層的前端框架。

文章目錄

      • 1.SSR
      • 2.Nuxt
        • 2.1 Nuxt的下載
        • 2.2 Nuxt的集成
        • 2.3 Nuxt的特征
        • 2.4 Nuxt的工作流程
        • 2.5 Nuxt的目錄結構
        • 2.6 Nuxt的路由
      • 3.Next
        • 3.1 Next的下載
        • 3.2 Next的特征
      • 4.Nest
        • 4.1 Nest的下載
        • 4.2 Nest的特征
        • 4.3 Nest的使用
      • 5.總結

1.SSR

服務端渲染(Server-Side Rendering,簡稱 SSR)是一種將網頁內容在服務器端動態生成并發送給客戶端的技術。
傳統的客戶端渲染(Client-Side Rendering,簡稱 CSR)是在客戶端瀏覽器中使用 JavaScript 動態生成頁面內容。

在傳統的客戶端渲染中,瀏覽器首先下載一個空的 HTML 頁面,然后通過 JavaScript 請求數據并生成頁面內容。這種方式的優點是可以提供更豐富的交互和動態效果,但也存在一些缺點。例如,搜索引擎爬蟲可能無法正確解析和索引頁面內容,導致 SEO(搜索引擎優化)問題。同時,初始加載時用戶可能會看到空白的頁面或者出現閃爍的內容。

相比之下,服務端渲染通過在服務器上預先生成完整的 HTML 頁面,將其發送給客戶端瀏覽器。這樣,瀏覽器在接收到頁面時就能夠立即顯示完整的內容,而不需要等待 JavaScript 的下載和執行。這樣可以提高頁面的加載速度和首次渲染速度,并且對于搜索引擎爬蟲來說更容易解析和索引頁面內容,有利于 SEO。

服務端渲染的實現方式通常涉及使用服務器端框架(如Node.js、Java、Python等)來處理請求,并在服務器上生成完整的 HTML 頁面。服務器端框架可以使用模板引擎或者直接在后端代碼中生成 HTML。一旦生成完整的 HTML 頁面,服務器將其發送給客戶端瀏覽器,瀏覽器接收到后即可直接顯示頁面內容。

需要注意的是,服務端渲染不是完全取代客戶端渲染,而是根據需求和場景選擇合適的渲染方式。一些頁面或組件可能更適合使用客戶端渲染,以提供更好的交互和動態效果。而對于需要更好的首次加載速度和 SEO 的頁面,服務端渲染則是一個有價值的選擇。

2.Nuxt

Nuxt是一個開源框架,它使Web開發變得直觀和強大。自信地創建高性能和生產級全棧Web應用程序和網站。

2.1 Nuxt的下載

在這里插入圖片描述

npx nuxi@latest init <project-name>cd project-namenpm inpm run dev

在這里插入圖片描述

2.2 Nuxt的集成

nuxt基本上是由vue2,webpack,babel這三個構成的。

Nuxt.js 集成了以下組件/框架,用于開發完整而強大的 Web 應用:

  1. Vue2
  2. Vue-router
  3. Vuex (當配置了 Vuex 狀態樹配置項 時才會引入)
  4. Vue 服務器端渲染 (排除使用 mode: ‘spa’)
  5. Vue-Meta

Nuxt.js 使用 Webpack 和 vue-loader 、 babel-loader 來處理代碼的自動化構建工作(如打包、代碼分層、壓縮等等)。

2.3 Nuxt的特征

特征:

  1. 基于 Vue.js
  2. 自動代碼分層
  3. 服務端渲染
  4. 強大的路由功能,支持異步數據
  5. 靜態文件服務
  6. ES2015+ 語法支持
  7. 打包和壓縮 JS 和 CSS
  8. HTML 頭部標簽管理
  9. 本地開發支持熱加載
  10. 集成 ESLint
  11. 支持各種樣式預處理器:SASS、LESS、 Stylus 等等
  12. 支持 HTTP/2 推送
2.4 Nuxt的工作流程

工作流程: 一個完整的服務器請求到渲染的流程。

request -> nuxtServerInit -> middleware -> validate -> asyncData -> render
在這里插入圖片描述

2.5 Nuxt的目錄結構

目錄結構:

├── README.md
├── components
├── dist
├── jest.config.js
├── node_modules
├── nuxt.config.js
├── package.json
├── pages
├── plugins
├── static
├── store
├── test
├── tree.txt
└── yarn.lock

nuxt的配置文件在nuxt.config.js文件:

export default {// Global page headers: https://go.nuxtjs.dev/config-headhead: {title: 'nuxt-demo',htmlAttrs: {lang: 'en'},meta: [{ charset: 'utf-8' },{ name: 'viewport', content: 'width=device-width, initial-scale=1' },{ hid: 'description', name: 'description', content: '' },{ name: 'format-detection', content: 'telephone=no' }],link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]},// Global CSS: https://go.nuxtjs.dev/config-csscss: ['ant-design-vue/dist/antd.css'],// Plugins to run before rendering page: https://go.nuxtjs.dev/config-pluginsplugins: ['@/plugins/antd-ui'],// Auto import components: https://go.nuxtjs.dev/config-componentscomponents: true,// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modulesbuildModules: [],// Modules: https://go.nuxtjs.dev/config-modulesmodules: [],// Build Configuration: https://go.nuxtjs.dev/config-buildbuild: {}
}
2.6 Nuxt的路由

Nuxt.js 依據 pages 目錄結構自動生成 vue-router 模塊的路由配置。

pages/
--| user/
-----| index.vue
-----| one.vue
--| index.vue

Nuxt.js 自動生成的路由配置如下:

router: {routes: [{name: 'index',path: '/',component: 'pages/index.vue'},{name: 'user',path: '/user',component: 'pages/user/index.vue'},{name: 'user-one',path: '/user/one',component: 'pages/user/one.vue'}]
}

還有其他的路由方式,比如動態路由,路由參數校驗,嵌套路由和動態嵌套路由等等。

3.Next

在這里插入圖片描述

Next.js 是一個開源的 React 框架,用于構建服務器渲染(SSR)和靜態生成(SSG)的應用程序。它結合了 React 的聲明性和靈活性以及服務器端渲染的性能優勢,使得構建高性能的應用變得更加簡單。

3.1 Next的下載
npx create-next-app my-app

在 pages 目錄下創建您的頁面文件,每個文件將映射到一個路由。

// pages/index.js
function HomePage() {return <h1>Hello, Next.js!</h1>;
}export default HomePage;

在頁面文件中編寫 React 組件,可以使用 JSX 語法和任何其他 React 功能。

npm run dev
3.2 Next的特征
  1. 服務器渲染和靜態生成: Next.js 支持服務器渲染和靜態生成兩種方式。服務器渲染可以提供更快的首次加載時間和更好的 SEO。靜態生成則可以預先生成頁面,并在每個請求之前提供響應,從而具有出色的性能。

  2. 熱模塊替換: HMR, 在開發過程中,您可以實時更新代碼并立即看到變化,無需手動刷新頁面。

  3. 自動代碼拆分: Next.js 可以根據頁面和組件的需求自動拆分代碼,只加載當前頁面所需的代碼,從而提高性能和加載速度。

  4. 路由系統: Next.js 提供了簡單而強大的路由系統,可以輕松地定義頁面之間的導航關系,并支持動態路由、嵌套路由等功能。

  5. CSS模塊支持: Next.js 內置了對 CSS 模塊的支持,使得組件級別的樣式隔離和管理變得更加簡單。

Next.js 是一個強大而靈活的框架,為 React 開發者提供了構建高性能應用程序的便利性。它的服務器渲染和靜態生成功能、熱模塊替換和自動代碼拆分等特性使得開發過程更加高效和愉快。

4.Nest

在這里插入圖片描述

Nest.js 是一個基于 TypeScript 的框架,用于構建可擴展和模塊化的服務器端應用程序。它結合了 Angular 的依賴注入和模塊化、Express 的靈活性和 Node.js 的性能優勢,使得構建高性能的應用變得更加簡單。

  1. Nest是一個漸進的Node.js框架, 它可以在 TypeScript和JavaScript(ES6、ES7、ES8)之上構建高效、可伸縮的企業級服務器端應用程序。

  2. Nest基于TypeScript編寫并且結合了OOP(面向對象編程), FP(函數式編程)和FRP(函數式響應編程)的相關理念。Nest是Node.js版的Spring框架。

  3. Nest底層HTTP平臺默認是基于Express實現的, 無需擔心第三方庫的缺失。

  4. Nest的核心思想是提供了一個層與層直接的耦合度極小, ,抽象化極高的一個架構體系。

4.1 Nest的下載
npm install -g @nestjs/clinest new project-namenest g resource user

在這里插入圖片描述

在這里插入圖片描述

類似綁定一個App.vue

4.2 Nest的特征
  1. 基于 TypeScript: Nest.js 使用 TypeScript 編寫,可以利用靜態類型檢查和強類型約束來提高代碼質量和開發效率。
  2. aop: Nest.js 提供了 Angular 風格的依賴注入機制,使得組件之間的協作和解耦變得更加簡單。
  3. 模塊化: Nest.js 支持模塊化編程,可以將應用程序拆分成多個可重用的模塊,從而提高代碼的可維護性和可擴展性。
  4. 路由系統: Nest.js 提供了強大的路由系統,可以輕松地定義 API 路由和請求處理程序,并支持中間件和管道等功能。
  5. 多數據庫支持: Nest.js 支持多種數據庫,包括 MongoDB、MySQL、PostgreSQL 等,可以輕松地與數據庫進行交互。
4.3 Nest的使用

創建user的相關業務邏輯。

nest g resource user
  • user.controller.ts
  • user.service.ts
  • user.module.ts
    在這里插入圖片描述

user.controller.ts

import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';@Controller('user')
export class UserController {constructor(private readonly userService: UserService) {}@Post()create(@Body() createUserDto: CreateUserDto) {return this.userService.create(createUserDto);}@Get()findAll() {return this.userService.findAll();}@Get(':id')findOne(@Param('id') id: string) {return this.userService.findOne(+id);}@Patch(':id')update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {return this.userService.update(+id, updateUserDto);}@Delete(':id')remove(@Param('id') id: string) {return this.userService.remove(+id);}
}

user.service.ts

在這里插入圖片描述

user.module.ts: Controller 和 Service 注冊到 AppModule 模塊中。

在這里插入圖片描述

npm run start

在這里插入圖片描述

這只是一個簡單的示例,您可以根據需要擴展和定制接口的功能。Nest.js 還提供了更多的裝飾器和功能,如請求體驗證、異常處理、數據庫集成等,以滿足不同場景下的需求。

5.總結

  • Nuxt.js 和 Next.js 都是用于構建服務器渲染應用的框架,分別基于 Vue.js 和 React。
  • Nuxt.js 適用于構建 Vue.js 應用程序,提供了默認的配置和約定,使得開發 SSR 應用更加簡單。
  • Next.js 適用于構建 React 應用程序,具有出色的性能和開發體驗,并支持靜態生成和服務器端渲染。
  • Nest.js 是一個用于構建 Node.js 服務器端應用的框架,結合了 TypeScript 和面向對象編程的概念,提供了模塊化的架構設計和豐富的功能。

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

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

相關文章

HuggingFace-利用BERT預訓練模型實現中文情感分類(下游任務)

準備數據集 使用編碼工具 首先需要加載編碼工具&#xff0c;編碼工具可以將抽象的文字轉成數字&#xff0c;便于神經網絡后續的處理&#xff0c;其代碼如下&#xff1a; # 定義數據集 from transformers import BertTokenizer, BertModel, AdamW # 加載tokenizer token Ber…

cobol基本動詞

cobol基本動詞 基本動詞用于過程部中的數據處理。每個語句總是以cobol動詞開頭。 input&#xff08;輸入&#xff09;/output&#xff08;輸出&#xff09; 輸入輸出動詞用于從用戶獲取數據。并顯示cobol程序的輸出。 accept 用于從操作系統或者用戶獲取數據&#xff0c;例如日…

langchain 部署組件-LangServe

原文&#xff1a;&#x1f99c;?&#x1f3d3; LangServe | &#x1f99c;?&#x1f517; Langchain LangServe &#x1f6a9; We will be releasing a hosted version of LangServe for one-click deployments of LangChain applications. Sign up here to get on the wa…

OpenLayers入門,OpenLayers6的WebGLPointsLayer圖層樣式和運算符詳解,四種symbolType類型案例

專欄目錄: OpenLayers入門教程匯總目錄 前言 本章講解使用OpenLayers6的WebGL圖層顯示大量點情況下,列舉出所有WebGLPointsLayer圖層所支持的所有樣式運算符大全。 補充說明 本篇主要介紹OpenLayers6.x版本的webgl圖層,OpenLayers7.x和OpenLayers8.x主要更新內容就是webgl…

GB28181學習(十七)——基于jrtplib實現tcp被動和主動發流

前言 GB/T28181-2022實時流的傳輸方式介紹&#xff1a;https://blog.csdn.net/www_dong/article/details/134255185 基于jrtplib實現tcp被動和主動收流介紹&#xff1a;https://blog.csdn.net/www_dong/article/details/134451387 本文主要介紹下級平臺或設備發流功能&#…

生活如果真能像隊列一樣的話

生活如果真能像隊列一樣&#xff0c;那該多好啊。 —————————————————————————————————————————— 背包&#xff0c;隊列 可以先看他們的API&#xff1a;都含有一個無參構造函數&#xff0c;添加單個元素的方法&#xff0c;測試集合…

php項目從寶塔面板切換轉到phpstudy小皮面板

寶塔面板轉phpstudy面板 版本 寶塔面板8.0.1 phpstudy面板8.1.1.3 步驟 1、寶塔面板,找到項目文件夾,打包、下載到本地、解壓 2、本地windows系統安裝phpstudy面板,選擇盡可能一樣的配置 比如寶塔php7.4.33,可能phpstudy面板只有php7.4.3,也行 大環境一定要一致,比如…

力扣算法練習BM46—最小的K個數

題目 給定一個長度為 n 的可能有重復值的數組&#xff0c;找出其中不去重的最小的 k 個數。例如數組元素是4,5,1,6,2,7,3,8這8個數字&#xff0c;則最小的4個數字是1,2,3,4(任意順序皆可)。 數據范圍&#xff1a;0≤k,n≤10000&#xff0c;數組中每個數的大小0≤val≤1000 要…

linux signal 機制

ref&#xff1a; Linux操作系統學習筆記&#xff08;十六&#xff09;進程間通信之信號 | Ty-Chens Home https://www.cnblogs.com/renxinyuan/p/3867593.html 當執行kill -9 PID時系統發生了什么 -

Codeforces Round 910 (Div. 2) D. Absolute Beauty

D. Absolute Beauty 有兩個長度為 n n n 的整數數組 a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1?,a2?,…,an? 和 b 1 , b 2 , … , b n b_1,b_2,\ldots,b_n b1?,b2?,…,bn? 。他將數組 b b b 的美麗值定義為 ∑ i 1 n ∣ a i ? b i ∣ . \sum_{i1}^{n} |a_i - b…

基于材料生成算法優化概率神經網絡PNN的分類預測 - 附代碼

基于材料生成算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于材料生成算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于材料生成優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要&#xff1a;針對PNN神…

JDK命令使用總結

目錄 javacjava javac 將源碼(*.java)編譯成字節碼(*.class) javac HelloWorld.javajava 運行字節碼(*.class) 不能加后綴名 java HelloWorld直接運行單文件源碼(*.java) Java11以上才支持 java HelloWorld.java

ROSNS3(一)

https://github.com/malintha/rosns3 第一步&#xff1a;clone和構建rosns3客戶端 第二步&#xff1a;運行 最詳細的ubuntu 安裝 docker教程 - 知乎 1. unable to find source space /home/muta/src 解決方法&#xff1a; 將副將將碰到的bug&#xff0c;解決方法_#include &…

【C++ Primer Plus學習記錄】遞增運算符(++)和遞減運算符(--)

遞增運算符&#xff08;&#xff09;和遞減運算符&#xff08;--&#xff09;&#xff1a;前綴版本位于操作數前面&#xff0c;如x&#xff1b;后綴版本位于操作數后面&#xff0c;如x。兩個版本對操作數的影響是一樣的&#xff0c;但是影響的時間不同。這就像吃飯前買單和吃飯…

Python從零開始快速搭建一個語音對話機器人

文章目錄 01-初心緣由02-準備工作03-語音機器人的搭建思路04-語音生成音頻文件05-音頻文件轉文字STT06-與圖靈機器人對話07-文字轉語音08-語音對話機器人的完整代碼09-結束語10-有問必答關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Python學…

SSH連接遠程服務器報錯:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解決方法

一.錯誤描述 報錯信息里提示了路徑信息/root/.ssh/known_hosts:20 二.解決方案 方法一 輸入以下指令&#xff1a; ssh-keygen -R XXX&#xff08;需要連接遠程服務器的ip&#xff09; 按照我的例子ip:10.165.7.136&#xff0c;會返回以下信息: 重新嘗試連接&#xff1a; 輸…

C++學習 --set

目錄 1&#xff0c; 什么是set 2&#xff0c; 創建set 2-1&#xff0c; 標準數據類型 2-2&#xff0c; 自定義數據類型 2-3&#xff0c; 其他創建方式 3&#xff0c; 操作set 3-1&#xff0c; 賦值 3-2&#xff0c; 添加元素&#xff08;insert&#xff09; 3-2-1&…

MySQL的樂觀鎖和悲觀鎖

1、樂觀鎖&#xff1a; 樂觀鎖在操作數據的時候&#xff0c;是保持一種樂觀的狀態&#xff0c;認為別的線程是不會同時修改數據的&#xff0c;所以是不會上鎖的&#xff0c;但是在更新的時候&#xff0c;會判斷一下在這個期間內是否有別的線程修改過數據。 主要的流程&#x…

規劃類3d全景線上云展館幫助企業輕松拓展海外市場

科技3D線上云展館作為一種基于VR虛擬現實和互聯網技術的新一代展覽平臺。可以在線上虛擬空間中模擬真實的展館&#xff0c;讓觀眾無需親自到場&#xff0c;即可獲得沉浸式的參觀體驗。通過這個展館&#xff0c;您可以充分、全面、立體展示您的產品、服務以及各種創意作品&#…