webpack.config.js
new PrerenderSPAPlugin({ staticDir: path.join(__dirname, 'dist'), routes: [ '/', '/about', '/contact'],
安裝koa
yarn add koa koa-router koa-views koa-static
撰寫koa
引用lib
./server.js
const Koa = require('koa'); const Router = require('koa-router'); const views = require('koa-views'); const serve = require('koa-static'); const app = new Koa();
指定view的路徑與副檔名
app.use(views(__dirname + '/dist', { extension: 'html' }));
寫個router
const router = Router(); // Router -> / router.get('/(.*)', async(ctx) => { await ctx.render('index') });
指定static folder
app.use(serve(__dirname + '/dist'));
最後註冊router和設定port
app .use(router.routes()) .use(router.allowedMethods()); app.listen(8001);
yarn add vue-meta-info
以 about頁面為例
src/components/About.vue
export default { metaInfo: { title: "About", meta: [ { name: "About", content: "About Page" } ], link: [ { rel: "asstes", href: "https://assets-cdn.github.com/" } ] } };
index.html
<head> <meta charset="utf-8"> <title>{{ title }}</title> </head>
yarn build
會產生到 ./dist 資料夾
修改
webpack.config.js
new PrerenderSPAPlugin({ staticDir: path.join(__dirname, 'dist'), routes: [ '/', '/about'],
重新產生靜態頁面
yarn build
或是我們偷懶一點,直接把 ./dist/contact砍掉就好
重新跑,點擊contact超連結,之後看原始碼
你會發現它讀取的是Vue進入的那一頁 ./dict/index.html,表示這頁是CSR。
這兩種方法可不可以混在一塊寫…
等你…
會後討論