Vue SSR 项目 Nuxt.js 框架之《设置mate与定义化html模板》

html-css018

Vue SSR 项目 Nuxt.js 框架之《设置mate与定义化html模板》,第1张

在做一些SEO的时候,一般会设置meta信息,或者做移动端项目的时候会设置一下视口等。我们一起看下在 nuxt 中如何设置 meta 和 head 内容的,以及如何定义化 html 模板。

重启后查看源码就可以看到我们设置的 head 信息了~~

页面个性化设置的时候,需要在页面里写入 head 函数并返回一个对象,如下:

这样就完成了每个页面的个性化的 meta 等一些 head 信息

每个页面的个性化设置 head 信息可以每个页面都写一个 head 函数去设置,但显得臃肿也不利于维护。我们可以在 plugins 的 mixins 文件里混入一个全局方法,每个页面去调用,以此来实现个性化的 meta 信息设置。

混入后,每个页面使用如下:

处理以上提到的设置 head 信息的方式,还可以通过定义化 html 模板来实现,但需要遵循nuxt的一些规则,比如:名称必须为 app.html ,而且必须用 双花括号 获得已设置的信息等,如下:

一、使用javascript 模板引擎

用javascript预编译模版,就是动态修改模板文件使之成为一个可用的静态HTML文件。 我平时会使用artTemplate,性能很好而且易上手。

编写模板

使用一个type="text/html"的script标签存放模板:

<script id="test" type="text/html">

<h1>{{title}}</h1>

<ul>

{{each list as value i}}

<li>索引 {{i + 1}} :{{value}}</li>

{{/each}}

</ul>

</script>

渲染模板

var data = {

title: '标签',

list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']

}

var html = template('test', data)

document.getElementById('content').innerHTML = html

二、使用CoffeeScript

CoffeeScript支持类似于Python的跨行字符串,这样很轻易的就能保持HTML结构的可读性,而不需要使用“+”或者采用拼数组的形式。

str="""

<div class="dialog">

<div class="title">

<img src="close.gif" alt="关闭" />关闭

</div>

<div class="content">

<img src="delete.jpg" alt="" />

</div>

<div class="bottom">

<input id="Button2" type="button" value="确定" class="btn"/>

<input id="Button3" type="button" value="取消" class="btn"/>

</div>

</div>

"""

如果你已经安装了 uglifyjs (npm install uglify-js),你可以执行下面的命令它会生成所有的文件。其实每一个正式版本里都帮你做了这事。

make jade.min.js

默认情况下,为了方便调试Jade会把模板组织成带有形如 __.lineno = 3 的行号的形式。 在浏览器里使用的时候,你可以通过传递一个选项 { compileDebug: false } 来去掉这个。