【程式新手】為什麼我寫的 JavaScript、Sass 需要編譯?編譯器又是什麼?

更新 發佈閱讀 5 分鐘

在初學程式的時候,我曾經看室友開發專案到一半時,突然坐在那發呆,於是我好奇一問,室友說:「我在等程式編譯完成啊。」

還記得當初還是程式小菜雞的我,懞懂無知的說:「編譯?哈哈哈,我們 JavaScript 都不需要編譯耶,可以直接跑在瀏覽器上。」

室友一臉莫名其妙地回我:「噢,是嗎⋯⋯」

現在回想起來真的想要給自己賞一巴掌,這邊我直接講結論,基本上 client 端(前端、APP)所撰寫的語言都需要經過編譯,才能在特定的執行環境中運行。



編譯器究竟是什麼?

在了解編譯究竟是什麼之前,首先要了解:程式碼依照自己所要開發的產品不同,而會有不一樣的執行環境,以我熟悉的前端領域中,一個應用程式的執行環境就是在瀏覽器上,也就是我們常聽到的 Web App。

了解程式碼會有不同的執行環境後,我們就可以來聊聊究竟什麼是編譯器了,首先維基百科針對編譯器的說明是這樣的:

編譯器(compiler)是一種電腦程式,它會將某種程式語言寫成的原始碼(原始語言)轉換成另一種程式語言(目標語言)。

其實我們現在撰寫的語言,有一些是機器(也就是電腦)讀不懂的,於是我們就需要仰賴其他電腦程式來幫我們將這些語言轉換成電腦所看得懂的機器語言,這樣的過程我們就稱為編譯。

這裡還要額外提個小知識,我們現在所撰寫的程式語言,都是人為設計出來的,其中不少是為了讓開發者更方便開發數位產品所誕生的。

舉例來說,JavaScript 的主要開發者 Brendan Eich 花了約 10 天創造出這門語言,為了就是讓開發者能更方便整合網頁開發的技術。



為什麼我寫的 JavaScript、SASS 需要編譯?

一開始寫 JavaScript 的時候,可能會有些對瀏覽器的誤會,諸如:以為瀏覽器讀得懂所有 JavaScript 的語法、以為 JavaScript 會一邊執行一邊報錯等。

這邊舉個大家最熟悉的例子,許多新的 JavaScript 語法、型別,或是 CSS3 的特定語法, IE 瀏覽器是不支援的,這就能說明,JavaScript 並不是適用於所有的執行環境,更多的是仰賴編譯器(Compiler)來進行處理,讓瀏覽器能讀懂特定的語法。

除了我們所熟知的 Google V8 引擎,可以讓 JavaScript 這個語言在瀏覽器上執行的效能更快外,Bable.js 也是知名的編譯器,可以讓同一支 JavaScript 檔案相容在不同的瀏覽器中。

再來我們聊聊為什麼大家常用的 SASS 程式語言也需要透過 SASS Loader、SASS Compiler 來進行編譯。

原因很簡單:那就是瀏覽器的內建引擎也讀不懂 SASS、SCSS,於是我們就必須仰賴其他的工具來進行編譯,將這門語言轉譯成瀏覽器讀的懂 CSS 。

一旦了解程式語言基本上都是要透過編譯來執行後,就可以減少開發上的除錯時間。

舉例來說,有時候你在框架中發現自己撰寫的程式碼,會一直出現「編譯錯誤」的報錯,基本上有兩個原因:

  1. 你就是把程式碼寫錯了
  2. 你沒有額外安裝編譯器

這件事為什麼會那麼重要呢?

舉個我曾經發生的小蠢事:某一天我很認真地在 Vue Cli 中撰寫 SASS ,但程式碼就是怎麼寫怎麼報錯,最後才發現根本不是我寫錯,而是當時的開發環境根本沒有「SASS Loader」呀。

當然編譯器的套件也會有版本相不相容的問題,但那又是另外一個議題了。

主要是希望大家可以透過這篇文章,稍微了解前端在開發時會遇到的編譯概念,在除錯時可以多一個工具及方向。

希望今天的文章有幫助到正在閱讀的你,如果你喜歡我的文章的話,可以留下你的愛心或是收藏我的文章,也或者可以點選「贊助」,你的一杯咖啡絕對是我持續寫下去的動力!或是透過拍拍手,用你小小的行動支持我的創作!

我是Vivian,我們下次見。


關於我:

一名從英文系畢業的前端工程師,喜歡閱讀、寫東西及自我成長。

|Instagram: Vivian Yeh|vivian_enlife

|聯絡我:vivian.enlife@gmail.com

留言
avatar-img
Vivian Yeh - 跨領域轉職的軟體工程師
460會員
103內容數
為了追求可以窩在座位上、可以心無旁騖思考問題、座位可以亂七八糟沒關係、不需要到處哈腰點頭跑客戶,不用腳踩十公分、連妝都可以不用化的職場人生,文組少女毅然決然踏上RD的養成日常。
2024/05/23
與 cookie 相比,localStorage 與 sessionStorage 的機制相對單純,兩者皆是瀏覽器中的儲存空間,與 cookie 最大的不同在於:localStorage 與 ⋯⋯
Thumbnail
2024/05/23
與 cookie 相比,localStorage 與 sessionStorage 的機制相對單純,兩者皆是瀏覽器中的儲存空間,與 cookie 最大的不同在於:localStorage 與 ⋯⋯
Thumbnail
2024/05/22
在瀏覽器環境中有許多的儲存空間,想要查看這些空間的話,可以透過「chrome > Dev Tools > Application > Storage」即能進行查看。 瀏覽器內存空間的差異不僅常常被拿來被當作面試考題,在實務開發中更扮演舉足輕重的角色,今天就想透過這系列的文章深度了解這些瀏覽器內存⋯
Thumbnail
2024/05/22
在瀏覽器環境中有許多的儲存空間,想要查看這些空間的話,可以透過「chrome > Dev Tools > Application > Storage」即能進行查看。 瀏覽器內存空間的差異不僅常常被拿來被當作面試考題,在實務開發中更扮演舉足輕重的角色,今天就想透過這系列的文章深度了解這些瀏覽器內存⋯
Thumbnail
2024/02/20
上一篇文章分享了 TypeScript 的定義、前端角色定位,如果你不是很確定「TypeScript 是什麼?」、「TypeScript 作為 JavaScript 的超集,在網頁開發扮演怎麼樣的角色?」這兩個問題的答案,建議可以回到上一篇先了解一下。
Thumbnail
2024/02/20
上一篇文章分享了 TypeScript 的定義、前端角色定位,如果你不是很確定「TypeScript 是什麼?」、「TypeScript 作為 JavaScript 的超集,在網頁開發扮演怎麼樣的角色?」這兩個問題的答案,建議可以回到上一篇先了解一下。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
軟體工程師體驗營的第三周,對於知識、學習、課程、社群的感想,持續內化中,我不想只有上課,也希望從學習過程獲得更多經驗,所以寫下了這篇記錄。我也意外發現剛學習的 JavaScript,說不定能讓我重拾學習程式互動藝術,這很令人開心,即使我正在考慮轉職,但創作是終生的,希望下次發作品能有些新展現。
Thumbnail
軟體工程師體驗營的第三周,對於知識、學習、課程、社群的感想,持續內化中,我不想只有上課,也希望從學習過程獲得更多經驗,所以寫下了這篇記錄。我也意外發現剛學習的 JavaScript,說不定能讓我重拾學習程式互動藝術,這很令人開心,即使我正在考慮轉職,但創作是終生的,希望下次發作品能有些新展現。
Thumbnail
這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。 我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了
Thumbnail
這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。 我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了
Thumbnail
為什麼要學習程式呢? 程式是怎麼分類的? 能處理什麼事情?
Thumbnail
為什麼要學習程式呢? 程式是怎麼分類的? 能處理什麼事情?
Thumbnail
「理解」與「不理解」之間,有著名為「語言隔閡」或「知識落差」的鴻溝。 翻譯、編程、教學,都有著同樣的底層邏輯,都是企圖跨越這樣的鴻溝,促進個體之間的相互理解、學習、合作,甚至進化。
Thumbnail
「理解」與「不理解」之間,有著名為「語言隔閡」或「知識落差」的鴻溝。 翻譯、編程、教學,都有著同樣的底層邏輯,都是企圖跨越這樣的鴻溝,促進個體之間的相互理解、學習、合作,甚至進化。
Thumbnail
在科技快速發展的現代,每個人都滿口大數據、人工智慧,。而大學的資工系也變得越來越熱門,學習程式也逐漸成為許多人考慮的事情。 在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。
Thumbnail
在科技快速發展的現代,每個人都滿口大數據、人工智慧,。而大學的資工系也變得越來越熱門,學習程式也逐漸成為許多人考慮的事情。 在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News