2014年4月6日 星期日

Javascript Note

這學期修了Javascript,必須承認沒有很認真修XD,不過還是學到一些有趣的東西,先來記錄一下

Nodejs

這到底是啥?這個東西可厲害喏,在以前小時候學到的Javascript都是在client執行的,由瀏覽器來做直譯,那server端呢?通常server會用另外一種語言來寫ex:PHP,Python,Ruby之類的,這些語言都非常的好寫,要另外去學他們老實說也不會花很多時間,不過缺點是如果前後端都要維護,那麼在早上沒睡醒,或是剛睡完午覺的腦袋沒有很清楚的狀況下,常常需要切換多種語法老實說有點給他小累!於是Nodejs就發明出來了,讓server端也可以寫javascript,超屌的,而且還有npm(node package manager)可以使用!npm是啥?用過linux都知道有apt-get或yum,npm就是nodejs的apt-get或yum!

當然,學Nodejs當然要會一些Javascript的語法,不過這翻一翻書或google一下就可以學會了,在這裡要記錄一些不太一樣的部分,首先從npm下手

npm -v #show npm version
npm list # show all package in current dir
npm install module_name # install module_name in current dir
npm install -g module_name #install module_name in sys dir
npm update module_name # update module_name

實際執行的情就踹踹看就好惹,不過npm install module_name這個指令非常常用到,通常的習慣是把module安裝在同一份project中,這樣比較好維護,而且可以針對不同的project安裝不同的module版本!安裝在同一個目錄下還有一個大優點那就是整份project可以無痛移植,不用在其他電腦另外配置環境,所以啦!儘量使用npm install module_name而少用npm install -g module_name!

另外附上一些Nodejs的教學:

How to create object and declare class:

老實說從開學到現在完全沒有搞懂怎麼在javascript宣告class以及create object,通常都是一個dom物件使用到底,不過物件有物件的好處,雖然不用物件一樣可以維護程式,不過既然javascript有提供物件,那麼不用白不用,來了解一下如何使用,才不會造成只會寫code不會看code的情況發生,也就是俗語說的"書到用時方恨少"啊!

1. 使用function來declare class

function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = getAppleInfo;
}
 
// anti-pattern! keep reading...
function getAppleInfo() {
    return this.color + ' ' + this.type + ' apple';
}

然後使用方式如下

var apple = new Apple('macintosh');
apple.color = "reddish";
alert(apple.getInfo());

上面的宣告方式也可以將method寫在裡面

function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = function() {
        return this.color + ' ' + this.type + ' apple';
    };
}

2. mtehod用prototype加入

上面declare的方式有個優點,很好看懂,一整個就像python在declare class一樣,不過有個大缺點,那就是每次在create object時,都會recreate一次method,這對於效能來說不是件好事,所以採用prototype來設定object的method

function Apple (type) {
    this.type = type;
    this.color = "red";
}
 
Apple.prototype.getInfo = function() {
    return this.color + ' ' + this.type + ' apple';
};

3. 使用括弧

這個部分比較特別一點,如果懂一點design pattern的應該都有聽過singleton,用括弧來宣告class的方式就是javascript的singleton。在了解括弧的宣告精神前需要了解一下javascript的語法先。

在javascript中大括號代表宣告一個object

var o = {};

等價於以下的宣告

var o = new Object();

中括弧代表Array

var a = [];

也可以寫成

var a = new Array();

最後就要回到singleton的宣告方式

var apple = {
    type: "macintosh",
    color: "red",
    getInfo: function () {
        return this.color + ' ' + this.type + ' apple';
    }
}

使用方式

apple.color = "reddish";
alert(apple.getInfo());

參考資料:

沒有留言:

張貼留言