MCPcopy Index your code
hub / github.com/vuejs/vue-hackernews-2.0

github.com/vuejs/vue-hackernews-2.0 @main

repository ↗ · DeepWiki ↗ · + Follow
34 symbols 77 edges 15 files 0 documented · 0% updated 3y ago★ 10,867113 open issues
README

vue-hackernews-2.0

HackerNews clone built with Vue 2.0 + vue-router + vuex, with server-side rendering.

Live Demo

Features

Note: in practice, it is unnecessary to code-split for an app of this size (where each async chunk is only a few kilobytes), nor is it optimal to extract an extra CSS file (which is only 1kb) -- they are used simply because this is a demo app showcasing all the supported features.

  • Server Side Rendering
  • Vue + vue-router + vuex working together
  • Server-side data pre-fetching
  • Client-side state & DOM hydration
  • Automatically inlines CSS used by rendered components only
  • Preload / prefetch resource hints
  • Route-level code splitting
  • Progressive Web App
  • App manifest
  • Service worker
  • 100/100 Lighthouse score
  • Single-file Vue Components
  • Hot-reload in development
  • CSS extraction for production
  • Animation
  • Effects when switching route views
  • Real-time list updates with FLIP Animation

A Note on Performance

This is a demo primarily aimed at explaining how to build a server-side rendered Vue app, as a companion to our SSR documentation. There are a few things we probably won't do in production if we were optimizing for performance, for example:

  • This demo uses the Firebase-based HN API to showcase real-time updates, but the Firebase API also comes with a larger bundle, more JavaScript to parse on the client, and doesn't offer an efficient way to batch-fetch pages of items, so it impacts performance quite a bit on a cold start or cache miss.

  • In practice, it is unnecessary to code-split for an app of this size (where each async chunk is only a few kilobytes so the extra request isn't really worth it), nor is it optimal to extract an extra CSS file (which is only 1kb).

It is therefore not recommended to use this app as a reference for Vue SSR performance - instead, do your own benchmarking, and make sure to measure and optimize based on your actual app constraints.

Architecture Overview

screen shot 2016-08-11 at 6 06 57 pm

A detailed Vue SSR guide can be found here.

Build Setup

Requires Node.js 7+

# install dependencies
npm install # or yarn

# serve in dev mode, with hot reload at localhost:8080
npm run dev

# build for production
npm run build

# serve in production mode
npm start

License

MIT

Core symbols most depended-on inside this repo

resolve
called by 5
server.js
createListView
called by 5
src/router/index.js
serve
called by 4
server.js
fetch
called by 3
src/api/index.js
pluralize
called by 3
src/util/filters.js
createRenderer
called by 2
server.js
createApp
called by 2
src/app.js
asyncData
called by 2
src/views/CreateListView.js

Shape

Function 34

Languages

TypeScript100%

Modules by API surface

src/api/index.js8 symbols
server.js5 symbols
src/views/CreateListView.js4 symbols
src/router/index.js4 symbols
src/util/title.js3 symbols
src/util/filters.js3 symbols
src/store/getters.js2 symbols
src/store/index.js1 symbols
src/entry-client.js1 symbols
src/app.js1 symbols
src/api/create-api-server.js1 symbols
src/api/create-api-client.js1 symbols

Dependencies from manifests, versioned

autoprefixer7.1.6 · 1×
babel-core6.26.0 · 1×
babel-loader7.1.2 · 1×
babel-plugin-syntax-dynamic-import6.18.0 · 1×
babel-preset-env1.6.1 · 1×
chokidar1.7.0 · 1×
compression1.7.1 · 1×
cross-env5.1.1 · 1×
css-loader0.28.7 · 1×
es6-promise4.1.1 · 1×
express4.16.2 · 1×
extract-text-webpack-plugin3.0.2 · 1×

For agents

$ claude mcp add vue-hackernews-2.0 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact