亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nuxt3+ElementPlus構(gòu)建打包部署全過程

 更新時間:2023年01月11日 10:11:12   作者:北極象  
網(wǎng)上大部分關(guān)于Nuxt打包部署教程可謂是可以用五花八門來形容,這對于第一次接觸的朋友簡直是無從下手,這篇文章主要給大家介紹了關(guān)于Nuxt3+ElementPlus構(gòu)建打包部署的相關(guān)資料,需要的朋友可以參考下

為何選Nuxt.js?

在前后端分離出現(xiàn)之前,傳統(tǒng)的web頁面都是服務(wù)端渲染的,如JSP、PHP、Python Django,還有各種模板技術(shù)Freemarker, velocity,thymeleaf、mustache等等。其實(shí)這套技術(shù)都挺成熟的,也用了很多年。

但前后端分離出現(xiàn)后,帶來兩個好處:

  • 工程上的分工,讓前端專門盯前端技術(shù),開發(fā)效率上得到提升
  • 通過各種CDN, nodejs技術(shù),前端的性能能持續(xù)優(yōu)化,部署方式更為靈活多變,帶來更多的想象空間

vue系的Nuxt.js 和 React系的Next.js誰更勝一籌?目前我還沒有答案,貌似后者更成熟一些,但Nuxt也發(fā)展迅速。

工程package.json參考

{
  "name": "mall",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "serve": "nuxt dev",
    "preview": "nuxt preview",
    "start": "nuxt start",
    "generate": "nuxt generate"
  },
  "dependencies": {
    "@nuxt/content": "^1.0.0",
    "@nuxtjs/pwa": "^3.3.5",
    "core-js": "^3.25.3",
    "element-plus": "^2.2.27",
    "@element-plus/icons-vue": "^2.0.10",
    "vue": "3.2.45",
    "pinia": "^2.0.14",
    "@pinia/nuxt": "^0.4.5"
  },
  "devDependencies": {
    "nuxt": "^3.0.0",
    "nuxt-windicss": "^2.5.5",
    "vite": "^3.2.4",
    "@nuxt/types": "^2.15.8",
    "@nuxt/typescript-build": "^2.1.0",
    "@iconify/vue": "^3.2.1",    
    "@vueuse/nuxt": "^8.4.2",
    "@windicss/plugin-animations": "^1.0.9",
    "sass": "^1.51.0"
  }
}

目錄結(jié)構(gòu)

約定成俗的目錄結(jié)構(gòu):

├── app.vue # Nuxt 3 應(yīng)用程序中的主組件 入口組件
├── components # 組件目錄,支持自動導(dǎo)入
├── layouts # 布局目錄
├── composables # 公共函數(shù),支持自動導(dǎo)入
├── assets # 靜態(tài)資源目錄 與vue項目的assets相同
├── middleware # 路由中間件
├── nuxt.config.ts # Nuxt 配置文件,可以理解成vue.config.js 文件名必須是nuxt.config 后綴名可以是.js,.ts或.mjs
├── package.json
├── pages # 基于文件的路由
├── plugins #插件
├── public # 不會參與打包,與vue項目的public類似直接掛在服務(wù)器的根目錄
├── README.md
├── server
├── tsconfig.json
└── yarn.lock

注意:

  • composables下如果有嵌套目錄,則需要在嵌套目錄下放置index.ts,再在里面export相應(yīng)對象。
  • components組件嵌套在目錄內(nèi),可以用駝峰式引入,如引入components/user/avatar.vue,可以用<UserAvatar>
  • server目錄,下面可以有api,middleware, plugin等子目錄,api下面每個文件對應(yīng)一個restful API,好像沒法一個文件定義多個API。

頁面之間的關(guān)系

入口點(diǎn)在app.vue中:

<script setup>
import { ID_INJECTION_KEY } from "element-plus";
provide(ID_INJECTION_KEY, {
  prefix: 100,
  current: 0,
});
</script>
<template>
  <div>
    <NuxtLayout>
      <NuxtLoadingIndicator :height="5" :duration="3000" :throttle="400" />
      <NuxtPage />
    </NuxtLayout>
  </div>
</template>

通過<NuxtPage>找到layout下某個layout,可以通過名稱指定layout,缺省是layouts/default.vue:

<!--default.vue文件-->
<template>
  <main class="py-2 px-10 text-center">
    <slot />
    <Footer />
    <div class="mt-5 mx-auto text-center opacity-25 text-sm">
      
    </div>
  </main>
</template>

然后,default.vue中的slot會被route里指定的某個page替換,默認(rèn)的page是pages/index.vue。
在page里就可以調(diào)用我們在components目錄下存放的各個組件了。

<template>
  <div>
    <Header />
    <PageWrapper>
      hello world
    </PageWrapper>
  </div>
</template>
<script lang="ts" setup>
import { ref } from "vue";
const activeIndex = ref('1')
const activeIndex2 = ref('1')
const handleSelect = (key: string, keyPath: string[]) => {
  console.log(key, keyPath)
}
const value1 = ref();
</script>
<style></style>

上面這個page用到了兩個組件:Header和PageWrapper,分別對應(yīng)components下的Header/index.vue和page/Wrapper.vue文件。

這就是從app.vue->layout->page->component的調(diào)用關(guān)系。

幾個主要命令

  • nuxt 啟動一個熱加載的 Web 服務(wù)器(開發(fā)模式) localhost:3000。
  • nuxt build 利用 webpack 編譯應(yīng)用,壓縮 JS 和 CSS 資源(發(fā)布用)。
  • nuxt start 以生產(chǎn)模式啟動一個 Web 服務(wù)器 (需要先執(zhí)行nuxt build)。
  • nuxt generate 編譯應(yīng)用,并依據(jù)路由配置生成對應(yīng)的 HTML 文件 (用于靜態(tài)站點(diǎn)的部署)。

主要參數(shù):

–config-file 或 -c: 指定 nuxt.config.js 的文件路徑。

–spa 或 -s: 禁用服務(wù)器端渲染,使用 SPA 模式

–unix-socket 或 -n: 指定 UNIX Socket 的路徑。

動態(tài)組件

使用vue中動態(tài)組件的寫法要使用resolveComponent語法:

<template>
  <div>
    <component :is="isHeader ? TheHeader : 'div'" />
  </div>
</template>
<script setup>
const isHeader = ref(1)
// 組件
const TheHeader = resolveComponent('TheHeader')
</script>

獲取后臺數(shù)據(jù)

Nuxt3 再不需要axios這個模塊了,直接采用內(nèi)置的useFetch, useLazyFetch, useAsyncData and useLazyAsyncData幾個方法。

await useFetch(() => "/my/post/url", {
        method: 'POST',
        mode: 'cors', // 允許跨域
        body: { some: true },
        initialCache: false,
        onResponse({ request, response, options }) {
    	    // Process the response data	    	 
    	},
    	
    });

也可以這么寫:

onMounted(async () => {
    const{ data, pending, error, refresh } = await useFetch(() => 'http://localhost:8888/cms/api/ebook/listall', {mode: 'cors'}, { immediate: true })
    const bookList = JSON.parse(data.value) // 注意data是一個vue的ref對象,需要.value獲得其值
    bookList.forEach(book => {
      console.log(book.bookName)
    });
})

SSR

部署 Nuxt.js 服務(wù)端渲染的應(yīng)用不能直接使用 nuxt 命令,而應(yīng)該先進(jìn)行編譯構(gòu)建,然后再啟動 Nuxt 服務(wù),可通過以下兩個命令來完成:

nuxt build
nuxt start

打包方式

nuxt build

會為我們生成 .nuxt文件

部署

三種部署形式:

  • SSR渲染部署。先nuxt build,再nuxt start
  • 靜態(tài)部署。先nuxt generate編譯成靜態(tài)文件,會生成dist 文件夾,所有靜態(tài)化后的資源文件均在其中。然后扔到nginx上
  • SPA部署。nuxt build --spa, 自動生成dist/文件夾,然后扔到nginx上

參考文檔

 總結(jié)

到此這篇關(guān)于Nuxt3+ElementPlus構(gòu)建打包部署的文章就介紹到這了,更多相關(guān)Nuxt3 ElementPlus打包部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue2.0 實(shí)現(xiàn)移動端圖片上傳功能

    Vue2.0 實(shí)現(xiàn)移動端圖片上傳功能

    本文主要介紹VUE2.0圖片上傳功能的實(shí)現(xiàn)。原理是通過js控制和input標(biāo)簽的方式完成這一效果,無需加載其他組件。具體實(shí)例大家大家參考下本文
    2018-05-05
  • Vue進(jìn)行數(shù)據(jù)可視化圖表展示的實(shí)現(xiàn)示例

    Vue進(jìn)行數(shù)據(jù)可視化圖表展示的實(shí)現(xiàn)示例

    數(shù)據(jù)可視化是現(xiàn)代化的數(shù)據(jù)分析和展示方式,可以使數(shù)據(jù)更加直觀、易于理解和傳達(dá),Vue作為一款流行的前端框架,提供了豐富的插件和工具來實(shí)現(xiàn)數(shù)據(jù)可視化圖表展示,本文將介紹如何使用Vue和Echarts/D3.js來實(shí)現(xiàn)數(shù)據(jù)可視化圖表展示,并提供示例代碼和實(shí)際應(yīng)用場景
    2023-10-10
  • Vue+ECharts實(shí)現(xiàn)中國地圖的繪制及各省份自動輪播高亮顯示

    Vue+ECharts實(shí)現(xiàn)中國地圖的繪制及各省份自動輪播高亮顯示

    這篇文章主要介紹了Vue+ECharts實(shí)現(xiàn)中國地圖的繪制以及拖動、縮放和各省份自動輪播高亮顯示,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • vue微信分享插件使用方法詳解

    vue微信分享插件使用方法詳解

    這篇文章主要介為大家詳細(xì)紹了vue微信分享插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Vue.js中輕松解決v-for執(zhí)行出錯的三個方案

    Vue.js中輕松解決v-for執(zhí)行出錯的三個方案

    v-for標(biāo)簽可以用來遍歷數(shù)組,將數(shù)組的每一個值綁定到相應(yīng)的視圖元素中去,下面這篇文章主要給大家介紹了關(guān)于在Vue.js中輕松解決v-for執(zhí)行出錯的三個方案,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • vue中如何去掉空格的方法實(shí)現(xiàn)

    vue中如何去掉空格的方法實(shí)現(xiàn)

    這篇文章主要介紹了vue中如何去掉空格的方法實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vuex詳細(xì)介紹和使用方法

    Vuex詳細(xì)介紹和使用方法

    本文詳細(xì)講解了Vuex和其使用方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • vue中的for循環(huán)以及自定義指令解讀

    vue中的for循環(huán)以及自定義指令解讀

    這篇文章主要介紹了vue中的for循環(huán)以及自定義指令,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解vue3中如何使用youtube-player

    詳解vue3中如何使用youtube-player

    這篇文章主要為大家介紹了詳解vue3中如何使用youtube-player示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解vue3.0 的 Composition API 的一種使用方法

    詳解vue3.0 的 Composition API 的一種使用方法

    這篇文章主要介紹了vue3.0 的 Composition API 的一種使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10

最新評論