最近更新: 2012-09-05

gjs - To manage custom library (管理自製程式庫)

gjs 使用 imports.searchPath 屬性 (型態為陣列) 管理程式庫的資料夾。 因為那是一個陣列,所以用 push() 方法就可以往裡面增加程式庫資料夾。

加入資料夾路徑後,該資料夾與子資料夾內所有的 js 文件都會被載入。 文件名稱將成為 imports 的屬性名稱,而子資料夾階層可視為名稱空間。

假設現在有一個資料夾,內含兩個自訂的 gjs 庫 (hello.js, rock.js)。 文件樹狀結構如下:

/tmp/js
|-- hello.js
`-- rocksaying
    `-- rock.js
// ==== hello.js ====
const XX = 'const value.';

function hello() {
    print("Hello world");
}


// ==== rock.js ====
function rnr() {
    print("rock and roll");
}

以下為使用案例。

print("Current searchPath: " + imports.searchPath);

// 用 push() 方法加入 /tmp/js 程式庫資料夾。
imports.searchPath.push('/tmp/js');

// 文件名稱將成為 imports 的屬性名稱。
// 例如 /tmp/js/hello.js => imports.hello
imports.hello.hello(); // 調用 hello.js 中的 hello() 。

const Hello = imports.hello; // gjs 的慣例用法。
Hello.hello();
print( Hello.XX );

// 子資料夾階層可視為名稱空間。
// 例如 /tmp/js/rocksaying/rock.js => imports.rocksaying.rock
imports.rocksaying.rock.rnr(); // 調用 rocksaying/rock.js 中的 rnr()

依我預料,這應該也適用於 gnome-shell 的場合。

一般而言,我會將自製的 gjs 程式庫放在 /usr/local/share/gjs-1.0 資料夾的子資料夾中。 甚少往 imports.searchPath 增加新的資料夾。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/21002958.html

樂多舊回應
mengzhuo1203@gmail.com(mz) (#comment-22607374)
Wed, 05 Sep 2012 13:39:47 +0800
非常感谢!!