2016-07-21 47 views
0

這可能是一個愚蠢的問題,但你怎麼知道什麼時候需要通過「構建」或編譯?我對它的理解是,當你編寫代碼時,你正在編寫源文件,然後爲了被計算機理解,需要編譯爲可執行文件。但是,那麼,我怎麼才能寫一個index.html並將其放入我的瀏覽器中以使其正常工作?在這種情況下編譯是什麼時候發生的?這與使用像npm這樣的構建工具時發生的編譯相比如何?什麼時候需要準確編譯文件?

+1

html未編譯,其標記語言告訴瀏覽器如何顯示文本 –

+1

這很大程度上取決於語言。在一些像C這樣的語言中,你需要編譯所有的源文件。在Python等其他語言中,編譯器內置於解釋器中,編譯步驟對程序員來說是不可見的。 HTML並不是一門真正的編程語言,但它仍然會被網頁瀏覽器編譯*(即轉換爲內部表單)。 –

+0

所以對於不同的網絡應用程序,它取決於它被編譯的語言?如果瀏覽器進行編譯,像npm這樣的構建系統有什麼用處?它只是組織依賴關係來告訴瀏覽器爲了某些模塊的工作需要編譯什麼? – akantoword

回答

1

編譯意味着製作機器可以存儲和執行的機器代碼列表。瀏覽器不會這樣做,他們只是在不建立列表的情況下解析和執行語言。 (儘管通常如評論中提到的那樣執行速度更快,但是代碼可以被即時編譯並且以機器代碼的形式發送給CPU。)

+0

當瀏覽器執行代碼時,那裏發生了什麼?這並不意味着他們仍然需要以某種方式翻譯代碼並與CPU通信以便它顯示在屏幕上?不與cpu的通信總是意味着代碼必須在CPU的某個點編譯才能理解該怎麼做?或許更廣泛的問題是,誰在「執行」代碼又有什麼關係?即使它是瀏覽器,最後不是所有的東西都會間接地回到讀取某種機器語言的CPU來執行它,以便代碼工作? – akantoword

+0

有點難以解釋,但基本上不存儲爲列表的事實使得所有的區別。瀏覽器的工作方式是一次只需一條命令,例如,繪製字符串'hello'並調用已編譯的OS函數,以繪製發送給它的任何字符串並繪製它。希望它有點清楚。 – MotKohn

相關問題