ค้นหาเว็บไซต์

reactjs - การแปลงแอปพลิเคชัน React Typescript เป็น Nextjs


ฉันเป็นมือใหม่กับ Nextjs และฉันได้สร้างเว็บแอปพลิเคชันโดยใช้ Reactjs + Typescript และฉันต้องการแปลงสิ่งนี้เป็น Nextjs ฉันสับสนเกี่ยวกับโครงสร้างไฟล์ว่าควรวางอะไรตรงไหนและส่วนการติดตั้ง แอปพลิเคชันเว็บปัจจุบัน (Reactjs กับ Typescript) มีฐานข้อมูล (Postdb) และฟังก์ชันการทำงาน เช่น:

  1. สร้างบันทึกใหม่
  2. แสดงความคิดเห็นเกี่ยวกับบันทึก
  3. ชอบและไม่ชอบบันทึกนั้น

มีวิธีใดบ้างที่ฉันสามารถแปลงโปรเจกต์ที่มีอยู่ให้เป็น Next.js ได้อย่างราบรื่น?

นี่ก็เป็นโครงสร้างไฟล์ของฉันด้วย

(New-App)
 * node_modules
 * public
   * index.html
   * manifest.json
   * robots.txt
 * src
   * App.tsx
   * db.tsx
   * serviceWorker.ts
   * index.tsx
   * components
       *Notes.tsx
       *Header.tsx
       *List.tsx

   *pages
       *index.tsx
       *Quest.tsx
       *Page.tsx

    * test (has all the test files)
    * images

 *build

คำตอบ #1

ไดเรกทอรี pages ของ Nextjs ถูกเชื่อมโยงกับเส้นทาง (ดูลิงก์นี้) และจะดีกว่าถ้าแยกตรรกะ SSR ออกจากคอมโพเนนต์ React แต่ละตัว
ดังนั้นฉันจึงชอบให้ไฟล์ pages มีเส้นทางและตรรกะ SSR และไฟล์ components มีการสร้างเทมเพลตและตรรกะฝั่งลูกค้า

ตัวอย่างเช่น

หน้า/ดัชนี.tsx

import Notes from '../components/notes'
function HomePage({ notes }) {
  return (
    <div>
      <Notes notes={notes}></Notes>
    </div>
  )
}

HomePage.getInitialProps = async ({ req }) => {
  // DO SSR
  const res = await fetch('https://some/api/endpoint')
  const json = await res.json()
  return { notes: json.notes }
}

export default HomePage

ส่วนประกอบ/บันทึก/index.tsx

import Note from './Note';
export default (props) => {
  return (
    <div>
    {
      props.notes && props.notes.map((note) => <Note note={note}></Note>)
    }
    </div>
  )
}

ส่วนประกอบ/บันทึก/Note.tsx

export default (props) => {
  return (
    <div>
      <p>comment {props.note.comment}</p>
      <p>like {props.note.like}</p>
      <p>dislike {props.note.dislike}</p>
    </div>
  )
}