Node.js與python相同,一個檔案就是一個模組
Node.js提供了exports和require兩個物件;
exports是模組的公開介面;require用於從外部取得一個模組的介面,就是取得模組的exports物件
Node.js

//module.js

var name;
exports.setName = function(thyName) {
  name = thyName;
};

exports.sayHello = function {
  console.log( 'Hello ' + name)
};

 

//get module.js
var myModule = require('./module');

myModule.setName('Jack');
myModule.sayHello();

blog

Python

#module.py

def setName(input_name):
    global name	#定義name為此module.py模組中的廣義變數
    name = input_name
    return name

def sayHello():
    print 'Hello ' , name

 

#getmodule.py
import module
myModule = module
myModule.setName('Jack')
myModule.sayHello()

20131223-114345

建議改由getmodule.py中取得setName傳回的值寫法較符合python中對於變數的使用方式

#module.py

def setName(input_name):
    name = input_name
    return name

def sayHello(print_name):
    print 'Hello ' , print_name
#getmodule.py

import module
myModule = module
print_name = myModule.setName('Jack')	#新增變數取得setName傳回值
myModule.sayHello(print_name)

因為廣義變數有可能污染其他相同名稱的變數與增加除錯時的難度,小模組中也許看不出來,但在大規模的模組與程式碼中則會造成大麻煩

 20131223-114345

直接獲得函式

原先由模組取得函式的方式

Node.js

//sayhello.js

function Hello(){
  console.log('Hello World')
};

exports.Hello = Hello;

 

//sayit.js
sayit = require('./sayhello');
sayit.Hello();

 20131223-115052

Python

#sayhello.py

def Hello():
    print "Hello World"
#sayit.py
import sayhello

sayit = sayhello.Hello()
sayit

 20131223-115604

變更後

 

//sayhello.js

function Hello(){
  console.log('Hello World')
};

//exports.Hello = Hello; 變更為
Module.exports = Hello;
//sayit.js

sayit = require('./sayhello');
//sayit.Hello(); 變更為
Sayit();

 20131223-115052

Python

#sayhello.py 不需變更

def Hello():
    print "Hello World"

 

#sayit.py

#import sayhello 變更為
from sayhello import Hello

sayit = Hello()
sayit

 20131223-115604

總結一下node.js與pythond 對於模組中的比較

 

Node.js

Python

變數

廣義,可被函式直接取用

模組與函式各有不同的名稱空間

載入模組

單次載入

單次載入

載入方式

Require(<Module>)

Import <Module>

直接獲得模組內的物件

Module.exports = hello;

From module import hello

   

文章標籤
創作者介紹
創作者 長風破浪會有時 的頭像
長風破浪會有時

行路難 多歧路

長風破浪會有時 發表在 痞客邦 留言(0) 人氣()