使用 Typescript 來開發前端應用程式已是一個趨勢,這篇筆記是用來紀錄如何用 Parcel.js 來建置一個簡潔又有彈性的開發環境用來學習 Typescript。
使用的工具 & 作業系統
- git
- vscode
- Mint 20.2 (作業系統)
專案初始化
$ mkdir parcel_ts && cd parcel_ts # 建立專案目錄
$ npm init -y # 初始化專案目錄
$ touch Startup.ts Employee.ts index.html # 新增三個空白程式檔
$ npm install --save-dev parcel parcel-bundler # 安裝 parcel & parcel-bundler
$ code . # 開啟 vs code
在 package.json 中建立執行程式的 script
"script": {
"dev": "parcel index.html"
}
使用 Typescript 撰寫程式
Employee.ts
export class Employee {
constructor(
private name: string = "no name",
private department: string = "no department"
) {}
displayInfo(): string {
return `${this.name} department is ${this.department}`;
}
}
Startup.ts
import { Employee } from "./Employee";
window.onload = () => {
let information = document.querySelector("#info");
const employee = new Employee("Dany Green", "Market");
if (employee) information.innerHTML = employee.displayInfo();
};
index.html
<!-- ! : 輸入 "!" 按下 Tab 或 Enter鍵,Emmet 將自動建立 html5 樣版檔案-->
<!-- 透過 Tab 鍵可快速跳至 <title></title> -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>What's up</title>
</head>
<body>
<!-- 直接輸入以下 Emmet 語法: div[name="container"]>h2#info, 即可産生以下 Html div 內容-->
<div name="container">
<h2 id="info"></h2>
</div>
<!-- 直接輸入以下 Emmet 語法: script[type="module" src="Startup.ts"] , 即可産生以下 Html script 內容-->
<script type="module" src="Startup.ts"></script>
</body>
</html>
註: 可參考另一編筆記是紀錄如何使用 Emmet 語法 透過範例學習 Emmet 語法
執行程式
$ npm run dev
> parcel_ts@1.0.0 dev
> parcel index.html
Server running at http://localhost:1234
✨ Built in 22ms
Typescript 轉譯成 Javascript
程式執行後,可發現在 dist 目錄下,Parcel.js 已經自動的 Typescript 程式轉譯成 Javascript 了。
同時也把 HTML 檔案中的 .ts 自動的轉成 .js
除錯
按下快速鍵 Ctrl+Shift+D 叫出 “Run and Debug” 功能,點選 create a launch.sjon file
點選 “Edge: Launch”
自動産生 launch.sjon
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-msedge",
"request": "launch",
"name": "Launch Edge against localhost",
"url": "http://localhost:8080", // 8080 改成 1234
"webRoot": "${workspaceFolder}"
}
]
}
先將 “url”: “http://localhost:8080” Port 改成1234,,並在檔案尾部加入以下設定,並存檔。
"breakOnLoad": true,
"sourceMapPathOverrides": {
"../*": "${webRoot}/*"
}
再次按下快速鍵 Ctrl+Shift+D 叫出 “Run and Debug” 功能, 下拉選單中選擇 “Launch Edge against localhost"。在 Source code 中設定中斷點,再以滑鼠點選右邊的綠色三角型按鍵,開始進行除錯。VSCode 會自動啟動 edge 瀏覽器,同時程式會暫停在中斷點處。
結論
你會發現透過 Parcel 的幫助,當使用 Typescript 來撰寫 網站程式即方便又快速。