Hacker News 克隆版,使用 React 和 GraphQL 重写,采用通用 JavaScript。
Hacker News 克隆版,使用 React 和 GraphQL 重写,采用通用 JavaScript。
`server.ts` is the entry point. It uses Express and passes requests to Next. Next SSR renders the pages using `getServerSideProps()` hook from Apollo helper. Therefore the app makes GraphQL requests on the client or server. When the client loads the page it preloads next pages code from any ``. When the client navigates to the next page it only needs to make one GraphQL query to render. _Great!_ See more: Next.js, Apollo GraphQL Client GraphQL: GraphQL-Tools by Apollo or GraphQL docs ### Directory Structure Each web page has a React component in `pages`. Server code is in `server`. Shared code that runs on client or server is in `src`. Do not import from `server` or `pages` in `src` to avoid running code in the wrong environment. The project root contains config files such as TypeScript, Babel, ESLint, Docker, Flow, NPM, Yarn, Git. ## How To Start ### One Click Download & Run You can download and run the repo with one command to rule them all: `git clone https://github.com/clintonwoo/hackernews-react-graphql.git && cd hackernews-react-graphql && npm install && npm start` ### Setup Running the app in dev mode is fully featured including _hot module reloading_: `npm install` `npm start` To run in production mode: `npm run build:prod && npm run start:prod` ### Configuration The project runs out of the box with default settings (`/src/config.ts`). You can include a .env file in your project root to configure settings (this is the '_dotenv_' npm package). The _.env_ file is included in _.gitignore_. ## How To Test ### Jest `npm test` This project uses Jest and can do snapshot testing of React components. Whenever a component is changed, please update the snapshots using `npm test -- -u` or `npx jest --updateSnapshot`. ## How To Build For Deployment `npm run build:prod`: NextJS app with entry point `server.ts` that uses Node.js/Express. Uses TypeScript compiler to transpile project src to build. OR `npm run build-docker` Docker Container: Builds a docker container using Dockerfile. #### Static Website (Optional) NextJS lets us make a powerful static website but you need to consider if you need server side rendering. `npm run build-static-website`: Builds static website to `/build/static`. Use a static web server _eg._ NGINX/Github Pages. ## Contributing Pull requests are welcome. File an issue for ideas, conversation or feedback. ### Community After you ★Star this project, follow [@ClintonDAnnolfo](https://twitter.com/clintondannolfo) on Twitter.
暂无开放 Issues,或尚未同步最近议题。