vue中的页面渲染方案
一、模板渲染
<div id="J_render_app">
<ul v-if="items.length">
<li v-for="item in items">{{ item.name }}</li>
</ul>
<p v-else>No items found.</p>
</div>
var vrrapp = new Vue({
el:"#J_render_app",
data:{
items:[
{ name: "vuejs" },
{ name: "angularjs" },
{ name: "reactjs" }
]
}
})
二、组件模板渲染
<div id="J_render_app">
<ul v-if="items.length">
<my-li v-for="item in items" :tolearn="item"></my-li>
</ul>
<p v-else>No items found.</p>
</div>
Vue.component('my-li',{
props:["tolearn"],
template:'<li>{{ tolearn.name }}</li>'
})
var vrrapp = new Vue({
el:"#J_render_app",
data:{
items:[
{ name: "vuejs" },
{ name: "angularjs" },
{ name: "reactjs" }
]
}
})
三、render函数渲染
改变真实的DOM状态远比改变一个JavaScript对象的花销要大得多,这就是react和vue在性能方面的一大优势,下面简单介绍虚拟dom。
createElement告诉Vue页面上需要渲染什么样的节点,及其子节点。这些节点是虚拟节点,所有虚拟节点形成虚拟dom。
1、例子
<div id="J_render_app">
<my-condition></my-condition>
</div>
Vue.component('my-condition',{
data:function(){
return {
items:[
{name:"vuejs"},
{name:"angularjs"},
{name:"reactjs"}
]
}
},
render: function (createElement) {
if (this.items.length) {
return createElement('ul', this.items.map(function (item) {
return createElement('li', item.name)
}))
} else {
return createElement('p', 'No items found.')
}
}
})
var vrrapp = new Vue({
el:"#J_render_app"
})
2、例子
<div id="J_render_app">
<anchored-heading :level="2">Hello world!</anchored-heading>
</div>
var getChildrenTextContent = function (children) {
return children.map(function (node) {
return node.children ? getChildrenTextContent(node.children) : node.text
}).join('')
}
Vue.component('anchored-heading', {
render: function (createElement) {
// create kebabCase id
var headingId = getChildrenTextContent(this.$slots.default)
.toLowerCase()
.replace(/\W+/g, '-')
.replace(/(^\-|\-$)/g, '')
return createElement(
'h' + this.level,
[
createElement('a', {
attrs: {
name: headingId,
href: '#' + headingId
}
}, this.$slots.default)
]
)
},
props: {
level: {
type: Number,
required: true
}
}
})
var vrrapp = new Vue({
el:"#J_render_app"
})
四、jsx渲染
vue推荐大部分情况下用模板渲染页面,但有时候也需要用render函数。为了更接近模板语法,可以在vue中使用jsx。
vue中的页面渲染方案的更多相关文章
- Web开发中,页面渲染方案
转载自:http://www.jianshu.com/p/d1d29e97f6b8 (在该文章中看到一段感兴趣的文字,转载过来) 在Web开发中,有两种主流的页面渲染方案: 服务器端渲染,通过页面渲染 ...
- vue中在页面渲染完之后获取元素(否则动态渲染的元素获取不到)
两种方法: 方法一: 使用$nextTick,在异步获得数据之后再获取元素: 方法二: 在then之后再获取该元素: 问题2:vue中监听改变数组的方法: let idx =; this.listIn ...
- 理解Vue中的Render渲染函数
理解Vue中的Render渲染函数 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现 ...
- vue中滚动页面,改变样式&&导航栏滚动时,样式透明度修改
vue中滚动页面,改变样式&&导航栏滚动时,样式透明度修改.vue <div class="commonHeader" v-bind:class=" ...
- 3-7 Vue中的列表渲染
举个案例:循环data中的list的值在div中,并显示相应的index值. 关于数组的循环: //显示效果如下图: //一般的列表渲染最好带一个key值,要把key值设置为唯一值的话,可以选择in ...
- 3-6 Vue中的条件渲染
本次案例讲解:v-if,v-show,v-else,v-else-if和key值的相关用法!!! v-if指令: //通过一个(v-if)指令 ,可以结合js表达式的返回值,决定一个标签是否在页面上展 ...
- vue中嵌套页面 iframe 标签
vue中嵌套iframe,将要嵌套的文件放在static下面: <iframe src="../../../static/bear.html" width="300 ...
- vue中嵌套页面(iframe)
vue中嵌套iframe,将要嵌套的文件放在static下面.(要将打包文件整体放在statici里,我的文件名是canvas) src可以使用相对路径,也可使用服务器根路径http:localhos ...
- vue中判断页面滚动开始和结束
参考链接:https://www.jianshu.com/p/adad39705ced 和 https://blog.csdn.net/weixin_44309374/article/deta ...
随机推荐
- 动态获取后台传过来的值作为select选项
问题描述:点击左侧菜单项,进入对应的具体页面a.html,页面上方有个select框,点击框后,会浮现选择项. 解决思路:对左侧菜单项添加一个onclick事件,进入后台做具体的查询,将查询到的lis ...
- 【splunk】按时间统计并找到异常值
场景: 有长时间对多个端口访问的日志数据,每天对端口的访问量是稳定的.如果某一天对某个端口的访问量突然增加表示可能出现了问题.现在要通过splunk找到异常值. 思路: 统计每个端口每天的访问量.统计 ...
- 【mysql】编码问题
原始数据是unicode,存入数据库.需要注意的几个地方: 1.建立数据库时,选择编码方式为utf8 -- UTF-8 Unicode 2.代码中建立数据库连接时,选择charset=utf8 3.存 ...
- tomcat 报错处理
一.tomcat报错找不到资源集市 原因:tomcat的配置文件sever.xml 里的 docbase配置被Eclispe修改了 解决方法:修改回来 <Context docBase=&quo ...
- laravel 统计数据
//根据format字符串格式化date值.下列修饰符可以被用在format字符串中: //%M 月名字(January……December) //%W 星期名字(Sunday……Saturday ...
- css中border画三角形
<!doctype html><html lang="en"> <head> <meta charset="UTF-8&quo ...
- centos6 防火墙iptables操作整理
使用语句 前言: iptables的启动文件位置再: /etc/init.d/iptables , srevice iptables调用的就是这里的执行文件 查看防火墙状态 service i ...
- json数组
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>js ...
- shell 按序删除文件
一.按时间排序 cd /data/wosbak/hrs/pre/ && ls -A -t | awk '{if(NR>15){print $9}}' | xargs rm -rf ...
- Sublime Text 3 快捷键总结(拿走)
以下是个人总结不完全的快捷键总汇,祝愿各位顺利解放自己的鼠标. 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同 ...