簡體   English   中英

使用Node JS服務的頁面在客戶端加載.js文件

[英]Loading .js files on client side with page served by Node JS

我有以下簡單的JS文件,對於將Socket.IO與NodeJS和Express框架一起使用的任何人來說,它們都會看起來很熟悉:

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(8374);

// routing
app.get('/', function (req, res) {
    res.sendfile(__dirname + '/index.html');
});

index.html ,我有以下代碼行:

<script src="/socket.io/socket.io.js"></script>

我已經做了一些路徑名和服務/掛載的實驗,但我仍然不太了解這個客戶端線路是如何工作的。 這個問題的答案說,通過偵聽serverio處理所有傳入的Socket.IO請求。

...

我的問題是:是否可以對其他客戶端JS文件執行此操作?

例如,是否有一些簡單的方法來捆綁JQuery,以便可以用相同的方式處理它? 目前,我可以將文件放在public類的文件夾中,並使用Express的app.use()方法,以便在index.html可以包含以下行:

<script src="/public/jquery-1.9.1.js"></script>

有沒有一種方法可以像NodeJS一樣將JQuery作為依賴項進行管理?

我認為最終結果將如下所示:

服務器端:

var jquery = require('jquery');

客戶端:

<script src="jquery/jquery-1.9.1.js"></script>

我不太確定要使用模塊來托管特定文件,但僅在請求時托管文件會節省更多時間:

app.get("/", function (req, res) {
    res.sendfile(__dirname + "/index.html");
});
app.get("/public/jquery-1.9.1.js", function (req, res) {
    res.sendfile(__dirname + "/public/jquery-1.9.1.js");
});

我不使用Express,所以請原諒任何錯誤。

express 2.x中,許多人為此使用“ dynamicHelpers”。 您的app.js中類似這樣的內容

app.dynamicHelpers({
    scripts: function (){ 
      return ['/js/jquery.min.js', '/js/jquery.ui.min.js']
    }
})

在使用玉的布局中,您可以執行此操作。

- each s in scripts
    script(type='text/javascript', src= s)

現在,app.dynamicHelpers已被刪除,因此在express 3.x中,您需要為此創建一個簡單的模塊,或者只是內聯。 如果需要,可在您的配置或特定環境中使用app.use。 就像是。

app.use(function (req, res, next){
   res.locals.scripts = ['/js/yourscript.js', '/js/yourotherscript.js']
   next();
}

在玉器布局中使用它會是相同的。 如果我理解正確,那將是包含這些腳本的一種方法。 我個人寧願靜態地包括它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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