使用NodeJS与客户端共享变量
Sharing variable with client using Node JS
我使用的是Node JS和Express。
目前,在服务器端,我将某个变量(源)传递给我的EJS模板,并使用其中的一部分来填充页面上的列表。
当用户单击该列表中的一个项目时,我需要掌握该变量的另一部分。
我知道我可以再次AJAX服务器上的变量(源代码),并解决我的问题。但这似乎没有必要,因为当模板生成HTML时,我已经有了变量。
通常的做法是什么?人们使用AJAX来获取变量,或者在服务器构建变量时,是否有一些好的方法可以将其存储在页面中?
"破解"是创建一个隐藏元素并将值存储在其中…
一种方法是将服务器端的数据作为JavaScript变量注入EJS
<script>var x = <%server data%></script>
然后您可以在客户端获取它,而无需进行额外的HTTP请求。比你提到的黑客稍微干净一点。
是否使用AJAX和隐藏元素有几个因素。
使用AJAX的优点是,您可以加载页面的模板,以及所有静态内容,让浏览器在客户端检索到动态内容之前呈现页面。如果您需要从数据库加载内容或计算输出,这将带来优势。基本上,优势是如果你正在加载一些大的东西,或者可能需要一点时间才能检索到的东西,你应该在页面加载后使用AJAX,这样用户就可以减少等待结果的时间。另一个优点是,你可以实时显示结果,你可以向客户端提供进度报告(例如进度条),或者你可以实时加载搜索结果,因为它们是从源(数据库、谷歌、脸书等)加载的。
使用隐藏元素的优点是,加载单个页面所需的HTTP请求/响应更少。如果你只需要加载一个用户名,或者简短的传记和一些链接,你应该用模板加载它。但是,如果您需要加载所有用户最新博客文章的结果,您应该使用AJAX。使用隐藏元素更容易实现,但单独使用无法实时更新。此外,顺便说一句,这一点都不"粗鲁"。jQuery在很多方面都是这样做的,比如在元素之间设置动画,或者只隐藏非活动选项卡的jQuery UI选项卡。这基本上就是隐藏元素的预期目的。
问题不应该是使用哪种技术,而应该是何时将其中任何一种技术用于每个特定的预期目的。考虑这些利弊,你应该走在正确的道路上。当你不需要AJAX时,你可能不需要。如果过度使用,它可能会变得浪费。
可能需要这个-使用本地变量进行响应,用于渲染http://expressjs.com/api.html#res.locals
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 在Javascript服务器/客户端中共享对象定义
- 在app.settings中传递javascript变量(客户端变量到服务器端)
- 在javascript客户端和java服务器之间共享Google Analytics ClientID
- 如何将 Node.js 环境变量注入客户端 JavaScript
- 在 JSP 之间共享动态客户端和服务器端内容
- Django设计模式-在加载时填充客户端JavaScript变量的方法
- 使用NodeJS与客户端共享变量
- 关于Parse.com客户端共享应用程序;api密钥
- 同构ReactJS-如何为服务器端和客户端共享代码
- 如何在客户端验证中验证两个变量规则
- 在javascript(客户端)中跨多个窗口共享数据
- 在客户端访问服务器变量时获取空字符串
- 流星 在客户端跟踪服务器端变量
- 将变量从 VB 函数传递到客户端 JavaScript
- 与服务器上的 Meteor.onCreateUser 函数共享客户端变量
- 我怎么能"保存“;变量客户端,这样我就可以在其他java脚本事件中使用它
- 是否有一个框架或方法可以让服务器和客户端轻松地共享变量
- Javascript:使用变量访问服务器端变量客户端