Nuxt項目搭建

来源:https://www.cnblogs.com/waitingbar/archive/2019/07/30/11272059.html
-Advertisement-
Play Games

一、項目目錄結構: 方式1、直接利用官方提供好的腳手架工具進行搭建:npx create-nuxt-app <項目名> 目錄會是這樣(具體目錄都放些什麼,請看官方文檔,詳細): 方式2、手工慢慢來,請看官方文檔:https://zh.nuxtjs.org/guide/installation#%E4 ...


一、項目目錄結構:

方式1、直接利用官方提供好的腳手架工具進行搭建:npx create-nuxt-app <項目名>

目錄會是這樣(具體目錄都放些什麼,請看官方文檔,詳細):

 

方式2、手工慢慢來,請看官方文檔:https://zh.nuxtjs.org/guide/installation#%E4%BB%8E%E5%A4%B4%E5%BC%80%E5%A7%8B%E6%96%B0%E5%BB%BA%E9%A1%B9%E7%9B%AE

 

二、為項目添加sass樣式表:

步驟1:命令:npm install --save-dev node-sass sass-loader

步驟2:在根目錄的配置文件nuxt.config.js中進行引入你需要添加的全局樣式表,如:

註:如果你需要在.vue文件內進行使用,需要在style標簽中添加 lang="scss" 如:

 

三、發起請求時需要使用 axios時,假如你沒有安裝過相關的依賴,那麼:

方式1:命令:npm install --save-dev axios 

然後在哪個頁面有需要時直接引用 import axios from 'axios'

方式2:命令:npm install --save-dev @nuxtjs/axios

(1)、進行全局配置,在nuxt.config.js中添加模塊 '@nuxtjs/axios' 如:

(2)、簡單使用如(具體可以參照站點:https://zh.nuxtjs.org/guide/async-data):

註:假如你想需要在一個地方進行統一設置介面請求的API,需要通過註冊攔截器和更改全局配置的話,你還可以這樣:

(可以參考文檔:https://axios.nuxtjs.org/)

1、你需要先在 plugins 目錄下添加一個文件 axios.js,如:

 

 

2、引用使用,在nuxt.config.js中的plugins添加 '@/plugins/axios.js',如:

3、想要生效看到效果是吧?請重新啟動服務,命令:npm run dev

 

四、動態路由

1、假如你希望你的站點鏈接對SEO更加友好點(請求詳情的id不以問號的展示形式來連接),比如由 http........./product/details?id=xxxx 變為 http........./product/xxxx。那麼,你可以這樣玩:

(1)、目錄結構如(註意是 _id.vue):

Nuxt.js會把目錄生成的路由表,如:

{ name: 'product-id', path: '/product/:id?', component: 'pages/product/_id.vue' }

當然,如果你覺得這樣的表述不夠清晰,請穩步這裡:https://zh.nuxtjs.org/guide/routing#%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1

 

(2)、目錄結構好了,那麼在實際的頁面跳轉中,該怎樣把id傳過去呢?path還好理解,特別是當你用到name(推薦方式)進行處理時,請看以下寫法:

1)、方式1 (path): <nuxt-link :to="'/product/' + 這裡傳入你的id">點擊進入詳情</nuxt-link>,

比如item對象里有個id:<nuxt-link :to="'/product/' + item.id">點擊進入詳情</nuxt-link>

2)、方式2 (name): <nuxt-link :to="{name: 'product-id', params: {id: 這裡傳入你的id}}">點擊進入詳情</nuxt-link>,

 同上,比如item對象里有個id:<nuxt-link :to="{name: 'product-id', params: {id: item.id}}">點擊進入詳情</nuxt-link>

註:特別的,方式2時,傳遞id時請用params,要不然它自動識別不到。當然,如果你還有其它的參數要傳的話,可以在params下的對象里書寫,當然也可以再多跟一個query的欄位來把參數帶過去,如:

 <nuxt-link :to="{name: 'product-id', params: {id: item.id}, query: {xxx: xxxx}}">點擊進入詳情</nuxt-link>

 

 五、服務端渲染應用部署

1、需要發佈的文件準備

(1)、先進行代碼構建打包,命令:npm run build 

  註:

    1)、生成的包將會在 .nuxt 這個目錄下

    2)、因.nuxt這個目錄在mac下是隱藏著的,所以(非Mac時可以忽略以下幾點)

    3)、需要顯示用命令:defaults write com.apple.finder AppleShowAllFiles -bool true

    4)、當執行了以上顯示的後,接下來還需要操作重啟下“訪達”,  點擊後彈出的框 進行退出"訪達"(會自己重啟)

    5)、這下就可以看到隱藏的文件了,

    6)、需要對文件可以再隱藏時,執行defaults write com.apple.finder AppleShowAllFiles -bool false , 再執行下第4步即可 (命令在顯示的區別就是後面的 true 與 false)

 

2、需要放置到伺服器上的代碼只需要4個目錄:.nuxt、static、nuxt.config.js、package.json以下圖:

註:目錄1(.nuxt)、這是打包構建好的所有依賴文件及源文件等等

  目錄2(static)、就是靜態資源包,因為上面打包構建時,不會被打進去的,所以得帶上它

  目錄3(nuxt.config.js)、一些配置文件,得帶上。

  目錄4(package.json)、這就比較重要了,當"start": "cross-env NODE_ENV=production node server/index.js",時需要把它更改為:"start": "nuxt start" 。

3、那麼,現在把所需要的代碼都準備好了後,那麼接下來,把相關目錄文件上傳到你的功能變數名稱所指向的根目錄。

4、接下來得修改下服務端的配置文件,添加路徑轉發(proxy_pass)處理,因預設在本地運行時,都是訪問 http://localhost:3000 ,我用的是nginx.配置如:

server {
  listen 80;
  server_name demo.htmlx.club;
  location / {
    proxy_pass http://localhost:3010;
    index index.html index.htm;
  }

}

註:配置完後需要對nginx進行重啟,比如我的  cd /usr/local/nginx/sbin 到達sbin 下 判斷是否配置正確: ./nginx -t  , 提示成功後就進行執行重啟操作:./nginx -s reload

5、最後,切換到功能變數名稱所指向的根目錄下,先可以npm i (安裝項目所需要的所有依賴).

6、好了,感覺快好了,運行 npm run start 跑起來吧。

7、如果沒有意外,運行了npm run start 後  再訪問下你指定的功能變數名稱,那是可以看到效果的了(右鍵查看源文件,可以看到渲染出數據了).

8、那麼當你把剛纔執行運行 npm run start 的命令框關閉時,再看下你的功能變數名稱是還能正常訪問?估計是掛了吧?沒事,我們有的是解決辦法,請繼續往下走。。。

 

六、安裝pm2

1、全局安裝命令 npm i pm2 -g 

2、安裝完pm2後,那麼就直接跑咯,命令:pm2 start npm -- run start (執行了這命令後就不用單獨執行npm run start了哦),這裡功能變數名稱理論是能正常訪問了,接下來,這服務就會一直在跑了,除非:你執行了pm2 stop (後面可以接相關參數的)停止了它。

3、當然了當你想查看下pm2所守護的進程有什麼的話你可以用 pm2 list  , 又或者你想重新發佈了項目後需要再重啟一把,那你可以用 pm2 restart  

註:如果同一個伺服器需要起多個pm2進程的話,可以以設置環境變數的形式。如:PM2_HOME=“xxx” pm2 start ........   https://pm2.keymetrics.io/docs/usage/specifics/

 

七、靜態應用部署

1、當你的站是比較簡單的,對SEO也有些少要求的,那麼我建議你用靜態應用部署。

2、這部署比較簡單明瞭,就官網所說的 npm run generate,把生成的dist目錄下的文件一把丟到伺服器所指定功能變數名稱的根目錄下即可,啥事都沒了。。

 

 

 

 好咯,就這麼多先,有想法的可以一起評論來研究下哦~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 需要工具: 準備條件 相關內容請參考: 實戰FFmpeg--編譯iOS平臺使用的FFmpeg庫:http://www.cnblogs.com/sunminmin/p/4463741.html ffmpeg編譯及使用:http://www.jianshu.com/p/d3f99933f2eb 一.下載 ...
  • 如果OKHTTP第一次出現SocketTimeoutException,後續即使網路已經恢復正常,請求也始終返回SocketTimeoutException。 ...
  • 一、層疊性 1.定義:CSS處理衝突的一種能力 2.註意點:層疊性只有在多個選擇器中“同一標簽”,然後又設置了“相同的屬性”,才會發生層疊性 3.CSS縮寫:Cascading StyleSheet 解釋:如上代碼我們對p標簽以及odd類進行了屬性的設置,但只遵循了一種屬性設置,因此可以看出CSS具 ...
  • 給img添加類 類的style為 display:block; width:100%!important; height:100%!important; 即可響應手機和頁面的圖片 ...
  • 1.axios 原理還是屬於 XMLHttpRequest, 因此需要實現一個ajax。 2.但還會需要一個promise對象來對結果進行處理。3.ajax實現var Ajax={ get: function(url, fn) { // XMLHttpRequest對象用於在後臺與伺服器交換數據 v ...
  • 功能介紹 本系統是基於fabric.js實現的canvas版圖片,文本編輯器,支持對圖片的放大,縮小,旋轉,鏡面翻轉,拖動,顯示/隱藏圖層,刪除圖層,替換圖層等操作,對文本支持修改文本內容,顏色,字體,加粗,斜體,下劃線,背景色等,同時支持圖片已有的操作,拖動圖層有輔助線功能,可對畫布做放大縮小功能 ...
  • 場景描述 如下,打開頁面時,獲取預設選中的項目,同時也會初始化Combobox下拉框下拉列表數據 問題描述 獲取預設選中項目及下拉列表的js函數位於common.js文件,類似如下: // 根據項目類型,獲取對應的項目 function getProjects(projectType) { // 請 ...
  • SEO定義 Search Engine Optimization 搜索引擎優化 一,常用的HTTP-EQUIV類型: Set-Cookie(cookie設定) 說明:如果網頁過期,存檔的cookie將會被刪除(必須是GMT的時間格式) <meta http-equiv="Set-Cookie" co ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...