vue初尝试--组件
组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。
组件是vue中比较重要的一个概念,网页结构的构成都要依赖组件,页面的某个组成部分都才可以写成一个组件,然后在其他的页面中调用该组件,组件一般都写在components文件夹中。下面举一些具体的例子进行详细讲述:
1、网页首先进入index.html入口文件,当dom渲染到<div id="app"></div>部分的时候,vue默认机制就跳转到src文件夹中main.js文件,在main.js里面寻找到一个全局组件App.vue,进而跳转到App.vue中进行dom渲染
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
2、组件都写在<template>标签内,当dom渲染到<router-view/>时,就自动跳转到router中的index.js路由文件中,路由文件定义相应的url进入相应的组件,路由的定义分下面4步
router中的index.js文件
import Vue from 'vue'
import Router from 'vue-router'
//1、 定义组件,从其他文件import进来
import layout from '../components/layout'
Vue.use(Router)
//2、定义路由对象,每个路由应该映射一个组件
const routes =[
{
path:'/',
component:layout
}
]
//3、创建 router 实例,然后转 `routes` 配置
const router = new Router({
mode: 'history',
routes
})
//4、创建和挂载路由,从而让整个应用都有路由功能
export default router
PS:第三步中的mode:'history'是为了去除url中的"#"
3、编写layout.vue组件,这里推荐使用一个前端框架,element-Ul是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架
- 安装(推荐使用npm的方式安装,它能更好的和webpack打包工具配合使用)
cnpm install --seve element-ui
加上--save命令,在package.json里就会自动加入,下次拉取项目直接install就可以直接安装


- 引入element-ui(element-ui可以完整引入,也可以按需引入,http://element.eleme.io/#/zh-CN/component/quickstart),为了达到减少项目体积的目的,建议按需引入,比如要用element-ui中的菜单组件,就在main.js文件中:
import {
Menu,
MenuItem,
} from 'element-ui'
Vue.use(Menu)
Vue.use(MenuItem)
- 编写layout文件,顾名思义,layout可以作为一个布局文件,在整个layout里面会有标题、菜单等子组件,为了使结构更加清晰,可以将标题栏、菜单等部分都写成组件的形式,然后在layout中调用
<template>
<div>
<side-bar></side-bar>
</div>
</template>
<script>
import sideBar from "./wigdets/side-bar.vue";
export default {
components: {
sideBar
}
}
</script>
4、编写side-bar.vue组件
- element-ui的组件语法都可以在官网上找到相应的例子,只要按照官网的例子进行编写就可以了
PS:样式文件安装sass语法cnpm install sass-loader node-sass --save-dev安装这两个依赖包之后就可以用sass语法写样式文件,这种语法的好处是可以定义变量,方便在后面的样式定义可以避免编写重复的变量

<template>
<div id="navBar">
<el-menu class="el-menu-vertical-demo" text-color="#fff" unique-opened router>
<el-menu-item index="1-1">
<span slot="title">User</span>
</el-menu-item>
<el-menu-item index="1-2">
<span slot="title">Service</span>
</el-menu-item>
<el-menu-item index="1-3">
<span slot="title">Source</span>
</el-menu-item>
<el-menu-item index="1-4">
<span slot="title">App</span>
</el-menu-item>
<el-menu-item index="1-5">
<span slot="title">Key</span>
</el-menu-item>
</el-menu>
</div>
</template>
<style lang="scss" scoped>
$sideWidth: 260px;
#navBar {
z-index: 2;
width: $sideWidth;
height: 100%;
background: #3E3E3E;
flex-shrink: 0;
color:#B8B8B8;
span{
color:#B8B8B8;
}
i {
font-size: 20px !important;
padding: 0 10px 0 40px;
display: inline-block;
width: 75px;
color:#B8B8B8;
}
}
$menuHeight:70px;
.el-menu{
border-right: 0;
background: #3E3E3E;
}
.el-menu-item{
height: $menuHeight;
line-height: $menuHeight;
font-size: 16px;
border-bottom: 1px solid rgba(107, 108, 109, 0.19);
padding: 0 10px;
}
#navBar .el-menu-item:hover{
background: #575757 !important;
cursor: pointer;
span{
color: #F36A5A;
}
}
#navBar .el-menu-item.is-active{
background: #f5f5f5 !important;
span{
color: #F36A5A;
}
i{
color: #F36A5A;
}
}
</style>

vue初尝试--组件的更多相关文章
- vue初尝试--项目结构
新建一个项目之后,我们来看一下项目的目录结构 几个主要文件的内容 index.html文件(入口文件,系统进入之后先进入index.html) <!DOCTYPE html> <ht ...
- vue初尝试--新建项目
这是一篇技术贴--如何新建一个基于vue的项目 1.下载对应版本的nodejs安装,下载的nodejs都集成了npm,所以nodejs安装完成之后npm也对应安装完成了. 安装完成之后可以在cmd命令 ...
- VScode开发Vue初尝试(一)
由于公司近期有新的H5项目开发,而前端的同事也离职了,所以就临时顶缸,研究学习一下Vue框架开发. 本人也是初学,在学习过程中,把一些学习所得分享出来,可能会有很多问题和疏漏,希望大家能够多多指正,共 ...
- vuejs和webpack项目(VueComponent)初尝试——瀑布流组件
碎碎念: 好久不见,最近自己有些懈怠没更过多少博,主要原因之一是对自己学习方式的一些思考,翻看之前的博客多是记录学习笔记这反映出了自己对于前端还停留在学习-复习知识点的阶段压根没多少实践经验啊 ...
- Vue 给子组件传递参数
Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...
- Vue.js之组件系统
vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. Vue.js组件系统 每一个新技 ...
- vue学习之四组件系统
vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. 一.Vue.js组件系统 每一个 ...
- Vue 入门之组件化开发
Vue 入门之组件化开发 组件其实就是一个拥有样式.动画.js 逻辑.HTML 结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue 的组件和也做的非常 ...
- WijmoJS V2019.0 Update2发布:再度增强 React 和 Vue 框架的组件功能
前端开发工具包 WijmoJS 在2019年的第二个主要版本 V2019.0 Update2 已经发布,本次发布涵盖了React 和 Vue 框架下 WijmoJS 前端组件的功能增强,并加入更为易用 ...
随机推荐
- PKUWC2018游记
PKUWC2018游记 Day -inf 从去年的12月底开始停课,到现在也有整整一个月的时间了. 前两周考的是OI赛制,后来就变成了IOI赛制. 整体上考的很炸,虐场的次数远少于被虐的次数. 关于去 ...
- [HAOI2010]软件安装
简单的tarjan+(本蒟蒻刚刚接触不久)恶心的树形DP 题面 题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为 ...
- (右偏树)Bzoj2333: [SCOI2011]棘手的操作
题面 戳我 Sol 右偏树滑稽+并查集 再在全局开一个可删除的堆(priority_queue) 注意细节 # include <bits/stdc++.h> # define RG re ...
- 【Webpack的使用指南 02】Webpack的常用解决方案
说是解决方案实际上更像是webpack的插件索引. 写这一篇的目的是为了形成一个所以,将来要用时直接来查找即可. 索引目录 1.自动构建HTML,可压缩空格,可给引用的js加版本号或随机数:html- ...
- QT自定义控件插件化简要概述
1.选择 "其他项目"->"Qt4 设计师自定义控件" **最好选中所有的编译器平台,由于目前使用的Qt Creator是MSVC2015 32位,因此要 ...
- WordPress添加显示和隐藏侧边栏按钮开关
在很多的地方都看见过这种效果,就是在文章页面可以切换显示和隐藏侧边栏功能,感觉还是很有用,比如一篇文章的文字内容过多,那么就可以通过隐藏侧边栏来显示更多的文字便于浏览.比如你可以通过点击我文章标题下方 ...
- vue v-for输出表格结构
v-for输出表格结构 数据库结构如下: 原理: 两个数组 a, b, 数组a的值,是数组b的键(索引), 变量拼接(红色区域): <table> <tr> <th v ...
- Java日志框架:slf4j作用及其实现原理
简单回顾门面模式 slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式, 门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用.用一 ...
- ajax利用FormData异步文件提交
通常情况下,我们上传文件都会使用form表单来提交文件.但有时候,我们会有异步提交文件的需求,在这种情况下,我们就需要新建一个Formdata来提交文件,后台如果使用的是PHP的话可以使用$_FILE ...
- vs调试正确显示utf8格式字符串
自从将visual studio从2010升级到2015后,发现调用接口的utf8格式字符串不能正常显示了,常常被莫名其妙截断,查了下,原来可以直接将变量拖到watch窗口中,在变量名后面手动添加,s ...