[Nuxt3] 如何支援 iOS13 InApp WebView

閱讀時間約 5 分鐘

前言

近期用 Nuxt3 開發內嵌於 iOS、Android App 的網頁,並且要支援到 iOS13 版本。

測試時發現 Nuxt3 在 iOS13 功能會無法正常執行,因此順手記錄這個踩坑過程…XD

坑

第一坑 Nuxt3 Announcing

Nuxt 3 officially supports evergreen browsers only. The "core browser set" is what we (And web.dev team) believe most developers need to support most of the time in the absence of specific constraints. It takes into account usage numbers, developer expectations, and existing support in the ecosystem. The core browser set targets the 2 most recent major versions of Chrome, Firefox, and Edge on a monthly basis and Safari on a yearly basis.

On the server side, Nuxt 3 supports Node.js 14, 16, 18, and 19 at the moment. We encourage everyone to use the latest LTS releases of Node.js, we push them once widely adopted by major deployment platforms. This means we keep supporting Node.js versions as long as they are supported by the Node.js team on a rolling basis in non-major releases of Nuxt. Since 14.x is being end-of-life soon, we highly encourage you to update to the latest 18.x whenever possible.

這是我找到 Nuxtjs 發布 Nuxt3 版本時其中一段 “The browser and Node.js support” 聲明內容,讀完前兩段我就知道我踩到坑了,而其意思大概就是說: 「我們會以支援瀏覽器最新版本為主」。所以,只好去找 Nuxt3 如何自己調整支援度的設定。

補充說明:

  • Evergreen browser: 會自我升級至新版的瀏覽器 (e.g., Chrome, Edge …)
  • core browser set: 針對 Chrome、Firefox 和 Edge 的最近兩個主要版本以及每年針對 Safari 進行更新

第二坑 Nuxt3 Vite Build 參數說明

Nuxt3 Configuration 官方文件中會以 Vite 的預設設定進行打包,並且不是所有 Vite 設定都支援

vite configuration

vite configuration

Vite 官方預設瀏覽器支援

  • Firefox ≥ 78
  • Safari ≥ 14
  • Edge ≥ 88
  • Chrome ≥ 87

官方文件: Vite default browser support

因此,最後只需要再 Nuxt3 中增加以下設定即可

// nuxt.config.js

vite : {
build: {
target: [‘safari13’,]
}
}

<aside> 💡 這邊的 safari 版本是指 iOS版本的頭兩位數字,e.g. iOS14.xxx.xx ⇒ safari14

</aside>

補上這邊坑點, Nuxt3 Configuration Vite 參數說明中 build 參數只有 assetDir、emptyOutDir,加上前面還特別提說不是所有參數都支援,真的哭….

Nuxt3 configuration

Nuxt3 configuration

總結

比較驚訝的是現在新的框架更傾向支援瀏覽器的最新版本,因為以前的框架都是主打支援度。

我想應該是為了加速技術的推進,畢竟這些都會影響到 資安、版本支援的開發成本…等等。

最後,雖然最後只是加了短短幾行的設定,過程中真的找了很久 ( Nuxt3 文件真的很不完整,看到不少人抱怨XD)。

希望內容能幫助到你,有任何問題還請提出糾正~~

參考

Announcing 3.0 · Nuxt

Nuxt Configuration Reference · Nuxt

Building for Production | Vite (vitejs.dev)

avatar-img
1會員
4內容數
紀錄閱讀Vue3框架思維、設計實戰的過程
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
Apple 在 2024 WWDC 上宣佈了 iPhone 最新系統「iOS 18」。本文將提供 iOS 18 功能、釋出時間、下載教學以及災情等資訊。
Thumbnail
一般用戶不建議升級至 iOS 18 測試版,因為這個版本可能存在大量Bug和不穩定因素,導致如 LINE 功能錯誤或銀行 App 閃退等問題。Apple 釋出的 iOS 18 Beta 測試版本主要供開發者使用,並非穩定的正式版。建議等待正式版於9月推出後再考慮更新。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
NPM 全稱為 ( Node Package Manager ),直接翻譯就是 "node套件管理器" ,是 Node.js 預設的,當下載 Node.js 時也會一並下載到本機端並安裝,而 Node.js 則是能讓 JavaScript 語法實現在後端伺服器運行的一種環境,可謂是前端開發的好朋友。
Thumbnail
env 環境變數的設定,通常是為為了 server 而設定的,能快速的切換狀態,但現在的網頁開始,前端的範圍逐漸往後端靠近,所以在設定,也會有 client 的變數會想要在 .env 的情況。此篇就是以 nuxt 為實作,分享此內容 前端架構 最常見的 front 架構,就是把專案 buil
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
Apple 在 2024 WWDC 上宣佈了 iPhone 最新系統「iOS 18」。本文將提供 iOS 18 功能、釋出時間、下載教學以及災情等資訊。
Thumbnail
一般用戶不建議升級至 iOS 18 測試版,因為這個版本可能存在大量Bug和不穩定因素,導致如 LINE 功能錯誤或銀行 App 閃退等問題。Apple 釋出的 iOS 18 Beta 測試版本主要供開發者使用,並非穩定的正式版。建議等待正式版於9月推出後再考慮更新。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
NPM 全稱為 ( Node Package Manager ),直接翻譯就是 "node套件管理器" ,是 Node.js 預設的,當下載 Node.js 時也會一並下載到本機端並安裝,而 Node.js 則是能讓 JavaScript 語法實現在後端伺服器運行的一種環境,可謂是前端開發的好朋友。
Thumbnail
env 環境變數的設定,通常是為為了 server 而設定的,能快速的切換狀態,但現在的網頁開始,前端的範圍逐漸往後端靠近,所以在設定,也會有 client 的變數會想要在 .env 的情況。此篇就是以 nuxt 為實作,分享此內容 前端架構 最常見的 front 架構,就是把專案 buil