โครงการนี้เป็นโคลนของข่าวแฮ็กเกอร์ที่เขียนใหม่ด้วย Universal JavaScript โดยใช้ React และ GraphQL มีจุดประสงค์เพื่อเป็นตัวอย่างหรือแผ่นหม้อไอน้ำเพื่อช่วยให้คุณจัดโครงสร้างโครงการของคุณโดยใช้เทคโนโลยีพร้อมการผลิต

การสาธิตสด
React - (กรอบ UI)
GraphQl - (Web Data API)
Apollo - (graphql ไคลเอนต์/เซิร์ฟเวอร์)
ถัดไป - (การกำหนดเส้นทาง, SSR, การโหลดโมดูลร้อน, การแยกรหัส, เครื่องมือสร้างใช้ webpack)
TypeScript - (ประเภทคงที่)
WebPack - (โมดูล Bundler)
POSTCSS - (การประมวลผล CSS)
node.js - (เว็บเซิร์ฟเวอร์)
ด่วน - (เว็บแอพเซิร์ฟเวอร์)
หนังสือเดินทาง - (การรับรองความถูกต้อง)
ESLINT - (การเขียนโค้ดแนวทางปฏิบัติที่ดีที่สุด/การเน้นรหัส)
jest - (การทดสอบ)
Docker - (การปรับใช้คอนเทนเนอร์)
ตัวเลือก - เส้นด้ายหรือ PNPM Package Manager - (การพึ่งพาที่ดีกว่า)
ส่วนหน้า
react )typescript )@apollo/client )next )เซิร์ฟเวอร์
node & express )apollo-server )apollo-server-express )apollo-server-express )apollo-server-express )passport )next )next )next )docker )dev/test
next )jest )apollo-server-express )pnpm / yarn )eslint )
server.ts เป็นจุดเข้า มันใช้ Express และส่งคำขอไปยังถัดไป SSR ถัดไปแสดงหน้าหน้าโดยใช้ getServerSideProps() Hook จาก Apollo Helper ดังนั้นแอพจึงทำให้คำขอ GraphQL บนไคลเอนต์หรือเซิร์ฟเวอร์
เมื่อไคลเอนต์โหลดหน้าเว็บจะโหลดรหัสหน้าถัดไปจาก <Link href="/"> เมื่อไคลเอนต์นำทางไปยังหน้าถัดไปจะต้องสร้างแบบสอบถาม GraphQL หนึ่งแบบเพื่อแสดงผล ยอดเยี่ยม!
ดูเพิ่มเติม: Next.js, Apollo GraphQl Client
graphql: graphql-tools โดย Apollo หรือ graphql docs
หน้าเว็บแต่ละหน้ามีส่วนประกอบตอบสนองใน pages รหัสเซิร์ฟเวอร์อยู่ใน server รหัสที่ใช้ร่วมกันที่ทำงานบนไคลเอนต์หรือเซิร์ฟเวอร์อยู่ใน src อย่านำเข้าจาก server หรือ pages ใน src เพื่อหลีกเลี่ยงการเรียกใช้รหัสในสภาพแวดล้อมที่ไม่ถูกต้อง
รูทโครงการมีไฟล์กำหนดค่าเช่น typeScript, Babel, Eslint, Docker, Flow, NPM, เส้นด้าย, Git
คุณสามารถดาวน์โหลดและเรียกใช้ repo ด้วยคำสั่งเดียวเพื่อปกครองพวกเขาทั้งหมด:
git clone https://github.com/clintonwoo/hackernews-react-graphql.git && cd hackernews-react-graphql && npm install && npm start
การรันแอพในโหมด Dev นั้นมีจุดเด่นอย่างเต็มที่รวมถึง การโหลดโมดูลร้อน :
npm install
npm start
ในการทำงานในโหมดการผลิต:
npm run build:prod && npm run start:prod
โครงการหมดกล่องด้วยการตั้งค่าเริ่มต้น ( /src/config.ts ) คุณสามารถรวมไฟล์. env ในรูทโครงการของคุณเพื่อกำหนดค่าการตั้งค่า (นี่คือแพ็คเกจ ' dotenv ' npm) ไฟล์ . env รวมอยู่ใน . gitignore
npm test
โครงการนี้ใช้ความตลกขบขันและสามารถทำการทดสอบสแน็ปช็อตของส่วนประกอบปฏิกิริยา เมื่อใดก็ตามที่มีการเปลี่ยนแปลงส่วนประกอบโปรดอัปเดตสแน็ปช็อตโดยใช้ npm test -- -u หรือ npx jest --updateSnapshot
npm run build:prod : NextJS แอปพร้อมจุดเริ่มต้น server.ts ที่ใช้ node.js/express ใช้คอมไพเลอร์ TypeScript เพื่อ transpile Project SRC เพื่อสร้าง
หรือ
npm run build-docker Docker: สร้างคอนเทนเนอร์ Docker โดยใช้ DockerFile
NextJS ให้เราสร้างเว็บไซต์คงที่ที่ทรงพลัง แต่คุณต้องพิจารณาว่าคุณต้องการการแสดงผลด้านเซิร์ฟเวอร์หรือไม่
npm run build-static-website : สร้างเว็บไซต์คงที่เป็น /build/static ใช้เว็บเซิร์ฟเวอร์แบบคงที่ เช่น หน้า nginx/gitHub
ยินดีต้อนรับคำขอดึง ยื่นปัญหาสำหรับแนวคิดการสนทนาหรือข้อเสนอแนะ
หลังจากที่คุณ★แสดงโครงการนี้ให้ติดตาม @clintondannolfo บน Twitter