从node.js发送数据到客户端js的最佳方法
从node.js服务器向客户端的javascript发送一些数据(最好是json对象的forms)的最佳方式是什么? 我想到了一些select,但是我认为它们都不是很适合。 第二个意见,或其他一些build议是我正在寻找。
-
让服务器在
<script>
标签中输出一些代码来设置一个全局variables。我以前用过这个,但是我不喜欢这个主意,主要是因为它对XSS有潜力,而且我认为这是不好的做法,即使发送的数据没有被用户定义。
-
用它里面的数据设置一个cookie。
这个选项稍微好一点,但是由于每次页面加载的数据都可能会发生变化(至less在我的设置中),但这并不适合,因为在我看来,cookies不应该是这种易变的。
-
让客户端javascript在页面加载时向服务器发出ajax请求以请求json文件。
这同样适用,但会增加很多不必要的开销。 每页2个请求似乎没有必要。
背景:
我有一个网站有2个模板:一个login用户的索引和主要内容模板。
我的服务器端是由node.js,express.js,jade等构build而成的。
我使用history.pushState作为我的所有链接,crossroads.js作为客户端的页面路由。 我想能够发送加载的模板和用户的ID /如果他们login到客户端JavaScript,所以它可以处理相应的页面更改。 注销的用户可以查看内容页面,而无需编辑权限,点击某些链接就可以将其返回到索引模板。
<script>
标记方法是很好的。 如果您担心其他脚本访问数据,则不要设置全局variables,而是在可以接受数据的客户端js代码中编写函数。
所以,而不是生成:
<script> data = { foo : "bar" } </script>
生成这样的东西:
<script> setData({ foo : "bar" }); </script>
显然,我不认为我需要告诉你,你生成的任何数据应该由一个适当的JSON序列化程序序列化,以避免语法错误等。
只需将一次性数据放在types为“text / template”或“application / json”的<script
>标记中,并确保它们具有ID。 使用jQuery或标准的DOM方法访问他们的内容。 对于较短的数据位,可以在关键元素上使用data-*
属性。
你可以使用Socket.io或Now (它实现了socket.io)来实现websockets,而不仅仅是允许你在客户端和服务器之间来回传递数据,而且允许客户端调用服务器上的函数