小编Chr*_*alo的帖子

如何将Vue应用服务器和Express结合起来?

我有 vue 应用程序(通过 Vue CLI)运行http://localhost:8080/,后端在 Express 上运行http://localhost:7070。是否可以在同一地址下运行前端和后端(同时不会丢失 Vue CLI 服务器的热模块替换)?

javascript node.js express vue.js vuejs2

5
推荐指数
2
解决办法
7616
查看次数

如何监听特定HTML元素的布局更改?

在现代浏览器中监听布局更改的一些技巧是什么?window.resize将无法正常工作,因为它仅在整个窗口调整大小时触发,而不是在内容更改导致重排时触发.

具体来说,我想知道什么时候:

  • 元素的可用宽度会发生变化.
  • 元素的流入子元素消耗的总高度会发生变化.

html javascript css layout reflow

4
推荐指数
2
解决办法
4245
查看次数

在 axios 中检测 xhr.status === 0

语境

我有一个在企业环境中运行的网络应用程序,其中所有请求都通过我无法控制的代理。该层会根据需要自动将我的用户重定向到不同域上的单点登录页面。

这是基本顺序:

  1. myapp.example.corp用户在浏览器中输入
  2. 请求通过代理,该代理检查用户是否已登录
  3. 用户尚未登录,因此他们被重定向到登录地址auth.example.corp
  4. 用户登录,然后重定向到我的应用程序

到目前为止,一切都很好。

问题

我想问的问题出现在以下场景中:

  1. 用户在我的应用程序中执行一些操作,然后回家,使浏览器选项卡保持打开状态
  2. 经过一定时间后,用户的会话过期
  3. 用户返回浏览器选项卡,我的应用程序已打开并继续使用它
  4. 我的应用程序发出 AJAX 请求,并且它们通过相同的代理
  5. 由于用户不再登录,这些请求将被重定向到登录页面
  6. 由于该登录页面位于不同的域中,因此以下内容将记录到浏览器控制台,这对于了解正在发生的情况非常有用
Failed to load https://auth.example.corp: No 'Access-Control-Allow-Origin'
header is present on the requested resource. Origin 'https://myapp.example.corp'
is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

(这个问题与CORS无关。我无法控制代理或身份验证服务器。请不要分心。)

真正的问题是,在我使用 axios 的应用程序代码中,传递给 axios 的回调永远不会被调用。此请求的承诺永远不会得到解决或拒绝。我在代码中检测不到任何事情发生。

// none of these callbacks get called
axios
  .get("/signedin")
  .then(response => console.log("Signed in"))
  .catch(response => console.log("Not signed in"))
Run Code Online (Sandbox Code Playgroud)

解决方法

如果我改用XMLHttpRequestAPI,我就能够检测到这种情况,因为onreadystatechange事件触发了,我可以测试request.status === 0.

var request = new XMLHttpRequest();
request.onreadystatechange …
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest axios

2
推荐指数
1
解决办法
5723
查看次数

修复角度排序

Angular在"津巴布韦"之后排序"奥兰群岛".我想以全球方式解决这个问题.orderBy我想以某种方式全局修补默认排序函数,而不是创建自定义排序函数并在每个过滤器中指定它.这可能吗?

首先使用以下函数对两个字符串进行规范化,问题得到解决:

function norm(str) {
  str = str.toLowerCase();
  str = str.replace(/\\s/g, "");
  str = str.replace(/[àáâãäå]/g, "a");
  str = str.replace(/æ/g, "ae");
  str = str.replace(/ç/g, "c");
  str = str.replace(/[èéêë]/g, "e");
  str = str.replace(/[ìíîï]/g, "i");
  str = str.replace(/ñ/g, "n");
  str = str.replace(/[òóôõö]/g, "o");
  str = str.replace(/œ/g, "oe");
  str = str.replace(/[ùúûü]/g, "u");
  str = str.replace(/[ýÿ]/g, "y");
  str = str.replace(/\\W/g, "");
  return str;
}
Run Code Online (Sandbox Code Playgroud)

我希望在Angular中有一种方法可以做到这一点,再也不用担心了.

javascript sorting angularjs

1
推荐指数
1
解决办法
1890
查看次数