This project is a clone of hacker news rewritten with universal JavaScript, using React and GraphQL. It is intended to be an example or boilerplate to help you structure your projects using production-ready technologies.
React - (UI Framework)
GraphQL - (Web Data API)
Apollo - (GraphQL Client/Server)
Next - (Routing, SSR, Hot Module Reloading, Code Splitting, Build tool uses Webpack)
TypeScript - (Static Types)
Webpack - (Module Bundler)
PostCSS - (CSS Processing)
Node.js - (Web Server)
Express - (Web App Server)
Passport - (Authentication)
ESLint - (Coding Best Practices/Code Highlighting)
Jest - (Tests)
Docker - (Container Deployment)
Optional - Yarn or Pnpm Package Manager - (Better Dependencies)
Front End
react
)typescript
)@apollo/client
)next
)Server
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
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 <Link href="/">
. 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 ApolloorGraphQL docs
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.
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
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
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.
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
.
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.
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.
Pull requests are welcome. File an issue for ideas, conversation or feedback.
After you ★Star this project, follow @ClintonDAnnolfo on Twitter.
react+apollo+prisma入门demo搭建—6、更多的变更以及更新store 根据HOW TO GRAPHQL官网的例子,做了些对最新版的改动,适合最新框架的学习。 本系列文章注重前端方面的开发,对于node方面的放在下一个系列。在此过程中有任何问题,都欢迎在评论中提问,会及时反馈 系列目录: 第一章. Frontend开始 第二章. Queries组件编写(Loading Links
react+apollo+prisma入门demo搭建—4、页面路由 根据HOW TO GRAPHQL官网的例子,做了些对最新版的改动,适合最新框架的学习。 本系列文章注重前端方面的开发,对于node方面的放在下一个系列。在此过程中有任何问题,都欢迎在评论中提问,会及时反馈 系列目录: 第一章. Frontend开始 第二章. Queries组件编写(Loading Links) 第三章. Mut
react+apollo+prisma入门demo搭建—2、Queries组件编写(Loading Links) 根据HOW TO GRAPHQL官网的例子,做了些对最新版的改动,适合最新框架的学习。 本系列文章注重前端方面的开发,对于node方面的放在下一个系列。在此过程中有任何问题,都欢迎在评论中提问,会及时反馈 系列目录: 第一章. Frontend开始 第二章. Queries组件编写(L
react+apollo+prisma入门demo搭建—3、Mutations组件编写(Creating Links) 根据HOW TO GRAPHQL官网的例子,做了些对最新版的改动,适合最新框架的学习。 本系列文章注重前端方面的开发,对于node方面的放在下一个系列。在此过程中有任何问题,都欢迎在评论中提问,会及时反馈 系列目录: 第一章. Frontend开始 第二章. Queries组件编
React初学者经常从不需要获取数据的应用开始。他们经常面临一个计数器,任务列表获取井字棋游戏应用。这是很好的,因为在开始学习React的时候,数据获取在你的应用中添加了另一层复杂度。 然而,有些时候你想要从自己的或者第三方API请求真实世界的数据。这个文章给你一个怎么在React中获取数据的演练。这没有外部状态管理的解决方案,像Redux或者MobX参与存储你获取到的数据。相反你将要使用Reac
react+apollo+prisma入门demo搭建—5、身份验证 根据HOW TO GRAPHQL官网的例子,做了些对最新版的改动,适合最新框架的学习。 本系列文章注重前端方面的开发,对于node方面的放在下一个系列。在此过程中有任何问题,都欢迎在评论中提问,会及时反馈 系列目录: 第一章. Frontend开始 第二章. Queries组件编写(Loading Links) 第三章. Mut
react全栈 With emerging cloud technologies, like Amplify and Azure functions, it is now easier than ever to build production ready, robust, and scalable modern web applications. 借助新兴的云技术(例如Amplify和Azure
前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单;本文则是对于半年来发布的前端每周清单中的 React 相关的教程实践与开源项目的盘点,可以查看这里获得往期清单或者其他盘点篇。 教程实践 Twitter 宣布移动 W
作者:王下邀月熊 编辑:徐川 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。 新闻热点 国内国外,前端最新动态 Firefox 55 引入 WebVR 支持:近日发布的 Windows 平台上的 Firefox
要论 2017 年最主流的三个 Web 前端结构,应莫过于 Angular、Vue 和 React 了。然而在实际运用中,这三个结构却不尽相同,对于规模不大的前端项目来说,Vue 因其极易上手会被列出首选之位,Angular 在快速开发大型 Web 项目上很受推崇,但仍存许多缺点,React 正为 JavaScript 运用开发者供给新的开发方式。因此,面对各有千秋的开发结构,作为一名开发者该怎么
DEPRECATED FOR NOW - uses an old version of react native See other react native example apps here: https://expo.io/featured HackerNews-React-Native Hacker News reader for iOS and Android, made with Re
黑客新闻在 Neovim
ember-hackernews-pwa This README outlines the details of collaborating on this Ember application.A short introduction of this app could easily go here. Prerequisites You will need the following things
HackerNews 克隆是基于 HN 的官方 firebase API 、Vue 2.0 、vue-router 和 vuex 来构建的,使用服务器端渲染。 Live Demo 注:如果在一段时间内没有人访问过该网站,则需要一些加载时间。 [Source] 特性 服务器端渲染 Vue + vue-router + vuex 服务端数据提前获取 客户端状态 & DOM 合并 单文件 Vue 组件
graphql-react A GraphQL client for React using modern context and hooks APIs that’s lightweight (< 4 kB) but powerful; the first Relay and Apollo alternative with server side rendering. The API can al
问题内容: 我注意到可以这样导入: …或像这样: 第一个导入模块中的所有内容(请参阅:导入整个模块的内容) 第二个仅导入模块导出(请参阅:导入默认值) 似乎这两种方法是不同的,并且根本上是不兼容的。 为什么它们都起作用? 请参考源代码并解释该机制…我有兴趣了解其工作原理。 ES6常规模块信息回答了该问题。 我在问使模块像这样工作的机制。在这里,它似乎与源代码中的 “ hacky”导出机制有关,但尚