建立個人網站 Set up Personal Website

建立個人網站 Set up Personal Website

更新於 發佈於 閱讀時間約 6 分鐘

因為最近需要建立自我品牌,所以決定來架個人網站。

架個人網站的方式非常多,最簡單的是直接找台伺服器拿現有模板套上去。

但是我喜歡自由,而且也已經有方格子部落格網站,所以打算做個簡單的名片網站。

以前寫過Html、Jsp、Asp、Php等各種網頁程式語言,不過現在聽說可以用Kotlin一個程式語言打天下,所以就來挑戰看看。

打開官網看看有什麼不錯的前端框架的時候,發現Compose框架,不由得特別留意。

前端框架 https://kotlinlang.org/docs/js-overview.html#compose-for-web

前端框架 https://kotlinlang.org/docs/js-overview.html#compose-for-web

啊,Jetpack Compose for Web今年2021五月才推出,現在還是Alpha探路版,不過想到在Android的世界裡也有Compose函式庫,也許哪天這些相似的產品就整合了呢!於是決定跳下坑了。

既希望一套程式碼可以應付全部業務,又怕被賤價的矛盾工程師。
Android的Compose框架 https://kotlinlang.org/docs/js-overview.html#compose-for-web https://developer.android.com/jetpack/compose

Android的Compose框架 https://kotlinlang.org/docs/js-overview.html#compose-for-web https://developer.android.com/jetpack/compose


Compose框架跨平台計畫 https://www.jetbrains.com/lp/compose-mpp/

Compose框架跨平台計畫 https://www.jetbrains.com/lp/compose-mpp/

今年內會出正式版本,那個時候也許會有比較完整的文件,距離年底剩下一個半月,但是我已經等不及啦,所以直接來看程式碼實戰教學。

https://github.com/JetBrains/compose-jb/tree/master/tutorials/Web/Getting_Started

https://github.com/JetBrains/compose-jb/tree/master/tutorials/Web/Getting_Started

環境要求有兩個,JDK版本和IDE版本。

  • JDK 11 or later
  • IntelliJ IDEA Community Edition or Ultimate Edition 2020.2 or later

我的IDE本來就是2021版本,但是JDK版本太低,所以只好下載最新的JDK17。

安裝IDE和JDK屬於初階操作,此處省略。若有需要可參考我之前寫的文章 https://ithelp.ithome.com.tw/articles/10261282
raw-image

因為還沒出穩定版,所以也沒有專案模組建立引導精靈,只能用Kotlin/Multiplatform專案修改,或是直接開啟範例專案。

因為我怕漏掉需要修改的地方,所以就選擇範例專案。

Github要下載單一資料夾需要額外工作,為求以後開發方便,我決定先fork專案再把template打包壓縮,這樣就不用為了1mb的內容,佔據一百多mb的空間。

原始來源:https://github.com/JetBrains/compose-jb/tree/master/templates

壓縮版:https://github.com/kateLee/compose-jb/tree/master/templates

把範例web-template名字改成personal_website後,就選擇中間的Open,並選擇信任專案。

raw-image


raw-image

在下面的Terminal執行./gradlew jsBrowserRun

先跑跑看範例,當然第一次跑就是要等待。

raw-image


raw-image

不知道為啥 http://localhost:8080/ 打開的是空白網頁。

後來才發現專案名字變動的話,index.html裡的js名稱也要隨之變動。

raw-image

修正後Control鍵+c中斷,重新執行./gradlew jsBrowserRun,就成功看到範例網頁:顯示按鈕被點擊的次數,重新整理後數字會歸零。

raw-image

目標:

  • 背景色:黑色
  • 文字色:金色

內容包含:

  • 名字
  • 自我介紹
  • 社交帳號
  • 作品集

參考https://github.com/kateLee/compose-jb/tree/master/tutorials/Web/Building_UI開始修改Main.Kt檔案。

raw-image




raw-image

好了,名字放上去了,接下來就是連結們了。

幸運的,找到一個提供各種第三方圖示的css:https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css

raw-image
raw-image

背景色屬性也從div挪移到上層的body區域。

raw-image
raw-image

再來就是放上伺服器供外網連線。

本來想放在Firebase,但是FIrebase設定上還要下載npm套件,覺得太麻煩,所以就只好放在GitHub了。

在此分享這次開發的個人網站網址:https://katelee.github.io/personal_website/

GitHub放靜態網頁的過程會另外寫一篇文章。

程式碼也會另外寫一篇文章說明,這邊先簡單帶過,附上程式碼網址:

網站內容會持續更新和擴充,比如說我最後還是把圖片按鈕的顏色都一起換成和文字一樣的金閃閃了。

請期待後續發表的文章。

avatar-img
Kate的沙龍
6會員
45內容數
和 Kotlin 相關的系列文章。 給程式初學者的「Kotlin 學習系列」 給正在實戰的工程師「Kotlin 實戰系列」
留言
avatar-img
留言分享你的想法!
Kate的沙龍 的其他內容
條件式可以說是程式重要的能力,也是判斷作業流程細心程度的地方。 條件式 (Condition) ,顧名思義,只有符合條件才做事。 身為一個好士兵,就要執行自家長官的命令。如果是來自敵方隊伍、屬下、路人的命令,就可以快樂的無視他們。 關鍵程式碼大概就會是這樣: if (發令者 == 自家長官) {執行
賦值 (Assign Value) 想成套繩圈的動作, var 的繩圈是可以鬆綁重來的,val 套住對方就不能換了,而進階版 const val 綁住對方之後,對方的時間就被凍結了。 其實,以 Kotlin 的程式語言設計來說,比起賦值 (Assign Value),用賦址 (Assign
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
條件式可以說是程式重要的能力,也是判斷作業流程細心程度的地方。 條件式 (Condition) ,顧名思義,只有符合條件才做事。 身為一個好士兵,就要執行自家長官的命令。如果是來自敵方隊伍、屬下、路人的命令,就可以快樂的無視他們。 關鍵程式碼大概就會是這樣: if (發令者 == 自家長官) {執行
賦值 (Assign Value) 想成套繩圈的動作, var 的繩圈是可以鬆綁重來的,val 套住對方就不能換了,而進階版 const val 綁住對方之後,對方的時間就被凍結了。 其實,以 Kotlin 的程式語言設計來說,比起賦值 (Assign Value),用賦址 (Assign
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」