41
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vue.js + ExpressでSSRをやってみた

Last updated at Posted at 2017-10-11

簡単に管理できるようにバックエンド(express)とクライアントエンド(Vue.js)を分けます。

#express
express-generatorを使って構築します。

npm install express-generator -g 

テンプレートとしてJadeを使います。

express --view=jade backend
cd backend
npm install
DEBUG=backend:* npm start

http://localhost:3000 にアクセス見たら、Welcome to expressが表示させることを確認できます。自分は3000ポートをすでにRailsで使っているため以下のように実行しました。

PORT=3030 DEBUG=backend:* npm start

#Vue.js
vue-cliを使って構築します。

npm install -g vue-cli 

テンプレートとしてWebpackを使います。

vue init webpack frontend

設定項目の質問は確認して設定を行います。ただし、Install vue-routerは必ずYesにしてください。

cd frontend
npm install
npm run dev

http://localhost:8080/#/ が自動にブラウザーを開き、表示されます。

expressとvue連結

http://localhost:8080 にリクエストが来た場合、localhost:3030をProxyに使うように設定します。

frontend/config/index.js から proxyTable を修正します。

proxyTable: {
  '/': {
    target: 'http://localhost:3030/',
    changeOrigin: true,
    pathRewrite: {
      '^/': ''
    }
  }
},

http://localhost:8080 にアクセスすると welcome expressページが表示されます。

expressサーバーだけ使う

現在はサーバーがexpressとvue no
webpack-dev-serverが一緒に動いています。現在はlocalhost:3030にアクセスするとexpressのページが表示されます。
vueアプリを配布してexpressサーバーだけ使ってvueにアクセスできるようにします。

frontend/config/index.js から buildで以下の部分を修正します。

index: path.resolve(__dirname, '../../backend/public/index.html'),
assetsRoot: path.resolve(__dirname, '../../backend/public'),

修正した後、ビルドしたらbackend/publicにビルドされた結果が作られます。
frontendをrunしなくてもvueの結果がexpressから表示されます。

cd frontend
npm run build

http://localhost:3030/ にアクセスするとVue.jsのWelcom to Your Vue.js Appページが表示されます。

vueのrouterをhistoryモードに変更

http://localhost:3030/ にアクセスすると http://localhost:3030/#/ になるのは現在のvueアプリがhashモードだからです。そのためhistoryモードに変更します。

frontend/config/index.js に以下のコードを追記します。

export default new Router({
  mode: 'history',
  routes: [
    {
         ...

今後vueアプリでhistoryモードが引き継がれない問題があるため、connect-history-api-fallbackを使いします。

まずinstallします。

cd backend
npm install --save connect-history-api-fallback

backend/app.js に以下のコードを追記します。

var app = express();
app.use(require('connect-history-api-fallback')());
41
39
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?