美文网首页Web 前端开发 前端开发那些事让前端飞
使用Vue语法渲染你的Koa视图文件?

使用Vue语法渲染你的Koa视图文件?

作者: imingyu | 来源:发表于2017-10-19 10:41 被阅读0次

前言

Koa是Express团队开发新一代Node Web应用开发框架,当你使用她开发你的Web应用时,一件很重要的事肯定就是——怎样渲染我的视图?

很多人想,那还不简单,选择一个模板引擎,再找个对应支持该引擎的Koa中间件不就行了;
答案是这样的,你也能找到类似下面一堆的中间件:

koa views.png

但是有没有想过,直接用Vue的语法与渲染你的视图?于是你找了很多地方,你并不一定找到很好的方案,找到更多的也许是Vue ssr集成方案上去了,但是那个有很多麻烦的地方,它的比较好的使用场景是前后端同构开发;

而你现在只想简单的,要Vue的语法,和他的一些其他核心特性,如:组件化、指令、过滤器等;有没有这样一个现成Koa中间件?

有!!!

合适的中间件

正是因为我有上面的需求,同时也没有找到类似的解决方案,所以我自己基于Vue的服务端渲染方案封装了一个Koa中间件,可以实现上面的所有需求,她的地址:

https://github.com/imingyu/koa-vue-view

可以查看git仓库中test文件夹,里面涉及了场景需求的单元测试,均已通过,可以放心使用

此中间件目前支持Koa2版本,最近我会更新下,让她也支持Koa1;

安装

npm i -S koa-vue-view

使用

<!--模板: ./views/Master.vue -->
<template>
    <html lang="zh-CN">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>{{hight(app.name)}} - {{app.version}}</title>
        <slot name="meta"></slot>
    </head>

    <body>
        <h1>{{layoutName}} - {{layoutVersion}}</h1>
        <slot name="top"></slot>
        <slot></slot>
        <slot name="bottom"></slot>
    </body>

    </html>
</template>

<!--组件: ./components/Age.vue -->
<template>
    <strong style="color:red;">
        <slot></slot>
    </strong>
</template>


<!--页面: ./views/User.vue -->
<template>
    <Master>
        <ul>
            <li v-for="(item,index) in users" :key="index">{{item.name}} <Age>{{ add(item.age, 1) }}</Age></li>
        </ul>
    </Master>
</template>
var path = require('path');
var Koa = require('koa');
var VueView = require('koa-vue-view');

var app = new Koa();
app.use(VueView({
    methodName: 'render',//在koa ctx注册渲染视图的方法名,默认render
    data: {
        _: require('lodash'),
        app: {
            name: 'Github',
            version: '1.0.0'
        }
    },
    methods: {
        add(a, b) {
            return a + b;
        }
    },
    components: {
        Master: {
            path: path.resolve(__dirname, './views/Master.vue'),
            data() {
                this.layoutVersion = '1.0.0';
                return {
                    layoutName: 'master'
                }
            },
            methods: {
                hight(str) {
                    return `***${str}***`;
                }
            }
        },
        Age: path.resolve(__dirname, './components/Age.vue')
    }
}));

app.use(ctx => {
    ctx.state.users = [{
        name: 'Tom',
        age: 20
    }, {
        name: 'Alice',
        age: 18
    }];
    ctx.render(path.resolve(__dirname, './views/User.vue'));
    /*
    或者
    ctx.render({
        path:path.resolve(__dirname, './views/User.vue'),
        data(){
            return {name:'Github'}
        },
        methods:{
            show(){}
        }
    });
    */
})


app.listen(8200);

运行上述代码后,你就会发现,哇塞!! 可以在Koa视图里欢快的玩耍Vue啦,欧耶!

相关文章

  • 使用Vue语法渲染你的Koa视图文件?

    前言 Koa是Express团队开发新一代Node Web应用开发框架,当你使用她开发你的Web应用时,一件很重要...

  • koa2入门系列 Part 4

    koa静态文件配置 上一节讲述了在koa中的模版渲染,也就是html文件在koa中的应用,但作为前端的渲染文件,光...

  • 模板语法

    Vue使用基于HTML的模板语法 模板编译为虚拟DOM渲染函数 状态改变 Vue计算渲染组件最小代价更新DOM 也...

  • vue-toy: 200行代码模拟Vue实现

    vue-toy 200行左右代码模拟vue实现,视图渲染部分使用React来代替Snabbdom,欢迎Star。项...

  • vue.js与后台模板引擎“双花括号”语法冲突时的解决办法

    后台渲染模板如swig,也使用“{{ }}“作为渲染,与前端vue的数据绑定“Mustache”语法 (双大括号)...

  • vue基础语法

    vue常用基础语法: 一、模板语法 1.vue使用基于html的模板语法,智能计算出最少需呀重复渲染的组件;2.数...

  • Vue渲染方式

    前言 所有代码运行Vue版本:2.5.16 Vue中的渲染方式个人总结可分为4种: 原有模板语法,挂载渲染 使用r...

  • vue组件开发那些事

    使用vue开发感悟 刚开始开发vue的组件有些不太习惯,对vue templte的模板语法对比react渲染的内容...

  • 2019-03-09 Vue基础知识

    Vue2.x 模板语法,条件渲染,列表渲染渲染 Vue2.x Router,Vuex 集成Vue2.x Vue2....

  • Vue 基础 - 前端路由

    使用vue-router实现前端路由 安装vue-router: 配置路由文件,并在vue实例中导入: 设置视图(...

网友评论

    本文标题:使用Vue语法渲染你的Koa视图文件?

    本文链接:https://www.haomeiwen.com/subject/oecuuxtx.html