簡體   English   中英

如何使 JavaScript 與客戶端和服務器端兼容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM