<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Vue 服務(wù)端渲染 Nuxt.js 用起來真的挺香的。

          共 3281字,需瀏覽 7分鐘

           ·

          2021-02-19 19:47

          嗨,好久不見。

          我是你干貨滿滿、穩(wěn)定更新的勾勾。



          Nuxt.js 應(yīng)用


          Nuxt.js 是一個基于 Vue.js 的通用應(yīng)用框架。Nuxt.js 預(yù)設(shè)了利用 Vue.js 開發(fā)服務(wù)端渲染的應(yīng)用所需要的各種配置,為基于 Vue.js 的應(yīng)用提供生成對應(yīng)的靜態(tài)站點的功能。


          打開 Nuxt.js官網(wǎng):https://www.nuxtjs.cn/ ,學(xué)習(xí)指南寫的非常詳細(xì)且通俗易懂。根據(jù)指南,我們可以看到有兩種安裝方式,一種使用 create-nuxt-app 腳手架工具,另一種是自己手動創(chuàng)建。


          安裝


          腳手架安裝

          接下來我們分別嘗試不同的安裝方式,先使用腳手架進(jìn)行安裝,執(zhí)行命令 :npx create-nuxt-app creact-nuxt


          接著,在命令行中會有很多的選擇項,分別有項目名稱、開發(fā)語言、UI組件庫、服務(wù)器框架、測試框架、HTTP請求庫等等,可以根據(jù)自己的需要進(jìn)行不同的選擇,安裝成功過后,命令行中會給出對應(yīng)的提示信息。



          我們可以根據(jù)提示信息運行項目。項目有開發(fā)環(huán)境和生產(chǎn)環(huán)境兩種運行方式,開發(fā)環(huán)境下直接使用 npm run dev 即可,而要運行生產(chǎn)環(huán)境,則需要先進(jìn)行 build 編譯,編譯成功后才能開啟項目運行。


          因為項目是剛剛初始化的,我們并沒有寫任何內(nèi)容,所以,不管使用那種運行方式,我們能看到的都是下面這個頁面內(nèi)容。



          手動安裝

          不同于腳手架安裝,手動安裝需要我們自己創(chuàng)建項目并安裝所需擴展和插件,還需要我們自己寫好組件代碼,然后配置執(zhí)行命令,才能啟動運行。但是,手動創(chuàng)建更加考驗大家對項目的整體把控能力。


          執(zhí)行命令:mkdir nuxtnpm ?創(chuàng)建文件夾后,切換目錄:cd nuxtnpm ;

          然后執(zhí)行命令:npm init -y 創(chuàng)建項目并生成 package.json 文件;

          使用命令:npm install nuxt --save ?安裝 Nuxt.js 框架;


          在 nuxtnpm 目錄中,創(chuàng)建 pages 目錄及 pages/index.vue 組件文件,在組件文件中,寫如下代碼,打聲招呼:

          <template>  <div>    <h2> 嗨 Nuxt.js h2>  div>template>
          <script>export default {
          }script>


          最后,我們還要在 ?package.json 文件中,配置運行命令的腳本參數(shù):

          "scripts": {    "test": "echo \"Error: no test specified\" && exit 1",    "dev": "nuxt",    "build": "nuxt build",    "start": "nuxt start",    "generate": "nuxt generate"  },


          配置好命令參數(shù)后,就和前面的運行套路是一樣的了。


          npm run dev ?啟動一個熱加載的 Web 服務(wù)器(開發(fā)模式);

          npm run build 編譯項目,利用 webpack 編譯應(yīng)用,壓縮 JS 和 CSS 資源(發(fā)布用);

          npm run start 以生產(chǎn)模式啟動一個 Web 服務(wù)器 (需要先進(jìn)行項目編譯)。


          項目運行后,我們就可以看到剛剛寫的組件內(nèi)容了。



          需要注意的是,pages 目錄是必須的,Nuxt.js 框架會自動讀取該目錄下所有的 .vue 文件并自動生成對應(yīng)的路由配置。


          路由


          基礎(chǔ)路由

          基礎(chǔ)路由不需要配置,Nuxt.js 會根據(jù) pages 中的文件夾及文件自動生成路由配置。


          假設(shè) pages 的目錄結(jié)構(gòu)如下:

          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'    }  ]}


          同樣的,在 /.nuxt/router.js 文件中,我們也能夠看到相關(guān)內(nèi)容。


          路由導(dǎo)航

          Nuxt 中的路由導(dǎo)航有三種方式,一種就是普通的 a 標(biāo)簽跳轉(zhuǎn),太過于基礎(chǔ)這里就不說了;兩外兩種分別是 nuxt-link 組件和編程式導(dǎo)航。


          nuxt-link 組件用于在頁面中添加鏈接跳轉(zhuǎn)到其他頁面。目前的作用和 router-link 一致,推薦閱讀Vue 路由文檔來了解它的使用方法,所以,你在Vue 中如何使用,在Nuxt 中同樣如何使用就可以了。


          而編程式導(dǎo)航的用法,同樣與 Vue 中的使用方式一致:

          <template>  <div>    <h2>nuxt-link 跳轉(zhuǎn):h2>    <nuxt-link to="/user/info">Go to usernuxt-link>     <h2>編程式導(dǎo)航 跳轉(zhuǎn):h2>    <button @click="clickBtn">Go to userbutton>  div>template>
          <script>import axios from 'axios'export default { methods:{ clickBtn(){ this.$router.push('/user') } }}script>


          異步數(shù)據(jù)-asyncData


          Nuxt.js 擴展了 Vue.js,增加了一個叫 asyncData 的方法,使得我們可以在設(shè)置組件的數(shù)據(jù)之前能異步獲取或處理數(shù)據(jù)。


          asyncData 方法會在組件(限于頁面組件)每次加載之前被調(diào)用。它可以在服務(wù)端或路由更新之前被調(diào)用。Nuxt.js 會將 asyncData 返回的數(shù)據(jù)融合組件 data 方法返回的數(shù)據(jù)一并返回給當(dāng)前組件。

          <template>  <div>    user-index page    <hr />        <div v-for="v in dataObj">      <h3>{{ v.name }}h3>    div>  div>template>
          <script>import axios from "axios";export default { async asyncData({ params }) { // 發(fā)送請求,獲取數(shù)據(jù) const { data } = await axios.get(`http://127.0.0.1`); // 解析數(shù)據(jù) const dataObj = JSON.parse(data); // 返回數(shù)據(jù)后,Nuxt 會合并data方法的數(shù)據(jù)給組件,無需額外代碼 return { dataObj }; },};script>


          Nuxt.js 對 SSG 的支持


          在開始之前,我們需要先了解 SSG 的含義,SSG(Static Site Generators):靜態(tài)站點生成。


          就是將應(yīng)用中用到的所有頁面,全部生成靜態(tài)文件的方案。靜態(tài)站點生成方案,更適合 CDN、緩存、內(nèi)容數(shù)據(jù)無變化的頁面,比如:宣傳頁、博客文章、幫助文檔、新聞頁面、電商產(chǎn)品列表等眾多應(yīng)用場景。因為頁面都是事先生成好的,一次構(gòu)建,反復(fù)使用,訪問速度快。


          那么,在 Nuxt.js 中如何將應(yīng)用靜態(tài)化導(dǎo)出呢?


          npm run generate 命令就是用來專門做靜態(tài)導(dǎo)出的,這個命令執(zhí)行后,Nuxt 會根據(jù)路由配置,將應(yīng)用的全部內(nèi)容生成對應(yīng)的 HTML 靜態(tài)站點資源,這個命令會創(chuàng)建一個 dist 文件夾,所有靜態(tài)化后的資源文件均在其中。


          推薦閱讀:

          術(shù)與器:React 服務(wù)端渲染和靜態(tài)站點生成

          手動實現(xiàn)一個自己的 React 服務(wù)端渲染

          Vue 3.0 中的響應(yīng)式是如何實現(xiàn)的?

          尤雨溪是個惡魔,Vite 三天 10 更


          點個“在看”和“”吧,

          畢竟我是要成為前端網(wǎng)紅的人。

          瀏覽 136
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人视频无码 | 日韩爱爱网站 | 麻豆激情 | 毛片一级片 | 一区二区三区四区五区六区久久 |