Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
fdfbab5d
N
next.js
项目概览
CoCo_Code_Op2
/
next.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
next.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fdfbab5d
编写于
4月 17, 2019
作者:
J
JJ Kasper
提交者:
Connor Davis
4月 16, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated handling of AMP page reloading (#7052)
上级
abae1734
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
219 addition
and
1 deletion
+219
-1
packages/next/client/amp-dev.js
packages/next/client/amp-dev.js
+6
-1
test/integration/amphtml/pages/hmr/amp.js
test/integration/amphtml/pages/hmr/amp.js
+8
-0
test/integration/amphtml/pages/hmr/hybrid.js
test/integration/amphtml/pages/hmr/hybrid.js
+5
-0
test/integration/amphtml/pages/root-hmr.js
test/integration/amphtml/pages/root-hmr.js
+5
-0
test/integration/amphtml/test/index.test.js
test/integration/amphtml/test/index.test.js
+195
-0
未找到文件。
packages/next/client/amp-dev.js
浏览文件 @
fdfbab5d
...
...
@@ -40,7 +40,12 @@ async function tryApplyUpdates () {
const
data
=
await
res
.
json
()
const
curPage
=
page
===
'
/
'
?
'
index
'
:
page
const
pageUpdated
=
Object
.
keys
(
data
.
c
)
.
some
(
mod
=>
mod
.
indexOf
(
`pages/
${
curPage
}
`
)
!==
-
1
)
.
some
(
mod
=>
{
return
(
mod
.
indexOf
(
`pages
${
curPage
.
substr
(
0
,
1
)
===
'
/
'
?
curPage
:
`/
${
curPage
}
`
}
`
)
!==
-
1
||
mod
.
indexOf
(
`pages
${
curPage
.
substr
(
0
,
1
)
===
'
/
'
?
curPage
:
`/
${
curPage
}
`
}
`
.
replace
(
/
\/
/g
,
'
\\
'
))
!==
-
1
)
})
if
(
pageUpdated
)
{
document
.
location
.
reload
(
true
)
...
...
test/integration/amphtml/pages/hmr/amp.js
0 → 100644
浏览文件 @
fdfbab5d
import
{
withAmp
}
from
'
next/amp
'
export
default
withAmp
(()
=>
(
<>
<
p
>
I
'
m an AMP page!</p>
<span>{new Date().getTime()}</span>
</>
))
test/integration/amphtml/pages/hmr/hybrid.js
0 → 100644
浏览文件 @
fdfbab5d
import
{
withAmp
}
from
'
next/amp
'
export
default
withAmp
(()
=>
(
<
p
>
I
'
m a hybrid AMP page!</p>
), { hybrid: true })
test/integration/amphtml/pages/root-hmr.js
0 → 100644
浏览文件 @
fdfbab5d
import
{
withAmp
}
from
'
next/amp
'
export
default
withAmp
(()
=>
(
<
p
>
I
'
m an AMP page!</p>
))
test/integration/amphtml/test/index.test.js
浏览文件 @
fdfbab5d
...
...
@@ -6,6 +6,7 @@ import webdriver from 'next-webdriver'
import
{
validateAMP
}
from
'
amp-test-utils
'
import
{
readFileSync
,
writeFileSync
}
from
'
fs
'
import
{
waitFor
,
nextServer
,
nextBuild
,
startApp
,
...
...
@@ -245,11 +246,14 @@ describe('AMP Usage', () => {
describe
(
'
editing a page
'
,
()
=>
{
let
dynamicAppPort
let
ampDynamic
beforeAll
(
async
()
=>
{
dynamicAppPort
=
await
findPort
()
ampDynamic
=
await
launchApp
(
join
(
__dirname
,
'
../
'
),
dynamicAppPort
)
})
afterAll
(()
=>
killApp
(
ampDynamic
))
it
(
'
should detect the changes and display it
'
,
async
()
=>
{
let
browser
try
{
...
...
@@ -290,5 +294,196 @@ describe('AMP Usage', () => {
await
browser
.
close
()
}
})
it
(
'
should detect changes and refresh an AMP page
'
,
async
()
=>
{
let
browser
try
{
browser
=
await
webdriver
(
dynamicAppPort
,
'
/hmr/amp
'
)
const
text
=
await
browser
.
elementByCss
(
'
p
'
).
text
()
expect
(
text
).
toBe
(
`I'm an AMP page!`
)
const
hmrTestPagePath
=
join
(
__dirname
,
'
../
'
,
'
pages
'
,
'
hmr
'
,
'
amp.js
'
)
const
originalContent
=
readFileSync
(
hmrTestPagePath
,
'
utf8
'
)
const
editedContent
=
originalContent
.
replace
(
`I'm an AMP page!`
,
'
replaced it!
'
)
// change the content
writeFileSync
(
hmrTestPagePath
,
editedContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/replaced it!/
)
// add the original content
writeFileSync
(
hmrTestPagePath
,
originalContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/I'm an AMP page!/
)
}
finally
{
await
browser
.
close
()
}
})
it
(
'
should not reload unless the page is edited for an AMP page
'
,
async
()
=>
{
let
browser
try
{
await
renderViaHTTP
(
dynamicAppPort
,
'
/hmr/test
'
)
browser
=
await
webdriver
(
dynamicAppPort
,
'
/hmr/amp
'
)
const
text
=
await
browser
.
elementByCss
(
'
p
'
).
text
()
const
origDate
=
await
browser
.
elementByCss
(
'
span
'
).
text
()
expect
(
text
).
toBe
(
`I'm an AMP page!`
)
const
hmrTestPagePath
=
join
(
__dirname
,
'
../
'
,
'
pages
'
,
'
hmr
'
,
'
test.js
'
)
const
originalContent
=
readFileSync
(
hmrTestPagePath
,
'
utf8
'
)
const
editedContent
=
originalContent
.
replace
(
`This is the hot AMP page.`
,
'
replaced it!
'
)
// change the content
writeFileSync
(
hmrTestPagePath
,
editedContent
,
'
utf8
'
)
let
checks
=
5
let
i
=
0
while
(
i
<
checks
)
{
const
curText
=
await
browser
.
elementByCss
(
'
span
'
).
text
()
expect
(
curText
).
toBe
(
origDate
)
await
waitFor
(
1000
)
i
++
}
// add the original content
writeFileSync
(
hmrTestPagePath
,
originalContent
,
'
utf8
'
)
const
otherHmrTestPage
=
join
(
__dirname
,
'
../pages/hmr/amp.js
'
)
const
otherOrigContent
=
readFileSync
(
otherHmrTestPage
,
'
utf8
'
)
const
otherEditedContent
=
otherOrigContent
.
replace
(
`I'm an AMP page!`
,
`replaced it!`
)
// change the content
writeFileSync
(
otherHmrTestPage
,
otherEditedContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/replaced it!/
)
// restore original content
writeFileSync
(
otherHmrTestPage
,
otherOrigContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/I'm an AMP page!/
)
}
finally
{
await
browser
.
close
()
}
})
it
(
'
should detect changes and refresh a hybrid AMP page
'
,
async
()
=>
{
let
browser
try
{
browser
=
await
webdriver
(
dynamicAppPort
,
'
/hmr/hybrid?amp=1
'
)
const
text
=
await
browser
.
elementByCss
(
'
p
'
).
text
()
expect
(
text
).
toBe
(
`I'm a hybrid AMP page!`
)
const
hmrTestPagePath
=
join
(
__dirname
,
'
../
'
,
'
pages
'
,
'
hmr
'
,
'
hybrid.js
'
)
const
originalContent
=
readFileSync
(
hmrTestPagePath
,
'
utf8
'
)
const
editedContent
=
originalContent
.
replace
(
`I'm a hybrid AMP page!`
,
'
replaced it!
'
)
// change the content
writeFileSync
(
hmrTestPagePath
,
editedContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/replaced it!/
)
// add the original content
writeFileSync
(
hmrTestPagePath
,
originalContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/I'm a hybrid AMP page!/
)
}
finally
{
await
browser
.
close
()
}
})
it
(
'
should detect changes and refresh an AMP page at root pages/
'
,
async
()
=>
{
let
browser
try
{
browser
=
await
webdriver
(
dynamicAppPort
,
'
/root-hmr
'
)
const
text
=
await
browser
.
elementByCss
(
'
p
'
).
text
()
expect
(
text
).
toBe
(
`I'm an AMP page!`
)
const
hmrTestPagePath
=
join
(
__dirname
,
'
../
'
,
'
pages
'
,
'
root-hmr.js
'
)
const
originalContent
=
readFileSync
(
hmrTestPagePath
,
'
utf8
'
)
const
editedContent
=
originalContent
.
replace
(
`I'm an AMP page!`
,
'
replaced it!
'
)
// change the content
writeFileSync
(
hmrTestPagePath
,
editedContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/replaced it!/
)
// add the original content
writeFileSync
(
hmrTestPagePath
,
originalContent
,
'
utf8
'
)
await
check
(
()
=>
getBrowserBodyText
(
browser
),
/I'm an AMP page!/
)
}
finally
{
await
browser
.
close
()
}
})
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录