Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
eddc852d
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,发现更多精彩内容 >>
未验证
提交
eddc852d
编写于
6月 20, 2019
作者:
J
Joe Haddad
提交者:
GitHub
6月 20, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract isDynamicRoute helper (#7622)
上级
bd6e9710
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
17 addition
and
9 deletion
+17
-9
packages/next-server/lib/router/router.ts
packages/next-server/lib/router/router.ts
+2
-2
packages/next-server/lib/router/utils/index.ts
packages/next-server/lib/router/utils/index.ts
+1
-0
packages/next-server/lib/router/utils/is-dynamic.ts
packages/next-server/lib/router/utils/is-dynamic.ts
+3
-0
packages/next-server/server/next-server.ts
packages/next-server/server/next-server.ts
+3
-2
packages/next/build/webpack/loaders/next-serverless-loader.ts
...ages/next/build/webpack/loaders/next-serverless-loader.ts
+3
-2
packages/next/client/index.js
packages/next/client/index.js
+2
-1
packages/next/server/next-dev-server.js
packages/next/server/next-dev-server.js
+3
-2
未找到文件。
packages/next-server/lib/router/router.ts
浏览文件 @
eddc852d
...
...
@@ -15,6 +15,7 @@ import {
import
{
rewriteUrlForNextExport
}
from
'
./rewrite-url-for-export
'
import
{
getRouteMatcher
}
from
'
./utils/route-matcher
'
import
{
getRouteRegex
}
from
'
./utils/route-regex
'
import
{
isDynamicRoute
}
from
'
./utils/is-dynamic
'
function
toRoute
(
path
:
string
):
string
{
return
path
.
replace
(
/
\/
$/
,
''
)
||
'
/
'
...
...
@@ -273,8 +274,7 @@ export default class Router implements BaseRouter {
const
route
=
toRoute
(
pathname
)
const
{
shallow
=
false
}
=
options
// detect dynamic routing
if
(
route
.
indexOf
(
'
/$
'
)
!==
-
1
)
{
if
(
isDynamicRoute
(
route
))
{
const
{
pathname
:
asPathname
}
=
parse
(
as
)
const
rr
=
getRouteRegex
(
route
)
const
routeMatch
=
getRouteMatcher
(
rr
)(
asPathname
)
...
...
packages/next-server/lib/router/utils/index.ts
浏览文件 @
eddc852d
export
{
getRouteMatcher
}
from
'
./route-matcher
'
export
{
getRouteRegex
}
from
'
./route-regex
'
export
{
getSortedRoutes
}
from
'
./sorted-routes
'
export
{
isDynamicRoute
}
from
'
./is-dynamic
'
packages/next-server/lib/router/utils/is-dynamic.ts
0 → 100644
浏览文件 @
eddc852d
export
function
isDynamicRoute
(
route
:
string
):
boolean
{
return
route
.
indexOf
(
'
/$
'
)
!==
-
1
}
packages/next-server/server/next-server.ts
浏览文件 @
eddc852d
...
...
@@ -19,6 +19,7 @@ import {
getRouteMatcher
,
getRouteRegex
,
getSortedRoutes
,
isDynamicRoute
,
}
from
'
../lib/router/utils
'
import
*
as
envConfig
from
'
../lib/runtime-config
'
import
{
NextApiRequest
,
NextApiResponse
}
from
'
../lib/utils
'
...
...
@@ -359,8 +360,8 @@ export default class Server {
private
getDynamicRoutes
()
{
const
manifest
=
require
(
this
.
buildManifest
)
const
dynamicRoutedPages
=
Object
.
keys
(
manifest
.
pages
).
filter
(
p
=>
p
.
includes
(
'
/$
'
)
const
dynamicRoutedPages
=
Object
.
keys
(
manifest
.
pages
).
filter
(
isDynamicRoute
)
return
getSortedRoutes
(
dynamicRoutedPages
).
map
(
page
=>
({
page
,
...
...
packages/next/build/webpack/loaders/next-serverless-loader.ts
浏览文件 @
eddc852d
...
...
@@ -2,6 +2,7 @@ import { loader } from 'webpack'
import
{
join
}
from
'
path
'
import
{
parse
}
from
'
querystring
'
import
{
BUILD_MANIFEST
,
REACT_LOADABLE_MANIFEST
}
from
'
next-server/constants
'
import
{
isDynamicRoute
}
from
'
next-server/dist/lib/router/utils
'
export
type
ServerlessLoaderQuery
=
{
page
:
string
...
...
@@ -42,7 +43,7 @@ const nextServerlessLoader: loader.Loader = function() {
import {renderToHTML} from 'next-server/dist/server/render';
import {sendHTML} from 'next-server/dist/server/send-html';
${
page
.
includes
(
'
/$
'
)
isDynamicRoute
(
page
)
?
`import {getRouteMatcher, getRouteRegex} from 'next-server/dist/lib/router/utils';`
:
''
}
...
...
@@ -82,7 +83,7 @@ const nextServerlessLoader: loader.Loader = function() {
try {
${
page
===
'
/_error
'
?
`res.statusCode = 404`
:
''
}
${
page
.
includes
(
'
/$
'
)
isDynamicRoute
(
page
)
?
`const params = getRouteMatcher(getRouteRegex("
${
page
}
"))(parsedUrl.pathname) || {};`
:
`const params = {};`
}
...
...
packages/next/client/index.js
浏览文件 @
eddc852d
...
...
@@ -12,6 +12,7 @@ import { DataManagerContext } from 'next-server/dist/lib/data-manager-context'
import
{
RouterContext
}
from
'
next-server/dist/lib/router-context
'
import
{
DataManager
}
from
'
next-server/dist/lib/data-manager
'
import
{
parse
as
parseQs
,
stringify
as
stringifyQs
}
from
'
querystring
'
import
{
isDynamicRoute
}
from
'
next-server/dist/lib/router/utils
'
// Polyfill Promise globally
// This is needed because Webpack's dynamic loading(common chunks) code
...
...
@@ -83,7 +84,7 @@ class Container extends React.Component {
// If it's a dynamic route (/$ inside) or has a querystring
if
(
data
.
nextExport
&&
(
router
.
pathname
.
indexOf
(
'
/$
'
)
!==
-
1
||
window
.
location
.
search
)
(
isDynamicRoute
(
router
.
pathname
)
||
window
.
location
.
search
)
)
{
// update query on mount for exported pages
router
.
replace
(
...
...
packages/next/server/next-dev-server.js
浏览文件 @
eddc852d
...
...
@@ -12,7 +12,8 @@ import Watchpack from 'watchpack'
import
{
getRouteMatcher
,
getRouteRegex
,
getSortedRoutes
getSortedRoutes
,
isDynamicRoute
}
from
'
next-server/dist/lib/router/utils
'
import
React
from
'
react
'
...
...
@@ -113,7 +114,7 @@ export default class DevServer extends Server {
}
let
pageName
=
'
/
'
+
relative
(
pagesDir
,
fileName
).
replace
(
/
\\
+/g
,
'
/
'
)
if
(
!
pageName
.
includes
(
'
/$
'
))
{
if
(
!
isDynamicRoute
(
pageName
))
{
continue
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录