![](/img/trans.png)
[英]Is it good in term of page loading to load js files and create whole page using js on client side
[英]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>
我已經做了一些路徑名和服務/掛載的實驗,但我仍然不太了解這個客戶端線路是如何工作的。 這個問題的答案說,通過偵聽server
, io
處理所有傳入的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.