当前位置: 首页 > 软件库 > 大数据 > 数据查询 >

hackernews-react-graphql

授权协议 MIT License
开发语言 Java
所属分类 大数据、 数据查询
软件类型 开源软件
地区 不详
投 递 者 於子晋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Hacker News Clone React/GraphQL

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.

Live Demo

Overview

Featuring

  • 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)

Benefits

Front End

  • Declarative UI - (react)
  • Static Typing (typescript)
  • GraphQL Fragment Colocation - (@apollo/client)
  • Prefetch Page Assets - (next)

Server

  • Universal JS - (node & express)
  • Declarative GraphQL Schema - (apollo-server)
  • GraphQL Query Batching - (apollo-server-express)
  • GraphQL Stored Queries - (apollo-server-express)
  • Easy GraphiQL Include - (apollo-server-express)
  • Local Authentication Strategy - (passport)
  • Server Side Rendering - (next)
  • Code Splitting - (next)
  • Build to Static Website - (next)
  • Container Based Runtime - (docker)

Dev/Test

  • Hot Module Reloading - (next)
  • Snapshot Testing - (jest)
  • GraphQL Playground - (apollo-server-express)
  • Faster Package Install - (pnpm/yarn)
  • JS/TS Best Practices - (eslint)

Architecture Overview

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

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-dockerDocker 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 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”导出机制有关,但尚