首頁>Club>
8
回覆列表
  • 1 # 龐叔說

    JavaScript是Web前端人員必須要掌握的知識點之一,也是一門高階語言。最初JavaScript只是在Web瀏覽器中執行,隨著Node的出現,JavaScript也可以在服務端執行。接下來就給大家講解一下JavaScript引擎工作原理。

    JavaScript引擎是什麼?

    JavaScript引擎是一種用於將我們的程式碼轉換為機器可讀語言的引擎。如果沒有JavaScript引擎,你編寫的程式碼對計算機來說簡直是一堆“胡言亂語”。不僅僅是JavaScript,其他所有程式語言都需要一個類似的引擎,來將這些“胡言亂語”轉換成對計算機有意義的語言。

    JavaScript引擎的組成部分有哪些?

    1、編譯器。主要工作是將原始碼編譯成抽象語法樹,然後在某些引擎中還包含將抽象語法樹轉換成位元組碼。

    2、直譯器。在某些引擎中,直譯器主要是接受位元組碼,解釋執行這個位元組碼,然後也依賴來及回收機制等。

    3、JIT工具。一個能夠JIT的工具,將位元組碼或者抽象語法樹轉換成原生代碼,當然它也需要依賴牢記垃圾回收器和分析工具(profiler)。它們負責垃圾回收和收集引擎中的資訊,幫助改善引擎的效能和功效。

    JavaScript引擎是如何工作的?

    JavaScript的工作形式取決於是什麼引擎。目前比較常用的JavaScript引擎有兩個:WebKit的JavaScriptCore和Google的V8引擎。這兩個引擎處理程式碼的方式是不同的。

    JavaScriptCore: 原始碼=》抽象語法樹=》位元組碼

    1、詞法分析,將原始碼分解成一系列具有明確含義的符號或字串(分詞);

    2、用詞法分析器分析這些符號,將其構建成抽象語法樹;

    3、解析器生成位元組碼(編譯器可以理解);

    4、4個JIT(Just-In-Time)程序參與進來,分析和執行解析器所生成的位元組碼。

    谷歌的V8引擎,用C++編寫,也編譯和執行JavaScript原始碼、處理記憶體分配、垃圾收集剩餘物。V8引擎並不將抽象語法樹轉變成位元組碼或者其它中間表示,沒有像Java一樣的虛擬機器或者位元組碼直譯器。這麼做主要是為了減少這抽象語法樹到位元組碼的轉換時間,這一切都在網頁載入時候完成,雖然可以提高最佳化的可能,但是這些分析可能帶來巨大的時間浪費。

  • 2 # 花花的花花花

    作為一名8年工作經驗在職前端來回答你這個問題。不管是初級前端還是高階前端,瀏覽器只認HTML css javascript,所以現在前端框架花樣很多,但最終輸出的都是上面提到的這三點。那麼對於初級前端就很好定位了,掌握這三個點的基礎知識才是最重要的。基礎打好了才可以進階更加高階的玩法。一般初級前端只能負責一些比較簡單的工作,就是寫一些靜態頁面,主要用到的就是HTML CSS,當然如果會一些javascript就更好了,會JS有利於你處理一些前端互動效果。此外,最好可以熟練操作Photoshop,用來處理一些效果圖的切圖工作。回答滿意希望可以給個贊和關注哦,個人日常分享數碼評測,歡迎來主頁看一看。

  • 3 # 小云動漫影片

    做好設計師賦予的頁面渲染與互動任務,同時思考一下怎樣的互動展示的更好,更貼近人性化。css 和 js 能提供什麼樣的工具讓頁面更好看,更炫,互動效果更棒?

    如果是使用 view 框架進行開發(React, Vue, Angular 等等),思考一下一個專案是怎樣打包執行起來的?為什麼透過 create-react-app 這一類的工具可以快速建立工程,為什麼就能顯示出一個頁面?

    考慮下你的頁面上的資料、狀態是怎樣的流向,在哪裡獲得,在哪裡修改,在哪裡渲染?如果需要共用怎麼辦?

    同時在寫的時候,考慮下程式碼怎麼樣才能更優雅,寫的程式碼怎樣才能更少,哪些程式碼容易出問題,該怎麼組織專案的目錄結構,為什麼要這麼組織。

    最後,最好還能從訪問頁面的人的角度考慮下會有什麼樣的意外情況,意外操作?能想到的各種錯誤情況該如何處理?

  • 中秋節和大豐收的關聯?
  • 絕地求生PCL春季線上賽來襲,韋神慘遭“史詩級削弱”,你有何看法?