Vue2 几种常见开局方式
在SF问题中看到了一个关于vue-cli中的template问题,问题是这样的:
用vue-cli工具生成的main.js中:
import Vue from 'vue'
import App from './App'
import router from './router' Vue.config.productionTip = false /* eslint-disable no-new */
new Vue({
el: '#app',
router,
template: '<App/>',
components: { App }
})
然后问友的问题是:
【template: '<App/>'】这句是什么意思?
是指使用app.vue模板吗?但在vue没有看到这样的用法哦!
里面只有:
1 template:'#xxx' 根据id获取
2 template:'<xx>.....<xx>' 直接使用
请问有没有相关的文档解释呢?
看到这个问题,其实就是vue的开局方式写法总结。
Vue2 加了reader选项后, 再加上几种构建方式, 开局方式真是各种五花八门, 这里列几种常见的, 说说注意点
我们先建立一个 app.vue 来当入口组件, 即所有页面都会以这个组件为模板 (下面代码中无特别说明, App 即指下面这个组件)
<template>
<div id="app">
<img src="./assets/logo.png">
<hello></hello>
<!-- 这里还可以写点其他组件, 或者路由也可以 <router-view></router-view> -->
</div>
</template>
<script>
import Hello from './components/Hello'
export default {
name: 'app',
components: {
Hello
}
}
</script>
<style>
</style>
方式 1
模板文件:
<div id="app"></div>
注意: vue2 已经不支持直接绑定在 body 和 html 元素上, 所以我们需要在 body 里写个挂载元素
main.js 入口文件:
import App from './app.vue'
new Vue({
el: '#app',
render: creatElment => creatElment(App)
})
这里的采用 es6 的写法, 转出 es5 就是
render: funciton(creatElment) {
return creatElment(App)
}
creatElment 的第一个参数可以是String(HTML 标签名称) | Object(组件对象) | Function(函数), 这里传的就是个组件对象
注意: 这种情况下, App 组件并不是根组件
方式 2
模板文件:
<div id="app"></div>
main.js 入口文件:
import App from './app.vue'
new Vue({
el: '#app',
render: creatElment => creatElment('App'),
components: {
App
}
})
这个写法是不是和第一种很像? 只不过这里传的就是个App标签, 通过render渲染一个<App></App>元素, 然后把 App 当组件来用
注意: 这种情况下, App 组件并不是根组件
方式 3
模板文件:
<div id="app"></div>
main.js 入口文件:
import App from './app.vue'
new Vue({
el: '#app',
...App
})
这种方法和方式1 基本一样, 区别就在于render: creatElment => creatElment(App)和...App
render: creatElment => creatElment(App)是把 App 当成一个组件对象, 给render解析, 而...App是将 App 这个组件对象和{el: '#app'}这个对象直接合并, 变成Vue的参数
注意: 这种情况下, this.$root 是 App 组件
注意: 这种写法, 需要在.babelrc里添加stage-3以上的presets, 如:
{
"presets": ["es2015", "stage-2"]
}
方式 4
模板文件:
<div id="app">
<App></App>
</div>
main.js 入口文件:
import App from './app.vue'
new Vue({
el: '#app',
components: {
App
}
})
这种写法就是完全把 App 当成一个组件使用, 所以我们需要在模板里添加<App></App>
注意: 上面这种写法需要在 webpack 配置别名, 这种情况下, App 组件并不是根组件
module.exports = {
resolve: {
alias: {
'vue$': 'vue/dist/vue.common.js'
}
}
}
方式 5
模板文件:
<div id="app"></div>
main.js 入口文件:
import App from './app.vue'
new Vue({
el: '#app',
template: '<App/>',
components: {
App
}
})
这种写法就也是完全把 App 当成一个组件使用, 不过模板直接写在了template选项里
注意: 上面这种写法需要在 webpack 配置别名, 这种情况下, App 组件并不是根组件
module.exports = {
resolve: {
alias: {
'vue$': 'vue/dist/vue.common.js'
}
}
}
Vue2 几种常见开局方式的更多相关文章
- Vue 几种常见开局方式
vue的开局方式五花八门,这里列几种常见的. 我们先建立一个app.vue来当入口文件,即所有页面都会以这个组件为模板. <template> <div id="app&q ...
- Linux下几种常见压缩方式测试对比
目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比
- Redis 的几种常见使用方式
常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 各种使用方式的优 ...
- java中的线程(2):如何正确停止线程之3种常见停止方式
1.常见停止方式 自定义线程,其中含退出标志位,在run中判断它. 使用interrupt()方法中断线程 使用stop方法暴力终止(已经弃用) 2.使用标志位 class TestThread ex ...
- Fibonacci series(斐波纳契数列)的几种常见实现方式
费波那契数列的定义: 费波那契数列(意大利语:Successione di Fibonacci),又译费波拿契数.斐波那契数列.斐波那契数列.黄金切割数列. 在数学上,费波那契数列是以递归的方法来定义 ...
- java中的线程(2):如何正确停止线程之2种常见停止方式
1.常见停止方式 结束run函数,run中含退出标志位. 使用interrupt()方法中断线程 使用stop方法暴力终止(已经弃用) 2.结束run class TestThread extends ...
- .net core番外第一篇:Autofac的几种常见注入方式、生命周期和AOP
使用Autofac进行服务注册实践: 新建三个项目,分别是webapi项目 Wesky.Core.Autofac以及两个类库项目 Wesky.Core.Interface和Wesky.Core.Ser ...
- java 比较几种常见循环方式的优劣
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt224 我们常用for循环,foeach,while等作为循环list或者数组 ...
- masm下几种常见函数调用方式
masm没有fastcall调用方式,其特点为: 1 第一个参数放入ecx,第二个参数放入edx: 2 如果有剩余参数则从右向左压栈: 3 被调用函数清理栈(平衡栈): 4 若有返回值放入eax: 5 ...
随机推荐
- 五、activiti工作流-学生请假流程
有了上一节的基础,这节主要讲如何创建一个学生请假流程.部署.运行流程实例.查看任务.执行任务.判断流程实例状态.历史任务(实例)查询.历史活动节点查询 记住,一个正在执行的流程,他的流程定义id无论到 ...
- 转转hybrid app web静态资源离线系统实践
一.前言 目前的转转app是一个典型的hybrid app,采用的是业内主流的做法: 客户端内有大量业务页面使用webview内加载h5页面承载. 其优点是显而易见的,即:web页面上线频度满足快速迭 ...
- [Be a Coding Plasterer] Components 1:get Basic Things
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. Written In The Font I a ...
- Chapter 4 Invitations——1
In my dream it was very dark, and what dim light there was seemed to be radiating from Edward's skin ...
- 【EF6学习笔记】(八)更新关联数据
上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: ...
- MongoDB从入门到优化
目录 一.MongoDB 简介 二.MongoDB 的储存引擎 三.mongodb 配置参数 四.MongoDB 单节点搭建 五.MongoDB 连接 六.MongoDB 常用命令 七.MongoDB ...
- 在Mac下连接阿里云服务器
1.登录 ssh root@IP地址 eg:00.00.00.00 2.新建用户 useradd -d /home/用户名 -m 根目录名 (这条命令,就是创建一个新用户,并给该用户在home目录下创 ...
- ES搜索结果调优
访问我的博客 自从使用 ElasticSearch 重构了主站的搜索项目之后,之后又陆续接入了其他两个项目,目前使用 SpringBoot 方式跑了一个伪集群,主站使用的时候,比较稳定,没有人反馈说有 ...
- 详谈js防抖和节流
本文由小芭乐发表 0. 引入 首先举一个例子: 模拟在输入框输入后做ajax查询请求,没有加入防抖和节流的效果,这里附上完整可执行代码: <!DOCTYPE html> <html ...
- Linux常用命令之网络和关机重启命令
目录 1.网络命令 一.给指定用户发送信息:write 二.给所有用户发送广播信息:wall 三.测试网络连通性:ping 四.查看和设置网卡信息:ifconfig 五.查看发送电子邮件:mail 六 ...