我正在努力使基于AJAX的网站对SEO友好.正如在网络上的教程中所建议的那样,我href为链接添加了"漂亮" 属性:<a href="#!site=contact" data-id="contact" class="navlink">???????</a>并且,在默认情况下内容加载了AJAX的div中,爬虫的PHP脚本:
$files = glob('./pages/*.php');
foreach ($files as &$file) {
$file = substr($file, 8, -4);
}
if (isset($_GET['site'])) {
if (in_array($_GET['site'], $files)) {
include ("./pages/".$_GET['site'].".php");
}
}
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,一开始我需要另外切割_escaped_fragment_=部分,(...)/index.php?_escaped_fragment_=site=about因为否则脚本将无法从URL中GET获取site值,我是对的吗?
但是,无论如何,我如何知道爬虫将漂亮的链接(那些#!)转换为丑陋的链接(包含?_escaped_fragment_=)?我被告知它会自动发生,我不需要提供这种映射,但是Googlebot的抓取并没有向我提供有关URL发生的任何信息.
我使用postcss-precss(模拟大多数Sass功能,但不是数学)与postcss-cssnext相结合(提供最新的原生CSS功能,即我在postcss-precss中缺少的calc()).
通常我会通过插值结合萨斯和calc()$vars有#{}:
$size-width-search-btn: 40px;
.btn--search {
width: calc(#{$size-width-search-btn} + 5); // is compiled to: width: calc(#{$size-width-search-btn} + 5);
}
Run Code Online (Sandbox Code Playgroud)
但是postcss-precss似乎并没有支持这种插值 - 它根本就没有被过滤.然而,好消息是它没有插值:
width: calc($size-width-search-btn + 5); // is compiled to: 45px
Run Code Online (Sandbox Code Playgroud)
但后来我的IDE(PhpStorm 2016.3)无法识别这种语法,我得到了这个令人恼火的亮点:
尽管这种语法是正确的.
我不能指望cssnext会开始支持插值变量(因为它无论如何都是一个糟糕的黑客),我宁愿让WebStorm/PhpStorm用calc()和$ vars识别简化语法:
calc($var1 + $var2)
Run Code Online (Sandbox Code Playgroud)
但怎么样?
我不能使用postcss-sass,因为这个加载器的源映射被破坏了.我也不想将.scss更改为.pcss,因为JetBrain的PostCSS插件仍然不支持某些Sass功能(如$ variables或内联注释).
我想使用Storybook为vue-select组件添加一些故事,但我正在努力处理更复杂的情况,包括传递道具或方法.
当我在模板中传递道具时,它可以工作:
storiesOf('VSelect', module)
.add('with labeled custom options', () => ({
components: {VSelect},
template: `<v-select :options='[{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]' />`
}))
Run Code Online (Sandbox Code Playgroud)
我发现它不太可读,所以我想将它们作为道具或数据单独传递:
.add('with labeled custom options as props', () => ({
components: {VSelect},
props: {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
data: {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
template: `<v-select />`
}))
Run Code Online (Sandbox Code Playgroud)
但它们既没有data,也props没有被故事书所认可 - …
我输入
git push --set-upstream ssh://antyusos@ftp.anty-usos.host-ed.me/projekt.git master
Run Code Online (Sandbox Code Playgroud)
cmd返回:
antyusos@ftp.anty-usos.host-ed.me的密码:[此处输入正确的密码]
致命:协议错误:行长错误字符:Shel
我究竟做错了什么?
我在内部单页应用程序上使用带有vue-stripe-elements-plus的Stripe Elements。由于用户离开更改信用卡模块后无需保持条带代码运行,因此我想完全卸载Stripe,但这似乎不那么容易。
在将其卸载到组件的destroyed挂钩中并删除添加的iframe后:
destroyed () {
this.$unloadScript('https://js.stripe.com/v3/');
//delete window.Stripe; // commented because this makes stripe add iframes twice
let stripeIframes = [
document.querySelectorAll('[name^=__privateStripeMetricsController]'),
document.querySelectorAll('[name^=__privateStripeController]'),
];
stripeIframes.forEach(iframes => iframes.forEach(iframe => {
iframe.parentNode.removeChild(iframe);
}));
},
Run Code Online (Sandbox Code Playgroud)
Stripe添加的iframe:
一段时间后(其中一个)再次出现:
看起来像iframe是由Stripe的侦听器重新创建的,这些侦听器在发生消息事件时已附加到窗口对象。我无法删除此侦听器,因为处理程序函数位于iframe内的iframe中,因此浏览器不允许我访问其内部。
而且,此侦听器发出不需要的条纹请求:
XHR finished loading: POST "https://m.stripe.com/4".
Run Code Online (Sandbox Code Playgroud) 当 cypress 在无头模式下运行时,不可能在浏览器中看到控制台错误。
我希望在终端中看到浏览器的错误:
控制台错误:GET http://localhost/main.js net::ERR_ABORTED 404(未找到)
CypressError:重试超时:cy.type() 失败,因为此元素不可见:
此元素 '' 不可见,因为其父元素 '' 具有 CSS 属性:'display: none'
相反我只得到:
CypressError:重试超时:cy.type() 失败,因为此元素不可见:
此元素 '' 不可见,因为其父元素 '' 具有 CSS 属性:'display: none'
在某些情况下,相同的测试在本地通过(浏览器和无头)但在 CI 中失败(即在 gitlab 管道中),只有原始终端输出而没有任何浏览器控制台错误,这使得很难判断为什么这些测试失败。
我的 pod 有一个动态生成的 ID,附加到它们的名称后,例如 ie my-app-name-7b587cd75b-dscsr,每次部署都不同(下次可能是my-app-name-xcgv83bfsd-4kjsf)。
这使得使用某些命令非常麻烦,因为每次我需要查看日志时,我都必须首先列出所有 pod 并将更改后的名称复制粘贴到logs命令中:kubectl -n [namespace] logs my-app-name-7b587cd75b-dscsr.
有没有办法可以跳过使用 pod 名称或名称的一部分并在命令中执行类似kubectl -n [namespace] logs my-pod-name-~或kubectl -n [namespace] logs service/my-pod-name类似的操作port-forward?
我试图grep在logs命令中注入以获取 pod 名称并logs在单个命令中运行,但是 Windows 上的 Cmder 尽管它很好,但似乎不支持$():kubectl -n [namespace] logs $(kubectl -n my-app-name get pod | grep my-app-name | sed 's/ .*//')
我正在尝试为密码创建正则表达式验证,该验证应为:
因此,换句话说,匹配将具有:
我想出了:
((.*){3,}[a-z]{1,}[A-Z]{1,}[0-9]{1,})
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎很简单且合乎逻辑,但是有两件事出错了:
{3,}以(.*)某种方式不起作用并破坏了整个正则表达式。刚开始时我遇到{6,}了,但是正则表达式会影响内部组中的量词,因此它需要[A-Z]{6,}而不是[A-Z]{1,} {3,}正则表达式时,但仅在组顺序一致时才匹配-以便匹配aaBB11,但不匹配BBaa11假设我有一张桌子
[table fruits]
--------+------------+
ID [PK] | fruit |
--------+------------+
1 | Orange |
2 | Banana |
3 | Coconut |
Run Code Online (Sandbox Code Playgroud)
我需要在JS数组中保存ID和名称列表,例如:
var fkOptionList = [[1]['Orange'],[2]['Banana'],[3]['Coconut']]
Run Code Online (Sandbox Code Playgroud)
在PHP中我通过以下方式实现了:
$fkOptionTableR = $fkOptionTableQ->result_array();
$fkOption2dArray[] = array();
$i = 0;
$j = 0;
foreach ($fkOptionTableR as $array) {
foreach ($array as $row) {
$fkOption2dArray[$i][$j] = $row;
$j++;
}
$i++;
$j = 0;
}
Run Code Online (Sandbox Code Playgroud)
结果(根据var_dump):
array(3) {
[0]=> array(2) { [0]=> string(1) "1" [1]=> string(6) "Orange" }
[1]=> array(2) { [0]=> string(1) …Run Code Online (Sandbox Code Playgroud)