9月
5
2012
分類:
最近更新:
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
樂多舊回應