[英]How to make JavaScript to be compatible with both client- and server-side?
我知道如何在 NodeJS 中制作模塊(這很簡單)。 但是,如果我想做一些應該在服務器端和客戶端環境中工作的東西,那么有人會做到這一點嗎?
假設您要創建一個 Model 類型(“類”)。 假設您有一個名為Lib.define()
的類創建 function 。 所以,你寫這個:
Lib.Model = Lib.define({
init: function() {
// constructor...
},
save: function() {
// saves the model.
}
});
上面的代碼將使 Lib.Model 成為 object ,它代表一個可實例化的類型。 但是,您將如何編寫它以使其也符合 NodeJS 標准? 如果您嘗試要求上述文件( require('Model.js')
),它不會做任何事情,因為沒有分配給export
。 但是,如果我這樣做,那么我是否應該在客戶端環境中進行無用的export
object?
除了 require 可以簡單地加載和解析 JS 並在全局范圍內工作,還有其他方法可以做到這一點,以便上述代碼會在全局變量Lib
中生成Model
成員?
我現在正在研究vm ,但我不確定如何正確使用它。 我確實有一個文件/類加載器,它可以解析路徑並加載腳本,就像 Dojo 所做的那樣。 我應該在那里編寫一些在客戶端(放置腳本標簽)上照常工作的邏輯,而對於 NodeJS,它只會讀取文件內容和vm.runInThisContext(code)
嗎?
JSHint只是檢測是否有exports
符號,如果有則添加。 他們的支票如下所示:
// Make JSHINT a Node module, if possible.
if (typeof exports == 'object' && exports)
exports.JSHINT = JSHINT;
這將檢查 export 是否是 object ,然后檢查它是否不是null
(通過&& exports
exports
。 似乎是一種合理的方法,盡管它當然特定於CommonJS 模塊系統(這是 Node 使用的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.