Vue(入门)
Vue是一个基于MVVM模型的前端js框架。
常用指令
v-bind:为HTML标签绑定属性值,如设置href,css样式等
v-model:在表单元素上创建双向数据绑定
v-on:为HTML标签绑定事件
v-if、v-else-if、v-else:条件性的渲染某元素,判断为true时渲染 v-show:根据条件展示某元素,区别在于切换的是display属性的值
v-for:列表渲染,遍历容器的元素或者对象的属性值
学习测试代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vue_快速入门</title>
<script src="js/vue.js">
</script>
</head>
<body>
<div id="app">
<table border="1" cellspacing="0" width="60%">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>成绩</th>
<th>等级</th>
</tr>
<tr v-for="(user, index) in users">
<th>{{index+1}}</th>
<th>{{user.name}}</th>
<th>{{user.age}}</th>
<th><span v-if="user.gender==0">女</span><span v-else>男</span></th>
<th>{{user.score}}</th>
<th><span v-if="user.score>=85">优秀</span>
<span v-else-if="user.score<85&&user.score>=60">良好</span>
<span style="color: red;" v-else>不及格</span>
</th>
</tr>
</table>
</div>
</body>
<script>
new Vue({
el: "#app",
data: {
message: "hello Vue",
age: 20,
users: [{
name: "xiaoming",
age: 20,
gender: 1,
score: 78
}, {
name: "xiaozhang",
age: 20,
gender: 0,
score: 60
}, {
name: "xiaohong",
age: 10,
gender: 1,
score: 89
}, {
name: "xiaosui",
age: 25,
gender: 0,
score: 49
}
]
},
methods: {
handl: function () {
alert("你点我一下了")
}
},
mounted() {
alert("挂载完成")
}
})
</script>
</html>

生命周期
mounted:挂载完成(其他方法自学),Vue初始化成功,HTML页面渲染成功。(发送请求到服务端,加载数据)
Vue Router
-
Vue Router 是Vue的官方路由
Axios
1.引入Axios的js文件
<script src="js/axios-0.18.0.js"></script>
2.使用Axios发送请求,并获取相应结果
请求方式别名:
-
axios.get(url[,config])
-
axios.delete(url [,config])
-
axios.post(url[,data[,config]])
-
axios.put(url[,data[,cofig ]])
Vue项目中使用Axios:
-
在项目目录中安装axios:npm install axios;
-
需要使用axios,导入axios:import axios from 'axios';
前端开发的工程化
模块化组件化规范化自动化
vue-cil脚手架
YAPI:前后端接口管理平台
Vue
项目创建
-
图形化界面 vue ui(推荐使用)
-
命令行:vue create vue-project01
目录结构
-
node_modules整个项目的依赖包
-
public 存放项目的静态文件
-
src 存放项目的源代码(使用最多)
assets 静态资源
components 可用的组件
router 路由配置
views 视图组件
App.vue入口页面
main.js 入口js文件
-
packagejson 模块基本信息,项目开发所需要模块,版本信息
-
vue.config.js 保存vue配置的文件夹,如代理,端口的配置等
项目启动
-
图形化界面
-
命令行:npm run serve
Vue项目开发流程
-
默认首页 index.html
-
入口文件 main.js
-
Vue 的组件文件以.vue结尾,每个组件由三个部分组成:<template>、<script>、<style>。
Element
-
是饿了么研发的,一套为开发者设计师和产品经理准备的基于Vue2.0的桌面端组件库。(cv程序员)
-
快速入门:安装组件库 npm install element-ui@2.15.3
-
引入组件库 import ElementUI from 'element-ui';
根据页面原型完成员工管理页面开发,并通过Axios完成数据异步加载
-
页面原型

运用Element组件完成页面开发
左侧组件代码:
<el-aside width="230px" style=" border: 1px solid #eee;"> <el-menu :default-openeds="['1', '3']"> <el-submenu index="1"> <template slot="title"><i class="el-icon-message"></i>系统信息管理</template> <el-menu-item index="1-1"> <router-link to="/dept">部门管理</router-link> </el-menu-item> <el-menu-item index="1-2"> <router-link to="/emp">员工管理</router-link> </el-menu-item> </el-submenu> </el-menu> </el-aside>
中部表单查询代码:
<el-form :inline="true" :model="serchForm" class="demo-form-inline"> <el-form-item label="姓名"> <el-input v-model="serchForm.name" placeholder="请输入员工姓名"></el-input> </el-form-item> <el-form-item label="性别"> <el-select v-model="serchForm.gender" placeholder="请选择"> <el-option label="男" value="1"></el-option> <el-option label="女" value="2"></el-option> </el-select> </el-form-item> <el-form-item label="入职日期"> <el-date-picker v-model="serchForm.entrydate" type="daterange" range separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit">查询</el-button> </el-form-item> </el-form>
中下部表格传输数据代码:
<el-table :data="tableData" border>
<el-table-column prop="name" label="姓名" width="120">
</el-table-column>
<el-table-column label="图像" width="180">
<template slot-scope="scope">
<img :src="scope.row.image" width="100px" height="70px">
</template>
</el-table-column>
<el-table-column label="性别" width="120">
<template slot-scope="scope">
{{scope.row.gender==1?"男":"女"}}
</template>
</el-table-column>
<el-table-column prop="job" label="职位" width="180">
</el-table-column>
<el-table-column prop="entrydate" label="入职时间" width="180">
</el-table-column>
<el-table-column prop="updatetime" label="最后操作时间" width="120">
</el-table-column>
<el-table-column label="操作">
<el-button type="primary" size="mini">编辑</el-button>
<el-button type="primary" size="mini">删除</el-button>
</el-table-column>
</el-table>
底部分页条代码:
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background layout="sizes,prev, pager, next,jumper" :total="1000"></el-pagination>
script部分代码:
<script>
import axios from 'axios';
export default {
data() {
return {
tableData: [],
serchForm: {
name: "",
gender: "",
entrydate: []
}
}
},
methods: {
onSubmit() {
alert("查询数据")
},
handleSizeChange() {
alert("换页")
},
handleCurrentChange() {
alert("换页")
}
},
mounted() {
//发送异步请求
axios.get("https://mock.apifox.cn/m1/3128855-0-default/emp/list").then((result) => {
this.tableData = result.data.data;
});
}
}
</script>
style部分代码:
<style>
.el-header {
background-color: #B3C0D1;
text-align: center;
line-height: 60px;
}
.el-aside {
text-align: center;
line-height: 200px;
}
</style>
Axios部分代码://异步请求的数据传输给tableData然后赋值显示出来
mounted() {
//发送异步请求
axios.get("https://mock.apifox.cn/m1/3128855-0-default/emp/list").then((result) => {
this.tableData = result.data.data;
});
}
router部分代码://router路由实现页面切换
const routes = [
{
path: '/emp',
name: 'emp',
component: () => import('../views/tlias/EmpView.vue')
},//两页面实现切换
{
path: '/dept',
name: 'dept',
component: () => import('../views/tlias/DeptView.vue')
},
{
path: '/',
redirect: '/emp'//初始化页面路由
}
]
<el-menu-item index="1-1">//页面代码内部实现路由切换 <router-link to="/dept">部门管理</router-link> </el-menu-item> <el-menu-item index="1-2"> <router-link to="/emp">员工管理</router-link> </el-menu-item>
DeptView(部门管理页面)全部代码:
<template>
<div>
<el-container >
<el-header style="font-size:40px; ">tlias 智能学习辅助系统</el-header>
<el-container>
<el-aside width="230px" style="border: 1px solid #eee">
<el-menu :default-openeds="['1', '3']">
<el-submenu index="1">
<template slot="title"><i class="el-icon-message"></i>系统信息管理</template>
<el-menu-item index="1-1">
<router-link to="/dept">部门管理</router-link>
</el-menu-item>
<el-menu-item index="1-2">
<router-link to="/emp">员工管理</router-link>
</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>
<!-- 表格 -->
<el-table :data="tableData" border>
<el-table-column prop="name" label="名称" width="250"></el-table-column>
<el-table-column prop="updatetime" label="最后操作时间" width="250"></el-table-column>
<el-table-column label="操作">
<el-button type="primary" size="mini">编辑</el-button>
<el-button type="danger" size="mini">删除</el-button>
</el-table-column>
</el-table>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [{
id: 1,
name: "学工部",
updatetime: "2010-01-01 12:00:00"
}, {
id: 2,
name: "教研部",
updatetime: "2010-01-01 12:00:00"
}, {
id: 3,
name: "就业部",
updatetime: "2010-01-01 12:00:00"
}, {
id: 4,
name: "人事部",
updatetime: "2010-01-01 12:00:00"
}, {
id: 5,
name: "行政部",
updatetime: "2010-01-01 12:00:00"
}]
}
},
methods: {
}
}
</script>
<style>
.el-header {
background-color: #B3C0D1;
text-align: center;
line-height: 60px;
}
.el-aside {
text-align: center;
line-height: 200px;
}
</style>
EmpView(员工管理页面)全部代码:
<template>
<div>
<el-container>
<el-header style="font-size: 40px;">智能学习辅助系统</el-header>
<el-container>
<el-aside width="230px" style=" border: 1px solid #eee;">
<el-menu :default-openeds="['1', '3']">
<el-submenu index="1">
<template slot="title"><i class="el-icon-message"></i>系统信息管理</template>
<el-menu-item index="1-1">
<router-link to="/dept">部门管理</router-link>
</el-menu-item>
<el-menu-item index="1-2">
<router-link to="/emp">员工管理</router-link>
</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>
<!-- 表单 -->
<el-form :inline="true" :model="serchForm" class="demo-form-inline">
<el-form-item label="姓名">
<el-input v-model="serchForm.name" placeholder="请输入员工姓名"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-select v-model="serchForm.gender" placeholder="请选择">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item
<el-form-item label="入职日期">
<el-date-picker v-model="serchForm.entrydate" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
<!-- 表格 -->
<el-table :data="tableData" border>
<el-table-column prop="name" label="姓名" width="120">
</el-table-column>
<el-table-column label="图像" width="180">
<template slot-scope="scope">
<img :src="scope.row.image" width="100px" height="70px">
</template>
</el-table-column>
<el-table-column label="性别" width="120">
<template slot-scope="scope">
{{scope.row.gender==1?"男":"女"}}
</template>
</el-table-column>
<el-table-column prop="job" label="职位" width="180">
</el-table-column>
<el-table-column prop="entrydate" label="入职时间" width="180">
</el-table-column>
<el-table-column prop="updatetime" label="最后操作时间" width="120">
</el-table-column>
<el-table-column label="操作">
<el-button type="primary" size="mini">编辑</el-button>
<el-button type="primary" size="mini">删除</el-button>
</el-table-column>
</el-table>
<br>
<!-- 分页条 -->
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
layout="sizes,prev, pager, next,jumper" :total="1000"></el-pagination>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
tableData: [],
serchForm: {
name: "",
gender: "",
entrydate: []
}
}
},
methods: {
onSubmit() {
alert("查询数据")
},
handleSizeChange() {
alert("换页")
},
handleCurrentChange() {
alert("换页")
}
},
mounted() {
//发送异步请求
axios.get("https://mock.apifox.cn/m1/3128855-0-default/emp/list").then((result) => {
this.tableData = result.data.data;
});
}
}
</script>
<style>
.el-header {
background-color: #B3C0D1;
text-align: center;
line-height: 60px;
}
.el-aside {
text-align: center;
line-height: 200px;
}
</style>
DeptView部门管理页面:

EmpView员工管理页面:

Axios异步请求数据网址:
https://mock.apifox.cn/m1/3128855-0-default/emp/list
页面:

Vue文件页面:

打包部署
Nginx是一款轻量型的Web服务器,占用少并发能力强
部署:将打包好的dist目录下的文件,复制到nginx安装目录的html目录下。
启动:双击nginx.exe文件即可,Nginx服务器默认占用80端口号。
注意:Nginx默认占用80端口号,如果80端口号被占用,可以在Nginx.conf中修改端口号。(netstat - ano|findStr 80)
学习
B站黑马
4万+

被折叠的 条评论
为什么被折叠?



