国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

nuxt3使用記錄一:框架摸索

這篇具有很好參考價值的文章主要介紹了nuxt3使用記錄一:框架摸索。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

之前直接用的Vue3,后面為了seo,了解到Vue3用SSR渲染很復雜,甚至衍生了出nuxt3這個框架,這個框架在github已經(jīng)有50K star了,也已經(jīng)是個非常成熟的框架了,不過我感覺國內(nèi)的資料也不多,看來國內(nèi)接受新事物的速度依然很慢,大廠估計都自研了,小公司就用老方法PHP啥的。

學習nuxt3最詳細的資料也就是官方文檔,不過,說實話也很不詳細。我研究了幾天,說難其實也不難,說簡單也不簡單,因為整個框架按約定的自動配置的東西非常多,不了解的話,不知道框架的運作機制,都不知道哪些文件該放哪里。
下面根據(jù)實踐經(jīng)驗,記錄一些覺得官方文檔沒詳細介紹,又不那么好理解的東西

nuxt3 的SSR渲染原理

與Vue3傳統(tǒng)渲染對比

Vue3的原始渲染,是單文件組件,渲染的結果是一個html加一個js和css文件等,服務器通過nginx等代理,讓客戶端可以獲取到這個html文件(就跟獲取個普通文件是一樣的),瀏覽器訪問html,從而再次加載js和其他靜態(tài)文件,完全由客戶端去解析js文件。所以服務器不需要nodeJS環(huán)境

優(yōu)勢劣勢就不去對比了,網(wǎng)上很多,這里最大的問題是搜索引擎是不會爬取js里面的內(nèi)容的,所以非常不利于seo。所以需要用到SSR渲染

SSR也就是能把Vue的頁面,在服務器端就給渲染成靜態(tài)的html頁面,它是有網(wǎng)頁的內(nèi)容的,所以搜索引擎的爬蟲能夠直接獲取到里面的內(nèi)容,從而提高了seo,這里的服務器就需要有nodeJS環(huán)境去解析js文件從而渲染頁面

nuxt3渲染機制(個人理解,可能有誤)

但是這里有個問題,頁面的有些數(shù)據(jù)是由后端動態(tài)提供的,所以在渲染頁面前,需要先從后端獲取數(shù)據(jù)。nuxt3解決該問題的辦法,是在客戶端和后端之間,還設置了一層server端:

客戶端<——>server<——>后端

所以,在官方文檔里,看到http請求方式大多是await的同步請求,和之前用axios的異步差異很大,以前都是要在.then()里面去處理后端的數(shù)據(jù),否則客戶端界面會卡死。而官方文檔就描述的很不詳細,其實它用await userfetch()向后端發(fā)起請求,那些場景都是在server端渲染頁面時去做的,并不是客戶端直接發(fā)起的請求,server把從后端獲取的數(shù)據(jù)直接渲染成靜態(tài)頁面,再返回給客戶端,客戶端無需再次渲染,直接就展示頁面。所以你看官方文檔的代碼老是await 。在真實業(yè)務上的客戶端發(fā)起的http請求,還是要用promise進行異步請求。關于客戶端的http請求,我也做了封裝,感興趣可以看看。

nuxt3框架一些不好理解的點

第三方組件引入

常見的就是引入UI組件,成熟的UI組件,應該都會適配NUXT3的,都會特別說明在NUXT3中如何引入,如何按需自動加載,自動導入等。如果沒有官方適配的UI組件,建議換一個。
但是有時非用不可,也是可以的,就按照普通Vue3的引入方式,比如vite自動導入的(你說官方文檔連vite的自動導入配置都沒說明的,建議馬上換一個),就在nuxt.config.tsvite下進行配置:

import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { NaiveUiResolver } from "unplugin-vue-components/resolvers";
export default defineNuxtConfig({
	.........其他配置
	// 下面是我引入naiveUI 的配置
    vite: {
        plugins: [
            AutoImport({
                imports: [
                    {
                        "naive-ui": [],
                    },
                ],
            }),
            Components({
                resolvers: [NaiveUiResolver()],
            }),
        ],
    },
});

對,就照著原來的配置方法配置就好(除非官方有專門的nuxt配置說明),不過,有可能那些自動導入,按需導入的功能會失效。

路由

nuxt3的路由也是基于Vue-route封裝的,所以從老項目遷移的時候,還能不換路由方式,但是它又做了封裝,比如<router-view >就沒用了,你得用<NuxtPage />來代替,關鍵它不如<router-view >自由,在嵌套路由上,nuxt限制很多。

nuxt3使用文件路由,根目錄下的pages目錄下的所有.vue文件都會根據(jù)文件名和目錄名自動生成路由。這樣可以省略路由配置,但是卻加了很多限制,特別是嵌套路由。

比如我的頁面是由頂部導航欄+左側(cè)導航欄+中間區(qū)域組成,之前我用個layout組件分區(qū)域,然后<router-view >來切換中間區(qū)域的內(nèi)容即可。但是不能直接用<NuxtPage />來實現(xiàn)。你必須按照他的嵌套路由規(guī)則,來實現(xiàn)嵌套路由,才能實現(xiàn)上面的這種布局。

而nuxt3中,像這種布局需求,需要用到layout組件來實現(xiàn),如果你只有一種布局,建議直接卸載app.vue 上,這里的內(nèi)容全局應用,也就意味著頂部導航欄始終存在于所有頁面中。至于多種布局的,我還沒研究,建議看官方文檔琢磨下。

總之,nuxt3的路由很死板。剛用很不習慣。不過倒是省了一些代碼

路由中間件

路由中間件也有固定的實現(xiàn)模板,先在根目錄新建文件夾middleware這個文件夾的,然后新建一個route.global.ts文件,帶global后綴的文件,意味著它全局應用,所有路由都會調(diào)用。然后其中的方法:

export default defineNuxtRouteMiddleware((to, from) => {
    if (to.path === "/") {
        return navigateTo("/home/about");
    }
});

對,這個方法的名稱也是固定的,這里的所有幾乎都是固定的,也就是框架的約定,你只要這么寫,他就會自動加載了。再復雜的中間件我也沒去研究了。

狀態(tài)管理(簡單理解為全局變量)

nuxt3框架提供了自帶的狀態(tài)管理模塊useState(),你可以在任何地方像下面這樣定義一個全局變量:const counter = useState<number>('counter', () =>1)
不過我建議在composables目錄下新建一個ts文件來定義和初始化這些全局變量,因為這樣可以避免在初始化前被調(diào)用,并且目錄里的全局變量也會自動加載,所有地方直接使用,無需手動導入:
例如我在composables目錄下新建一個locale.ts文件:

export const useCounter = () => {
    return useState<number>("counter", () => 1);
};

然后,你就可以在其他.vue和 .ts文件中引用該全局變量(無需手動導入useCounter):

let counter=useCounter().value

或者,你可以直接全局修改它的值:

useCounter().value++ // 任意地方進行全局修改

使用還是很簡單的。所以,我放棄引入pinia了,因為我就是簡簡單單的定義一些全局變量,nuxt3自帶的這個更好用。

靜態(tài)項目構建

nuxt3默認生成的框架就自帶了兩種構建命令:

        "dev": "nuxt dev", // 開發(fā)環(huán)境直接運行
        "build": "nuxt build", // 混合渲染構建
        "generate": "nuxt generate", // 純靜態(tài)構建

nuxt3總體來說支持三種構建方式:

  1. 默認的混合渲染構建,對應的也就是SSR,不過它支持自定義配置,哪些頁面靜態(tài)構建,哪些還是走傳統(tǒng)的SPA,我沒深究,但是確實支持對每個頁面的構建方式指定,對應的命令是:nuxt build
  2. 第二種是傳統(tǒng)vue3的SPA構建,需要在nuxt.config.ts中配置ssr:false。這樣就進行SPA構建,不過這種方式的話,建議直接使用vue3傳統(tǒng)項目框架來整,然后執(zhí)行nuxt build
  3. 第三種就是SSG構建,就是純靜態(tài)頁面,這種構建最有利于seo,且無需server端渲染,是對客戶端和服務端都最友好的方式,缺點就是頁面是純靜態(tài)的,無法根據(jù)數(shù)據(jù)動態(tài)生成。對應的命令是:nuxt generate

我第一次構建挺順利的,說明這個框架挺成熟的,就只遇到一個地方報錯,我原先在pages目錄下創(chuàng)建了個.ts文件,用來寫一些通用的方法,這個文件在SSG構建時是不行的,也就是說pages目錄下不允許有.ts文件。所以我就把這個文件挪到composables目錄下去,就可以了。構建出來的頁面也沒啥問題,都挺好的。整體大小比SPA方式更小。文章來源地址http://www.zghlxwxcb.cn/news/detail-846964.html

到了這里,關于nuxt3使用記錄一:框架摸索的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 微前端-qiankun:vue3-vite 接入 vue3、nuxt3、vue2、nuxt2等子應用

    一、了解qiankun.js qiankun - qiankun 1.1、簡單, 任意 js 框架均可使用。微應用接入像使用接入一個 iframe 系統(tǒng)一樣簡單,但實際不是 iframe。 1.2、完備, 幾乎包含所有構建微前端系統(tǒng)時所需要的基本能力,如 樣式隔離、js 沙箱、預加載等。解耦,與技術無關。 1.3、生產(chǎn)可用, 已

    2024年02月03日
    瀏覽(47)
  • 什么是 CSR、SSR、SSG、ISR - 渲染模式詳解

    本文以 React 、 Vue 為例,介紹下主流的渲染模式以及在主流框架中如何實現(xiàn)上述的渲染模式。 看渲染模式之前我們先看下幾個主流框架所提供的相關能力,了解的可跳到下個章節(jié)。 這是主流框架最基本的能力,就是將組件渲染到指定的 DOM 節(jié)點上。在 React 中所使用的 API 是

    2024年02月11日
    瀏覽(20)
  • Nuxt3.0中使用EChart可視化圖表?

    Nuxt3.0中使用EChart可視化圖表?

    ??在 Nuxt3.0項目 中用到了 可視化圖表 ??,于是我用了 EChart可視化圖表 庫。但是在官網(wǎng)我沒有找到針對 在Nuxt3.0中使用EChart 的方法,于是在這里記錄我的引入EChart并簡單使用的步驟。需要聲明的是,本文只針對在Nuxt3.0項目中使用EChart.js庫的可視化圖表進行講解,不針對EC

    2024年02月03日
    瀏覽(25)
  • nuxt3項目使用pdfjs-dist預覽pdf

    nuxt3項目使用pdfjs-dist預覽pdf

    使用的包的源代碼是?pdfjs - npm 但是我們實際上項目中使用的是pdfjs打包后的dist文件,也就是pdfjs-dist - npm 所以我們需要使用這個命令 我們可以克隆pdfjs這個包來看源代碼,里面有使用的例子,也可以根據(jù)源代碼自己打包生成你想要的版本的pdfjs-dist,官方文檔強調(diào)了對于新舊

    2024年02月09日
    瀏覽(23)
  • Nuxt3最終篇【自定義插件與UI組件庫的使用】

    Nuxt3最終篇【自定義插件與UI組件庫的使用】

    首先我們要知道插件是在plugins文件夾下定義的,讓我們開始編寫吧 需要在根目錄下創(chuàng)建 plugins 文件夾,nuxt會自動識別引用 這里我創(chuàng)建了plugins文件夾—》testplug.ts 使用該定義的pengke 這樣就能使用定義好的 pengke 了 每個框架都需要用到第三方組件庫,這里我演示使用 element-ui-p

    2024年02月11日
    瀏覽(19)
  • nuxt3項目在寶塔上使用pm2放到服務器

    nuxt3項目在寶塔上使用pm2放到服務器

    最近在將nuxt3項目扔到服務器上的時候遇到了一些問題,發(fā)現(xiàn)打包后的nuxt項目與正常的vue文件有些差別,缺失了index.html文件。 這邊就記錄下nuxt3項目是怎么放到服務器上的?? 一、打包nuxt3項目 執(zhí)行對應的打包命令? ? yarn build? ? 二、找到打包后的文件 ? ? 三、這里我使用

    2024年02月21日
    瀏覽(17)
  • 前端食堂技術周刊第 93 期:7 月登陸 Web 平臺的新功能、Node.js 工具箱、Nuxt3 開發(fā)技巧、MF 重構方案

    前端食堂技術周刊第 93 期:7 月登陸 Web 平臺的新功能、Node.js 工具箱、Nuxt3 開發(fā)技巧、MF 重構方案

    美味值:?????????? 口味:橙橙冰萃美式 食堂技術周刊倉庫地址:https://github.com/Geekhyt/weekly 大家好,我是童歐巴。歡迎來到前端食堂技術周刊,我們先來看下上周的技術資訊。 Deno 八月更新 Deno 1.36 更靈活的權限控制、Deno Deploy 可過濾、搜索的持久化日志、Fresh 1.3 路由

    2024年02月13日
    瀏覽(29)
  • 【Nuxt3】modules目錄和nuxt3模塊的簡單介紹

    【Nuxt3】modules目錄和nuxt3模塊的簡單介紹

    記錄下nuxt3項目中module的用法 使用 modules/ 目錄在應用程序中自動注冊本地模塊。 這是一個很好的地方,可以放置您在構建應用程序時開發(fā)的任何本地nuxt模塊。 nuxt模塊相當于npm包,可以發(fā)布到npm社區(qū)中 在modules/ 目錄下的本地模塊,會自動注冊模塊,無需在 nuxt.config.ts文件中

    2024年04月27日
    瀏覽(22)
  • 【Nuxt3】nuxt3目錄文件詳情描述:.nuxt、.output、assets、public、utils(一)

    【Nuxt3】nuxt3目錄文件詳情描述:.nuxt、.output、assets、public、utils(一)

    nuxt3的中文網(wǎng)站 上次簡單介紹了nuxt3創(chuàng)建項目的方法和目錄文件大概用處。 這次詳細說下.nuxt、.output、assets、public、utils五個文件夾的用處。 Nuxt在開發(fā)中使用.nuxt/目錄來生成你的Vue應用程序。 為了避免將開發(fā)構建的輸出推送到你的代碼倉庫中,你應該將這個目錄添加到你的

    2024年01月18日
    瀏覽(20)
  • nuxt3 + pinia + swiper +element-plus + less + 騰訊地圖 創(chuàng)建項目及使用

    nuxt3 + pinia + swiper +element-plus + less + 騰訊地圖 創(chuàng)建項目及使用

    在 nuxt3-app 目錄下下載依賴 運行 再訪問 http://localhost:3000 即可看到基礎界面了 (剛搭建的項目啥文件夾都沒有,這里面基本都是我自己創(chuàng)建的。) assets ,存放一些靜態(tài)資源,包括一些 Sass、Less ,在項目組件中引用的時候需要在開頭使用 ~assets/ 符號,如果你的靜態(tài)資源文件

    2023年04月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包