Skip to main content

1-3


promise 語法詳細解析:http://promise.eddychang.me/docs/contents/ch5_flow_n_error/


s3 檔案若更新,檔案內容不一樣,名稱一樣,會造成 URL 取得的內容是舊的,但點 AWS 後台查看卻是新的情況


  • crypto-js : 加密用的 JS 套件
  • Vue 提供 mixin 來讓組件能共用同一個功能
  • import 要 mixin 複用的 vue 檔,在組件內 定義好 mixins: [ 變數 ],即可直接使用 mixins vue 檔內的生命鉤子、data 或 methods 等等
  • 如果變數名稱有重複以原組件為主, mixin 的會被覆蓋; 生命鉤子會一起執行,mixin 先

  • 在組件標籤上綁定原生事件(click mouseover)等等,會無效
  • 官網部版前要清 cache bls create-invalidation

  • 移除 Xcode 後,原本 VScode 內的 git 功能和 npm install 會受影響無法使用,最後 sudo xcode-select —install 才能用
  • 切換專案下 bls checkout-project
  • API 要使用 DynamoDB 或 Conito 等等任何操作,要在 template yaml 中的 role 設定允許 Action

Nuxt-i18n 要耕換語言時會更換網址路徑 (/tw), 官網做法是: <nuxt-link :to="switchLocalePath('en')">English</nuxt-link> 套用在公司官網上點擊感覺沒有重新載入,會回到頂部、路徑有變(/tw)而已,文字語言沒變,自己按重新整理後才會改變 (不知道是不是因為 Nuxt 模式選 SPA 的關係) 改用 <a :href="switchLocalePath('en')">English</a> 後能重新載入順利改變語言,跟 Vuetify 官網變更語言時一樣。

  • Nuxt 的 Vuetify 配置:https://github.com/nuxt-community/vuetify-module (能改字體、icon、載入自訂 css 等等配置)
  • <v-icon>mdi-facebook</v-icon> <v-icon>fab fa-facebook</v-icon> 不同家圖標依照官網資訊 輸入會有所不同 (會對應到 class 名稱)
  • Nuxt.config.js 包含 webpack、文件各種配置

  • Vue3 原始碼將是 tree-shakeable,也就是說如果沒用到某些功能,打包輸出時將不會包含
  • vue router 在 children 內的動態路徑(如果前面沒有其他路徑名),不用加 /,直接 :params ,不然會有在其他頁重整頁面後又回到動態頁面的 bug

  • Nuxt 每個 module 分陣列寫

今天 work report,下次要做完整投影片,版控、時程規劃、整體進度強調 寫 weekly report,紀錄工作項目時數,統計比例


  • 在 aws cloudfront 開啟 gzip 壓縮
  • 完整 preload css 資源 { rel: 'preload', href: 'https://fonts.googleapis.com', onload: 'this.rel = "stylesheet"', as: 'style' }

關於 font family 被 vuetify 蓋掉,照著 github 文件的方式不起作用:https://github.com/nuxt-community/vuetify-module#treeShake 無法客制 css 變數 原本舊版有分語言用不同字體,考慮在載入時根據語言異步載入不同語言檔案 在被vuetify覆蓋的情況下就算實現也會無法作用 vuetify 的 icon 和 font 是否能自訂異步載入? data-n-head 有 1,6 內容重複問題 :只能研究 https://vue-meta.nuxtjs.org/api/#plugin-options




  • Nuxt 用 axios 時不用在 nuxy.config.js 的 plugins 引入,在需要用的組件或 vuex 內引入就好了
  • vue mixin 功能只能複用 script 、 template不行
  • 物件內若賦予新 key 值,vue watch 就算開 deep 也更新不到


  • HTML 標籤:kbd 認識
  • data-* attribute 理解,用 .dataset 能取得所有自訂 data 鍵值
  • querySelector()是以 CSS 選取器規則; document.querySelector(audio[data-key="${e.keyCode}"])
  • querySelector 和 getElement 差別在宣告變數取值後一個是靜態另個動態更新變化
  • 認識 web event:transitionend、animationend
  • transition 設 all 時 transitionend 會觸發很多樣式動畫結束的事件
  • 音檔需連續播放時,currentTime 要設0才有連續效果
  • classList.add、remove、toggle
  • e.currentTarget 註冊事件的元素本身,e.target 觸發事件的元素

按住後連續觸發後發現有 playing 樣式會殘留的問題,故自行加 keyup 事件 remove 所有 playing 樣式



  • Open Graph data:是種協議,方便分享網頁到社交平台上時能呈現豐富的資訊
  • 在 meta 設置 og 屬性:<meta property="og:image:type" content="image/jpeg" />
  • FB 等等的是看 og,twitter 除了 og 還要額外設它專屬的屬性:<meta name="twitter:card" content="summary" />

照官網方式啟用 GA 不起作用 (不知是否因為目前架構是 nuxt spa 丟 S3的方式),後來裝 @nuxtjs/google-gtag 可啟。 原本官網做法是 Nuxt spa build 出一個個頁面的靜態檔案,一起丟到 S3 上,但後來發現其 meta data 全都是預設,都是要跑 js 後才會動態改變, SEO 問題還是得跑伺服 prerender,或是寫個爬蟲弄出各個 meta data (但內容部分還是空白),後來討論決定先繼續做 SEO 優化設置,伺服等之後找時間一次做完。



  • Certificate Manager (ACM) 申請SSL憑證
  • CloudFront (全球內容傳遞服務、在各地節點加快傳輸),建立分佈指向S3源
  • 瀏覽器→CloudFront→S3,
  • CloudFront 可以設定各種 http 狀態碼需如何回應瀏覽端,(當S3回應錯誤時,可以設置導回路徑,回應瀏覽端 200 OK)
  • Invalidation 可以清除 CloudFront 的快取(只要連線過一次,就會在節點建立副本方便下次快取),在重新上版時需要做
  • CNAME(自訂網域)指向,(管理CNAME的主帳號需設置指向),接著在 CloudFront 設置 CNAME,指向認證過程約10分鐘


  • vue-awsome-swiper 套件會在 server端渲染,需調整:https://juejin.im/post/5cee27e76fb9a07ee95851f8
  • plugins 載入的插件注意是否會引用 window 物件,mode: 'client', mode: 'server' 調整執行環境
  • beforeCreate()、created() 在伺服和使用端都會觸發,注意是否有用到瀏覽器環境的東西

Docker 指令集:https://joshhu.gitbooks.io/dockercommands/content/Containers/ContainersBasic.html 包裝 image 時,專案內檔案名稱嚴格遵守大小寫區別,本機執行時好像檔案大小寫不強制。 已確認問題:

  1. vuetify 斷點在伺服器渲染時無法作用,用戶端載入後不會更新
  2. TypeError: n.setAttribute is not a function : https://github.com/vuejs/vue/issues/5919

vuetify 斷點解決方法:在 data 先設一個變數預設值取代所有有用到 $vuetify.breakpoint 的地方,在 mounted() 內把 $vuetify.breakpoint 值給 data 變數。 (header、footer 原本就可以正常作用,是因為頁面組件包太深嗎?)

已知問題 n.setAttribute 相關資訊線索:

  1. git 到 feat/seo 都正常,到下個commit 合併 jonh移植的東西後就壞了
  2. 直接輸入網址切換可以,手機版本身操作切換正常,但網頁版就會報錯了

~/.aws/credentials:放 ID、密碼權證的地方 ~/.aws/config:放 region、output等等設定的地方 ~/.config/bls.....:bls 相關專案 config 放置的地方(bls create-project) cat ~/foo/bar: cat 指令為看檔案內容 nano ~/foo/bar: nano 指令為修改檔案內容

推送 docker image 到 ECR (為映像檔儲存庫): (aws configure 設置 Access Key ID、Secret Access Key、region) 需要認證之類的指令最後面加 ——profile <project name> 即可抓對應的 credentials 和 config 資料

  1. 先建立儲存庫
  2. 將本地映像檔加上 tag : docker tag <image_name or image_hash> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>
  3. 使用命令推送上去:docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>