我建立我的第一個節點模塊中,我希望能得到一個類似於jQuery的越來越像jQuery的語法時才從節點模塊
$(searchItem)
所以代碼可能看起來像
var $$ = require("myModule"); $$(search).doAction();
之類的,而不是
$$.doAction(search);
是否有可能在一個模塊中返回一個「根功能」也是這樣嗎?這樣做有沒有危險?
------------------更新Laurent說這是可行的,因爲Underscore做到了,而且它是安全的, ---------------------------
我已經更新我的代碼到我的模塊開始與自我引用功能(複製的下劃線)
(function(){ var fs = require("fs"); console.log("starting"); var root = this; var config =JSON.parse(fs.readFileSync("./config.json")); var $$ = function(obj){ if(!obj){ return config; } else { return obj; } } }).call(this)
然後在我的JS網頁
require("myModule"); console.log($$("test"));
希望這個控制檯將日誌 「測試」,但不幸的是我得到$$("test")
不是一個函數。 ------------------------------------ update ------------ ------------------------------- 正如jtblin在下面的答案中指出的,出口module.exports = $$
適用於輸出「測試」爲測試正在傳遞給函數,但我不能按照原始示例鏈接方法。部分路雖然。
不錯的葡萄酒jtblin,我嘗試了你的建議,它一開始並沒有工作,但是在我的模塊中,我從'var $$ = function(){...'開始,然後是'module.exports = $$ ',它適用於返回「測試」,但它不允許我鏈接我的方法,就像原始示例'$$(search).doAction()'。我試圖創建$$'var $$ = {...'的對象,但是因爲$$不再是函數,所以我無法獲得「測試」。 – pedalpete
要鏈接方法,你只需要在$$函數的末尾返回this。 – jtblin
您還需要在$$原型上創建函數。 – jtblin