(重點筆記)專為中學生寫的 JavaScript 程式書

程式入門

  1. JavaScript程式語言可以用來編寫網站的前端(目前是唯一可在瀏覽器中執行的語言)和後端程式。
  2. 會撰寫前端和後端程式的軟體工程師,稱為全端工程師(full stack engineer)。
  3. Node.js是一種JavaScript開發工具,主要用來開發網站的伺服器端。
  4. 採用UTF8編碼才可以正常顯示繁體中文,使用ANSI則不能。
  5. Node.js預設採用UTF8編碼。

基本語法

  1. 基本變數型態、相關函式語法、流程控制語法。

陣列與字串

  1. 索引的使用。
  2. 相關基本函式的使用。
  3. 字串可以根據索引取得特定字元。

函數

  1. 宣告並定義函數,以重複使用程式碼。
  2. 函數可以採用直接宣告、定義,在JavaScript中也可以用變數連結函數(亦即"匿名函數"),欲呼叫函數時,直接呼較使用該變數並給予所需的參數即可。
  3. 對於函數參數的傳遞,基本型態的參數採用call by value,物件型態的參數則採用call by reference。
  4. 函數可以當作參數,供另一個函數使用。可以藉此實現呼叫不特定函數、callBack(回呼,執行完特定步驟後再呼叫執行該函數)。

字典與JSON

  1. Dictionary(字典),屬於較高階的資料結構,主要為key/value的配對。
  2. Dictionary可以為單層或多層結構。Value為Dictonary資料結構時,即為多層結構。
  3. JSON(全名為Javascript Object Notation),採用{…}和[…]等簡單的語法產生可供使用的物件,較傳統的網路交換格式XML更方便資料的交換,傳遞相同資料內容所需的網路傳輸量也較小。
  4. 物件是JavaScript的核心,以{ }進行宣告和定義。

物件導向與原型(prototype)

  1. 在 log() 函數中使用 %j 的格式,代表要將該物件以JSON 的方式印出來。(如:A.log(“k=%j", k); )
  2. 物件可以連續使用".",連續呼叫執行多個函數。
  3. 可以採用Object.create()或new的方式產生新物件。
  4. 採用prototype的方式宣告變數成員或函數,使得相同類型的物件可以共用變數、函數,而不需讓重複的內容占用記憶體。(若不使用prototype,每產生一次物件,該物件的記憶體皆會包含相關的函數和變數)。個人認為這種做法和C#的static宣告意義相同。
  5. 在原型中可再加入原型,可以藉此實現類似物件導向的"繼承"效果。

函式庫

  1. 瀏覽JavaScript標準函式庫,以大致了解有哪些函數可供使用。
  2. 瀏覽Node.js函式庫,以大致了解有哪些函數可供使用。
  3. 藉由Node.js官方套件管理器-npm(node package manager),可以用來安裝、管理、發佈套件。目前已發佈數十萬種套件,可搜尋所需的功能套件並安裝使用。

模組

  1. 在JavaScript中,模組可以是物件(物件本身可能同時包含"變數成員"和"函數")或函數,可以將模組分享給其他程式使用。
  2. Node.js中,模組的定義分為匯出"物件"的靜態模組、匯出"建構函數"的動態模組。
  3. 要匯出模組者,需使用"module.exports"語法。
  4. 要引用模組者,需使用"require"語法和"相對路徑"。
  5. 可以使用"建構函數"產生物件。
  6. 採用跨平台相容的模組匯出寫法,使得瀏覽器、node.js、CommonJS 與其 Asynchronous Module Definition (AMD) 實作版的 RequireJS都可以使用該模組。
  7. 安裝、使用、發佈npm套件基本介紹。

檔案與標準(鍵盤/螢幕)輸出入

  1. JavaScript語言一開始是直接內嵌在"網頁"使用,因此標準函式庫中沒有檔案輸出入的相關函數。
  2. Node.js提供了檔案輸出入的函數,預設為非阻斷式(Non-blocking)、非同步式(non synchronize)、大量使用回呼函數(callback function)的方式,因此即使未寫成multi-thread或multi-process的寫法也會有較高的效能,但程式碼的可讀性較差。

資料庫

  1. 安裝mongo DB。
  2. 資料庫的CRUD(Create、Read、Update、Delete)相關語法。
  3. 在程式中使用mongo DB。

網路

  1. 使用fs、http、URIjs等套件,產生網頁爬蟲、聊天室(server-client架構)網路程式範例。

完整案例 RLab

  1. 因為有開源程式碼可供使用,可善用外部函式庫、軟體,組合出我們想要的系統。
  2. 在科學計算領域,目前有商業軟體matlab、用R/Octave/Python語言撰寫的numpy, scipy等開放原始碼軟體。
  3. 分享實作JavaScript的科學計算套件RLab.js之經驗。
  4. 科學計算軟體通常需要有"矩陣"和"機率統計"功能,因此採用了numeric.js(矩陣套件)和jstat.js(統計套件),進而組合成科學計算套件RLab.js。

學習資源

  1. 專為中學生寫的 JavaScript 程式書
Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s