如何从nodejs应用程序访问浏览器的窗口对象?
How can I access the browser's window object from a nodejs application?
我想写一个简单的应用程序来监视文件的变化,并在浏览器中自动重新加载更新后的代码。我知道存在的liverload nodeamon和其他人,我只是想写我自己的。我已经创建了服务器,让它读取我想要读取的文件,称为监视程序,当监视文件发生变化时,它会杀死并重新启动服务器。最后一部分:刷新浏览器。这怎么可能呢?
正如其他人所解释的,浏览器编程环境和window.location.reload()
是完全独立于node.js的,所以你不能直接从node.js调用它。服务器端代码以node.js的形式运行在服务器上。浏览器中的客户端代码只在浏览器中运行。两者可以通过Ajax请求或webSocket连接发送的消息进行通信,但它们不能直接调用对方的代码。
浏览器要根据服务器上的变化进行刷新,有两种基本方法:
-
浏览器中的Javascript可以定期询问服务器是否有任何新内容(通常通过传递时间戳的Ajax调用)。如果服务器说在那个时间戳之后有新的东西,那么浏览器中的Javascript就可以请求新的数据/文件。这种"轮询"方法不是特别有效,因为如果数据不经常更改,那么大多数对新内容的请求将返回没有任何新内容。
-
浏览器可以与服务器建立持久的webSocket连接。然后,当服务器发现服务器上的某些内容发生了变化时,它可以直接向每个连接的浏览器发送通知,通知它有新的内容。然后,接收此消息的所有已连接的客户端都可以进行普通的Ajax调用来检索新数据。或者,新的信息可以直接通过webSocket发送给客户端。在任何一种情况下,这种直接通知通常比"轮询"解决方案更有效。
使用webSocket选项,您将不希望服务器重新启动,因为那会丢失所有的webSocket连接。我不知道为什么你现在重启服务器时,一些变化,但你将不得不改变,使用webSocket解决方案。
NodeJS没有一个代表全局命名空间的window
变量。相反,它有一个名为global
的变量。
NodeJS中没有浏览器、窗口或URL地址。
在node.js中,您有process
,这是一个node.js全局对象,如window
,这是一个浏览器全局对象。
在node.js shell中输入process
。
- 如何在选项卡上定义属性'的主窗口对象
- 可以从Chrome扩展修改窗口对象吗
- 在Backbone.js中为窗口对象指定变量
- 从html锚元素传递窗口对象
- 如何在ReactJS中使用窗口对象
- 在加载时调用时,窗口对象的某些变量丢失
- 清除 Javascript 中窗口对象中的自定义变量
- 窗口对象属性返回一个dom节点
- 使用窗口对象练习我的对象文字函数
- 如何从Chrome扩展访问所有窗口对象
- Jasmine在全局窗口对象上创建本地JS函数的Spy
- 如何使用Chrome'查看窗口对象中定义了哪些变量;的开发工具
- 有没有一种方法可以强制浏览器's窗口对象以重新评估鼠标所在的位置
- Safari 在尝试使用 Javascript try/catch 访问父窗口对象时未捕获异常
- 测试使用 jQuery 和窗口对象的 React 组件
- 迭代窗口对象时出现“'window.webkitStorageInfo' is deprecated”警
- 窗口对象通过对象类型测试,但 hasOwnProperty 导致错误
- node.js是否等同于浏览器中的窗口对象
- 页面工作线程 - destroy() 似乎没有删除窗口对象
- 全局变量只是“窗口”对象的属性吗?