5.创建Vue项目
方式一:命令行(不推荐)
方式二:图形化
先找到项目想要创建的位置,去到该目录下,输入cmd回车
输入 vue ui回车
可能会遇到的问题:Failed to get response from /vue-cli-version-marker
解决办法:
找到 .vuerc文件,位置在C:\Users\当前用户.vuerc
将packageManager修改如下:
原因是本地hadoop环境变量回合vue项目有冲突,他们都要用到yarn集群
修改后再重新输入vue ui,没有报错信息且自动打开Vue项目管理器的页面
点击创建-->在此创建新项目
出现这个页面就创建完成
将创建好的vue项目
项目目录结构说明
6.Vue项目的启动
方法一:图形化界面启动
方法二:命令行
方法一:
Vue项目执行流程
在工程化项目中,vue要做的事情就是通过main.js吧App.vue渲染到index.html的指定区域中
09、前端工程化-Vue项目执行和开发流程_哔哩哔哩_bilibili
可能出现的问题:
vscode中vue代码全灰且没有代码提示 - 201812 - 博客园 (cnblogs.com)
7.Element
基于Vue2.0的桌面端组件库
组件:组成网页的部件,入超链接按钮图片表格等。
安装ElementUI组件库,在当前工程的目录下安装ElementUI组件库
指定版本安装:npm install element-ui@2.15.3
在main.js中引入Element UI组件库且使用
import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
7.2使用
可能会出现的问题:版本不匹配的问题:
在src/views里面创建一个ElementView.vue组件
直接在ElementView.vue中编写代码即可
官方文档:https://element.eleme.cn/2.11/#/zh-CN/component/installation
7.3基础组件使用
表单,直接在官网找代码
<template> <div> <p>elementview</p> <!-- 表格Table:官网复制 --> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> </el-table> <!-- 分页 --> <div class="block"> <span class="demonstration">完整功能</span> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="100" layout="total, sizes, prev, pager, next, jumper" :total="400"> </el-pagination> </div> </div> </template> <script> export default{ data() { return { tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }], //分页条模型数据, currentPage当前页面 currentPage: 2 } }, methods: { handleSizeChange(val) { console.log(`每页 ${val} 条`); }, handleCurrentChange(val) { console.log(`当前页: ${val}`); } }, } </script> <style> </style>
7.4案例
页面效果:
<template> <el-container style="height: 500px; border: 1px solid #eee"> <el-aside width="200px" style="background-color: rgb(238, 241, 246)"> <h1>XXXXX管理系统</h1> <el-menu :default-openeds="['1', '3']"> <el-submenu index="1"> <template slot="title" ><i class="el-icon-message"></i>信息管理系统</template > <el-menu-item-group> <!-- <template slot="title">分组一</template> --> <el-menu-item index="1-1">部门管理</el-menu-item> <el-menu-item index="1-2">员工管理</el-menu-item> </el-menu-item-group> </el-submenu> </el-menu> </el-aside> <el-container> <el-header style="text-align: right; font-size: 12px"> <el-dropdown> <i class="el-icon-setting" style="margin-right: 15px"></i> <el-dropdown-menu slot="dropdown"> <el-dropdown-item>查看</el-dropdown-item> <el-dropdown-item>新增</el-dropdown-item> <el-dropdown-item>删除</el-dropdown-item> </el-dropdown-menu> </el-dropdown> <span>王小虎</span> </el-header> <el-main> <el-form :inline="true" :model="formInline" class="demo-form-inline"> <el-form-item label="姓名"> <el-input v-model="formInline.user" placeholder="姓名"></el-input> </el-form-item> <el-form-item label="性别"> <el-select v-model="formInline.region" placeholder="性别"> <el-option label="男" value="1"></el-option> <el-option label="女" value="0"></el-option> </el-select> </el-form-item> <el-form-item label="入职日期"> <el-date-picker v-model="value1" 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" style="width: 100%"> <el-table-column prop="name" label="姓名" > </el-table-column> <el-table-column label="图片"> <!-- 插槽:scope.row表示当前行数据对象,scope是element封装的对象 --> <template slot-scope="scope"> <img :src="scope.row.image" width="80px"> </template> </el-table-column> <el-table-column label="性别" > <template slot-scope="scope"> {{scope.row.gender == 1? "男":"女"}} </template> </el-table-column> <el-table-column prop="job" label="职位" > </el-table-column> <el-table-column prop="entrydate" label="入职日期" > </el-table-column> <el-table-column prop="updatetime" label="修改时间" > </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="primary" size="mini" @click="handleEdit(scope.$index, scope.row)" >编辑</el-button > <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)" >删除</el-button > </template> </el-table-column> </el-table> <!-- 分页条 --> <el-pagination background="prev, pager, next" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="10" layout="total, sizes, prev, pager, next, jumper" :total="100" > </el-pagination> </el-main> </el-container> </el-container> </template> <script> export default { data() { return { formInline: { user: "", region: "" }, currentPage: 1, tableData: [ {id: "1", name: "小明", image: "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg", gender: 1, job: '班主任', entrydate: "2021-09-09", updatetime:"2021-10-09" } ] } }, methods: { onSubmit() { console.log("submit!"); }, handleSizeChange(val) { console.log(`每页 ${val} 条`); }, handleCurrentChange(val) { console.log(`当前页: ${val}`); }, handleEdit(index, row) { console.log(index, row); }, handleDelete(index, row) { console.log(index, row); } }, }; </script> <style> .el-header { background-color: #b3c0d1; color: #333; line-height: 60px; } .el-aside { color: #333; } </style>