다음.뉴 노멀
7786 단어 reactshortnoteswebdevnextjs
다음과 같은 이점을 제공합니다.
극본
다음 프로젝트를 실행하고 구축하는 데 사용되는 일반적인 명령은 다음과 같습니다.
"scripts":{
"dev": "next", // start in dev mode
"build": "next build", // start production build
"start": "next start" // run production build
}
경로
reach-router
pages
notes/:id
등 파라미터를 수신할 수 있다.이를 위해, notes 폴더에 [id].js(x)
이라는 파일을 만들기만 하면 됩니다.만약 notes 폴더에 색인 파일이 있다면, 그것은 notes/
루트 useRouter
의 next/router
갈고리를 사용할 수 있다.강의의 경우 withRouter
개의 HOC가 있습니다.notes/[id].js
import { useRouter } from 'next/router'
function App(){
const router = useRouter()
const {id} = router.query
return (
...
)
}
export default App
참고: React에서 기능 어셈블리는 사실상 렌더링 기능입니다.기능 구성 요소의 경우 전체 함수는 렌더링 방법입니다.클래스에 대해 우리는 되돌아오는 값을 가진 현식 render()
이 있을 것이다.notes/shihab/1
을 처리하려면, notes 디렉터리에 [...slug].js
이라는 파일이 있을 수 있습니다.이번 공유기 조회는 ['shihab',1]
과 비슷한 그룹을 되돌려줍니다.전체 포획 노선이 있어도 이 인덱스는 여전히 사용될 것이다.항행
연결 구성 요소
내비게이션
next/link
에 대해 Link
요소를 공개해 주세요.그것은 항상 클라이언트 루트에 사용됩니다.이것은 내비게이션을 할 때 네트워크 호출을 촉발하지 않는다는 것을 의미한다.import Link from 'next/link'
function App(){
...
return {
....
<Link href='/notes/[id]' as={`/notes/${id}`}>
<a>Note</a>
</Link>
}
}
as
경로는 정확한 경로 URL이 되고 href
경로는 파일의 상대적인 위치가 됩니다.href
아이템은 페이지 목록의 페이지 이름을 사용합니다.동적 노선에 as
아이템이 필요합니다.링크 구성 요소의 하위 단계로 a표시가 있어야 하지만 href는 링크에 있습니다.
서버 측 라우팅의 경우 언제든지
<a href='/docs'>Server side routing</a>
과 같은 앵커 마크를 사용할 수 있습니다.프로그램 라우팅
코드에서 내비게이션을 위해
router.push()
의 next/router
갈고리 중의 useRouter
을 사용할 수 있다.import { useRouter } from 'next/router'
function naviagteOnSuccess(){
const router = useRouter()
....
router.push('/notes/[id]',`/notes/${note.id}`)
}
스타일링
pages/_app.js
이어야 합니다.특수 파일
파일 이름.모듈(s) css
_app.js
파일이 바로 이곳입니다.글로벌 스타일, 소품 또는 무엇이든 주입하고 싶다면 이곳에서 진행해야 한다.만약 당신이 이렇게 하지 않는다면, 이 _app.js
은 자동으로 당신을 위해 만들 것입니다. 다음.js 설정
_app.js
프로젝트의 루트 디렉토리 TS 지원
next-config.js
만 생성하면 됩니다.API 라우팅
.tsconfig.json
디렉토리에 배치할 수 있습니다.데이터 획득
기본값:
보유한 서버에서 데이터 가져오기
도구
pages/api
을 전달합니다params
명령을 사용하여 구축할 때)export async function getStaticProps(context) {
return {
props: {}
}
}
GetStaticPath
next build
의 그룹을 되돌려야 합니다paths
export async function getStaticPaths() {
// get all the paths for your posts from an API
// or file system
const results = await fetch('/api/posts')
const posts = await results.json()
// create the paths array
const paths = posts.map(post => ({params: {slug:
post.slug}}))
/*
[
{params: {slug: 'get-started-with-node'}},
{params: {slug: 'top-frameworks'}}
]
*/
return {paths}
}
export async function getStaticProps({ params }) {
const res = await fetch(`/api/post/${params.slug}`)
const post = await res.json()
return {
props: {post}
}
}
getServerSideProps
export async function getServerSideProps() {
const response = await fetch(`https://somedata.com`)
const data = await response.json()
return { props: { data } }
}
getInitialProps
클라이언트 렌더링(CSR)용 (Client Rendering)
언제 시작 해요?
위와 같은 요구 사항이 있지만 페이지에 동적 URL 매개 변수가 있습니까?getStaticProps 및 GetStaticPath 사용
렌더링 모드
기본적으로 3가지 렌더링 모드가 있습니다.
적절한 데이터 획득 정책을 선택하면 프로그램의 렌더링 모드를 결정할 수 있습니다.
하면, 만약, 만약...
서버 측이 그것들을 보여주는 것은 무의미하다.우리는 사용할 수 있고,
const NoSSR=dynamic(()=>import('../component'),{
loading:()=><div>Loading.....</div>,
ssr:false
})
fallback: true
은 항상 클라이언트에 의해 제공됩니다.배치하다
기본적으로 노드가 필요합니다.js 환경.
<NoSSR/>
을 사용하면 다음 프로젝트에서 순수한 정적 구축을 만들고 서버를 제공할 수 있습니다.
Reference
이 문제에 관하여(다음.뉴 노멀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codermonkey/next-js-the-new-normal-3imn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)