精华内容
下载资源
问答
  • vue 项目实战

    2018-06-17 18:40:31
    这是一个入门vue实战项目,可以提升自己对vue的掌握。
  • vue项目实战.rar

    2020-02-29 18:36:43
    这是一个关于Vue实战项目,从https://www.bilibili.com/video/av50680998?p=1视频中进行学习的源代码
  • ssm+vue项目实战

    2019-11-21 17:08:58
    vue实战项目,前端框架使用vue+bootstrap,后端框架使用的是spring+springmvc+mybatis,数据库使用mysql,包含全套代码
  • vue实战项目,前端框架使用vue+bootstrap,后端框架使用的是spring+springmvc+mybatis,数据库使用mysql,包含全套代码
  • vue项目实战

    千次阅读 2020-12-10 23:01:39
    vue项目实战 1.3 电商后台管理系统的开发模式(前后端分离) 后端负责写接口,管理数据库 前端负责调接口(基于vue技术栈,ajax) 1.4 电商后台管理系统的技术选型 1.前端项目技术栈 vue vue-router(路由) ...

    vue项目实战(没学完还在更)

    1.3 电商后台管理系统的开发模式(前后端分离)

    后端负责写接口,管理数据库
    前端负责调接口(基于vue技术栈,ajax)

    1.4 电商后台管理系统的技术选型

    1.前端项目技术栈

    • vue
    • vue-router(路由)
    • Element-UI(前端UI组件库)
    • Axios(网络数据请求)
    • Echarts(图形化表)

    2.后端项目技术栈

    • Node.js
    • Express
    • Jwt
    • Mysql
    • Sequelize

    2.项目初始化

    2.1前端项目初始化步骤

    • 安装vue脚手架
      • npm install webpack@3.6.0 -g
      • npm install @vue/cli -g
    • 通过vue脚手架创建项目
      • vue ui通过可视化的形式来创建vue项目【vue ui】
    • 配置vue路由
    • 配置Element-UI组件库
      • 在可视化界面中点击安装插件
    • 配置axios库(支持在开发过程中发起网络数据请求)
      • 在可视化界面中安装依赖
    • 初始化git远程仓库(用git进行源代码的管理)
    • 将本地项目托管到github或码云中
      • 设置公钥
      • 把项目git到码云中
      • 在这里插入图片描述

    2.2后台项目的环境安装配置

    • 安装mysql数据库
    • 安装node.js
    • 配置项目相关信息
    • 启动项目
    • 使用postman测试后台项目接口是否正常
      • postman接口测试工具

    3.登录/退出功能

    3.1登录概述

    • 1.登录业务流程
      • 在登录页面输入用户名和密码
      • 调用后台接口进行验证
      • 通过验证之后,根据后台的响应状态跳转到项目主页
    • 2.登陆业务相关技术点
      • http是无状态的,但登录成功之后需要记录用户的登陆状态
      • 通过cookie在客户端记录状态
      • 通过session在服务器端记录状态
      • 通过token方式维持状态
      • 如果服务器后台接口和前端vue之间不存在跨域问题,那么就用cookie、session来维持登录状态,否则用token

    3.2登录–token原理分析

    在这里插入图片描述

    3.3登录功能实现

    • 1.登录页面的布局
      • 通过Element-UI组件实现布局
        • el-form 表单组件
        • el-form-item 用户名,密码区域,登录,重置区域也是item项
        • el-input 文本输入框
        • el-button 按钮
        • 字体图标 两个小图标
        • 在这里插入图片描述
    • 2.创建登录页面
    • 一般开发一个新功能的时候,都要把他先写在项目的一个新分支下,当这个功能开发完成,再把它合并到主分支下
    • 在这里插入图片描述
      这是项目运行后最开始现实的原始页面,现在我们需要修改源码让它变成上面那张图那样的登录框页面项目原始页面

    1.先在项目的components目录下新建一个login.vue文件(一个单文件组件),分为三个部分:模板template,行为script,样式style

    • 在这里插入图片描述

    2.通过路由的形式把这个login组件渲染到app根组件中

    • 在这里插入图片描述

    3.在app根组件中放一个路由的占位符

    • 在这里插入图片描述

    4.开始写登录页面

    • 改login.vue
      在这里插入图片描述
    • 写一个全局样式在这里插入图片描述
    • 把全局样式文件导入到根目录下
    • 在这里插入图片描述
      • 写登录页面的小盒子
      • 在这里插入图片描述
      • css盒子垂直水平居中给方式1:平移 定位+transform,即先把盒子的左上角平移到页面中心,再用transfor以盒子自身为基准向右向上平移半个长和宽,这样就使盒子的中心在页面中间了在这里插入图片描述

    5.绘制默认头像

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    6.绘制登录表单区域

    要用Element-UI的一些组件:form表单

    • 进入Element-UI的官网直接有源码可以复制在这里插入图片描述
    • 加入element-ui的源码之后会报错,因为还没导入这里面用到的一些组件,所以需要按需导入在这里插入图片描述
    • 下面是这部分的实现代码和效果:在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    7.绘制带icon的input输入框

    Element-UI
    eg.

    <el-input v-model="loginForm.username" prefix-icon="el-icon-user-solid"></el-input>            
    • 1导入Element-UI官方给好的图标
    • 2用v-model绑定输入的用户名数据
    <el-input v-model="loginForm.password" prefix-icon="el-icon-lock" type="password"></el-input>

    在这里插入图片描述

    • type设为password就可以保证输入密码时看到的是*****

    8.实现表单数据验证

    【表单验证】:在防止用户犯错的前提下,尽可能让用户更早地发现并纠正错误。

    • 1.给el-form通过属性绑定rules绑定一个校验规则对象:
    <el-form :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form"> 
    • 2校验规则对象写在script里面的data中,在校验规则对象中定义几个校验规则的属性也可以在element-ui网站里面找这些指令
    • 3在表单item项中通过prop属性绑定不同的校验规则
    <!--用户名区域-->                
    <el-form-item prop="username">                    
    	<el-input v-model="loginForm.username" prefix-icon="el-icon-user-solid"></el-input>                
    </el-form-item>

    9.实现表单的重置功能

    • 1.为表单el-form添加一个ref引用ref=“loginFormRef”,这个引用的值就是这个组件的一个实例对象可以通过ref直接获取对表单的引用
    • 2.然后在methods中通过this访问到this.$refs.loginFormRef.然后调用resetFields()方法实现重置表单

    10.实现登录前表单数据的预验证

    再发起请求前先对表单数据发起一个验证,验证通过再向服务器发起这次网络请求,否则要向用户提示这个数据不合法
    思路:点击登录时,这个对象绑定一个单击事件,通过调用表单的某个函数来验证【@click=“login”】
    在这里插入图片描述
    validate函数接收一个回调函数从而拿到验证的结果valid
    通过valid的布尔值来知道验证通过还是失败了

    11.配置axios发起登陆请求

    • 先在main.js对axios进行全局配置`
    /* 对axios进行全局配置,因为表单验证完要发起网络请求了 */
    import axios from 'axios'
    //配置请求的根路径
    axios.defaults.baseURL='http://127.0.0.1:8888/api/private/v1/'
    /*把axios这个包挂载到vue的原型对象上,这样的话vue的每一个组件都可通过this直接访问到http,从而去发起ajax请求 */
    Vue.prototype.$http = axiosVue.config.productionTip = false
    • 如果valid为true说明预验证通过,那么发起登陆请求,否则直接return不发起登录请求
      在这里插入图片描述
      (从api接口文档中可以知道post需要的两个参数都是啥)
      (要进行网络请求的前提是先把这个服务器跑起来,到这个目录下D:\Vue\vue\shizhan\material\vue_api_server\vue_api_server,在命令行窗口执行命令:
      node app.js)
    • res.meta.status是把服务器返回的promise中包含的状态码揪出来了,就是简化了一下,如果这个状态码是200说明登陆成功

    12.配置Message全局弹框组件

    登录成功或者失败,我们都给用户一个弹窗来提示状态

    • 1.现在plugin/element.js中导入弹框这个组件
      • import { Input,Message,Form,FormItem,Button} from 'element-ui//message导入弹框提示组件
      • Vue.prototype.$message = Message //message需要进行全局挂载,这样每个组件都可以通过this来访问message
    • 2.在login中使用弹框,上图中就用了,效果是这样的
    • 在这里插入图片描述

    13.完善登录成功之后的操作

    • 1.将登录成功之后的token,保存到客户端的sessionStorage中
      • 1.1项目中除了登陆之外的其他API接口,必须在登录之后才能访问,在登陆之后访问其他接口的时候要携带着这个token去访问,
      • 1.2token只应在当前网站打开期间生效,所以将token保存在sessionStorage中,因为sessionStorage是会话期间的存储机制(localstorage是持久化的存储机制)
    • 2 .通过编程式导航跳转到后台主页,路由地址是/home【代码上面的图里面有】
    • 3.在/components文件夹下新建一个Home.vue文件,这就是主页
      • 3.1要在router/index.js中导入Home这个组件并加入一个路由规则
      • 3.2this.$router.push('/home')点击登录就可以跳转到home主页了,下面就可以准备写主页的页面了

    14.路由导航守卫控制页面访问权限

    • 我们要保证必须在有登陆权限toke的情况下才可以访问主页,要是在主页突然失去了token,必须立马跳转到login页面去,这时候就需要路由导航守卫来实现这个功能
    • /router/index.js:
    • 在这里插入图片描述

    15.实现退出功能

    基于token的退出功能很简单,只需要销毁token就好了

    // 清空token            
    window.sessionStorage.clear()            
    // 跳转到登录页            
    this.$router.push('/login')

    16.将本地代码提交到码云中(git指令)

    • 1.在vscode中打开终端,快捷键:ctrl+`(tab上面的那个键)
    • 2.git status查看当前项目中源代码的一些状态【第一部分显示的是修改过的,第二部分显示的是新增的文件】
    • 3.git add . 把所有文件全部添加到暂存区
    • 4.git status这是会发现所有文件名字都变绿色了,说明已经被添加到了暂存区
    • 5.git commit -m "完成了登录功能"把暂存区中的所有代码提交到了本地仓库中,并给了一句修改说明
    • 6.git branch查看当前所处的分支,发现处于login分支,说明刚才进行的一系列操作是在login分支中进行的,接下来我们可以把login分支中的所有代码合并到master主分支中去
    • 7.git checkout master切换到主分支,想要把login合并到master主分支中,首先要先切换到主分支,在从主分支主动合并login
    • 8.git branch检查当前的确已经到了master分支
    • 9.git merge login合并login到master
    • 10.git push把本地master中的所有代码推送到了云端的码云中
    • 11.【把本地的login分支也推送到云端】
    • 12.git checkout login切换到login分支
    • 13.git branch检查一下是不是到了login分支
    • 14.git push -u origin login第一次推送这个分支时需要加上push后面的内容,表示我们要将本地的login子分支推送到云端origin仓储里面,同时在云端叫做login,以后再修改login在要推送的时候只要写git push就可以了

    4.主页布局

    4.1整体布局

    • 整体布局:线上下划分,下面那部分再左右划分
    • Element-UI这里面有各种布局的源代码真的是宝藏网站了,爱了爱了太方便了
    • 记得先在/plugin/element.js里面导入container这个组件,也可以一键全局导入
    /plugin/element.js
    import ElementUI from 'element-ui'
    Vue.use(ElementUI)
    /components/Home.vue
    <el-container>            
    	<!--头部区域-->            
    	<el-header></el-header>            
    	<el-container>                
    		<!--侧边栏区域-->                
    		<el-aside></el-aside>                
    		<!--右侧主体区域-->                
    		<el-main></el-main>            
    	</el-container>        
    </el-container>
    • 可以通过类选择器给每一部分添加样式,可以用类名,也可以直接用el-hearder这种块名

    4.2美化主页header区域

    在这里插入图片描述

    .el-header {        
    	background-color: #373d41;        
    	display: flex; // 页面flex布局        
    	justify-content: space-between;  //让按钮和图片文字盒子分别占左边和右边        padding-left: 0;        
    	align-items: center; // 让按钮垂直方向居中显示,不再上下都贴着边沿        color: #fff;        
    	font-size: 20px;        
    	> div{            
    		display: flex;            
    		align-items: center;            
    		span {                
    			margin-left: 15px; // 文字和左边的图片之间间隔            
    		}            
    		img {                
    			width: 60px;                
    			height: 60px;            
    		}        
    	}    
     }

    4.3左侧菜单布局

    模板在element-ui里面的导航菜单里有
    在这里插入图片描述

    <el-container>            
    	<!--侧边栏区域-->            
    	<el-aside width="200px">                
    		<!--侧边栏菜单区域-->                
    		<el-menu background-color="#333447" text-color="#fff" active-text-color="#ffd04b">                
    			<!--一级菜单-->                
    			<el-submenu index="1">                    
    				<!--一级菜单的模板-->                  
    				<template slot="title">                        
    					<!--图标-->                        
    					<i class="el-icon-location"></i>                        
    					<!--文本-->                        
    					<span>导航一</span>                    
    				</template>                    
    			<!--二级菜单-->                    
    			<el-menu-item index="1-1">                        
    				<!--二级菜单的模板-->                        
    				<template slot="title">                            	
    					<!--图标-->                            
    					<i class="el-icon-location"></i>                            
    					<!--文本-->                            
    					<span>选项1</span>                        
    				</template>                    
    			</el-menu-item>                
    		</el-submenu>                
    	</el-menu>            
    </el-aside>            
    

    4.4通过接口获取菜单数据

    除了登录页面的接口,其他接口都需要token令牌才能访问,这个token令牌就是在登录页面登陆成功的时候服务器给我们返回的东西里面带的
    通过axios请求拦截器添加token,保证拥有获取数据的权限
    在这里插入图片描述
    请求在到达服务器之前会先调用这个use函数,对请求进行预处理,给请求头对象挂载一个Authorization字段,这个字段里面装的就是我们的token,只有请求头里面有这个字段,才能访问那些有权限的页面

    【main.js】
    // 4.4为axios设置一个拦截器
    axios.interceptors.request.use(config => {  
    console.log(config)  // 在最后必须return config  
    // 为请求头对象添加Token验证的Authorization字段
    config.headers.Authorization = window.sessionStorage.getItem('token')  
    return config
    })

    这样就可以保证登录之后在想要访问其他需要权限的页面时,有一个token验证

    4.5获取左侧菜单栏数据

    在这里插入图片描述

    • 如果meta中的status=200说明请求成功
    • data就是服务器返回的菜单列表
    • 有children说明有二级菜单
    • 在整个页面刚一加载的时候就应该立即获取左侧菜单数据,所以应该在Home.js的行为区(script)定义一个生命周期函数created()
    • 对象模型的解构赋值
      解构赋值是对赋值运算符的扩展。
      他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
      在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取
      let { baz : foo } = { baz : 'ddd' };
      // foo = 'ddd'
     【Home.vue】
     created () {        
     	this.getMenuList()        
     	this.activePath = window.sessionStorage.getItem('activePath')    	},    
     methods: {        
     	logout () {            
     		// 清空token            
     		window.sessionStorage.clear()            
     		// 跳转到登录页            
     		this.$router.push('/login')        
     		},        // 获取所有的菜单        
     	async getMenuList () {            
    	 	const { data: res } = await this.$http.get('menus')  
    	 	// asyncawait可以简化get的promise返回值,const{}是在解构data,赋值给res            
    	 	if (res.meta.status !== 200) return this.$message.error(res.meta.msg) // 如果获取数据不成功就啥也不返回            
    	 	this.menulist = res.data  //如果获取数据成功就把数据保存到menulist中          
    	 	console.log(this.menulist)        
     	},

    4.6通过双层v-for循环渲染左侧菜单

    获取到了菜单栏数据我们得把它渲染显示到页面上,让他显示出来一层一层的菜单

    • 【渲染一级菜单】menulist数组中的每一项都是一个一级菜单,每个一级菜单中又通过children属性嵌套着二级菜单—>我们只要通过一个双层for循环来渲染各个左侧菜单就好了
      • 给一级菜单的el-submenu动态绑定一个v-for并为每一个v-for提供一个独一无二的key值(如果有id尽量用id)
      • 给一级菜单的span文本区动态绑定不同的名称item.authName
      • 一级菜单的展开,这时候是同步的,展开一个一级菜单,所有一级菜单就都展开了,这是因为大家的index都是1,只要让他们都不相同就好了:**动态绑定::index=“item.id + ‘’” **因为index只接收字符串不接收数字,所以我们要把item.id变成字符串(数值和字符串拼接的结果是一个字符串)
    • 【渲染二级菜单】
      • 二级菜单都在一级菜单的item的children属性里面,流程同上
    【Home.js】
    
    <!--一级菜单-->                
    <el-submenu :index="item.id + ''" v-for="item in menulist" :key="item.id">                    
    	<!--一级菜单的模板-->                    
    	<template slot="title">                        
    		<!--图标-->                        
    		<i :class="iconsObj[item.id]"></i>                        
    		<!--文本-->                        
    		<span>{{item.authName}}</span>                    
    	</template>                    
    	<!--二级菜单-->                    
    	<el-menu-item :index="'/' + subItem.path " v-for="subItem in item.children" 
    	:key="subItem.id" @click="saveNavState ('/' + subItem.path)">                        
    		<!--二级菜单的模板-->                        
    		<template slot="title">                            
    			<!--图标-->                            
    			<i class="el-icon-menu"></i>                            
    			<!--文本-->                            
    			<span>{{subItem.authName}}</span>                        
    		</template>                    
    	</el-menu-item>                
    </el-submenu>

    效果:
    在这里插入图片描述

    4.7为选中项设置字体颜色并添加分类图标

    1.我们要把当前选中项的文本设置特殊的高亮颜色

    每次只能打开一个菜单项unique-opened
    是否水平折叠收起菜单collapse
    【Home.js】
    
    <!--侧边栏菜单区域-->                
    <el-menu background-color="#333447" text-color="#fff"                
    active-text-color="#409EFF"  <!--设置高亮颜色-->
    unique-opened="true"   <!--每次只能打开一个菜单项-->
    :collapse="isCollapse"                
    :collapse-transition="false"  <!--不开启折叠展开动画【4.9】-->
    router   <!--激活路由模式,激活导航时,会跳转到el-submenu对应的index绑定的路径里去【4.11】>
    :default-active="activePath">                
    	<!--一级菜单-->
    	<el-submenu>...

    2.把所有二级一级菜单的图标都改成独特的

    【一级菜单的】
    <i :class="iconsObj[item.id]"></i>
    【二级菜单的】
    <i :class="el-icon-menu"></i>
    

    一级菜单的图标我们专门给他搞一个数组来存,这些图标都在element-ui网站里面有:

    data () {        
    	return { // 左侧菜单数据            
    	menulist: [],            
    	iconsObj: {                
    		125: 'el-icon-user-solid',                
    		103: 'el-icon-s-claim',                
    		101: 'el-icon-s-goods',                
    		102: 'el-icon-s-order',                
    		145: 'el-icon-s-marketing'            
    	},            
    	// 是否折叠            
    	isCollapse: false,            
    	// 被激活的链接地址            
    	activePath: ''        
    	}   
    },

    3.图标和文本之间的间距

    这个要在类的样式style里面加

    <style>
    	.i {        
    		margin-right: 10px;    
    	}
    </style>

    4.8解决边框对齐问题

    在这里插入图片描述

    .el-aside {        
    	background-color: #333744;        
    	.el-menu {            
    		border-right: none;  //把右边框线取消
    	}    
    }

    4.9实现侧边栏的折叠与展开效果!

    • 1.侧边栏内部,菜单之前加一个盒子按钮条,准备实现当点击这个区域时就折叠,再点又展开
    • 2.给这个按钮条绑定一个单击事件toggleCollapse,这个函数会修改el-menu的isCollapse属性,这个属性就是控制是否水平折叠收起菜单的
    • 3.关闭很丑的折叠展开动画collapse-transition
    • 4.让侧边栏背景也跟着侧边栏一起折叠展开:width = “isCollapse ? ‘64px’ : ‘200px’”
    	<aside :width = "isCollapse ? '64px' : '200px'">
    		<div class="toggle-button" @click="toggleCollapse">|||</div>
    		//给el-menu加动态collapse属性,4.7有
    		<el-menu :collapse="isCollapse" :collapse-transition="false"  <!--不开启折叠展开动画-->>...
    	</aside>
    <script>
    
    export default {
    	data () {        
    		return { 
    			// 是否折叠            
    			isCollapse: false,
    		}
    	methods: {
    		// 点击按钮切换菜单的折叠与否        
    		toggleCollapse () {            
    			this.isCollapse = !this.isCollapse        
    		},       
    	}
    }
    </script>
    	
    <style>
    	.toggle-button {        
    		background-color: #4A5064;        
    		font-size: 10px;  //文本字体大小
    		line-height: 24px;  //行高
    		color: #fff;    //字体颜色
    		text-align: center;    //字体居中
    		letter-spacing: 0.2em;      //竖线之间的间距
    		//em是容器的内距容器边--到--容器内容的距离em是相对长度单位。相对于当前对象内文本的字体尺寸。
    		cursor: pointer;    //鼠标放上去的时候变成一个小手
    	}
    </style>

    在这里插入图片描述

    4.10实现首页路由重定向

    想要实现一到home页面就自动重定向到welcome,在home的主体区域为我们展示welcome这个组件

    • 1.在components文件夹下定义一个welcome.vue组件
    • 2.在home.vue的主体区域放一个路由占位符
    <!--右侧主体区域-->            
    <el-main>                
    	<!--路由占位符-->                
    	<router-view></router-view>            
    </el-main>
    • 3.把welcome路由设置为home路由的子路由
    【router/index.js】
    
    import Welcome from '../components/Welcome.vue
    const router = new VueRouter({  
    	routes: [    
    	{ path: '/', redirect: '/login' }, 
    	// 【路由重定向】如果用户访问‘/’,那么就给他重定向到‘/login’    
    	{ path: '/login', component: login }, 
    	{      
    		path: '/Home',      
    		component: Home,      
    		redirect: '/Welcome',      //路由重定向
    		children: [        
    			{ path: '/Welcome', component: Welcome },        
    			{ path: '/users', component: Users }      
    		]    
    	} 
    ]
    })

    在这里插入图片描述

    4.11实现侧边栏路由链接的改造

    在这里插入图片描述

    • 1.在el-menu里面绑定属性:router=“true”也可以省略后面的只写个router是一个意思,激活导航时,会跳转到el-submenu对应的index绑定的路径里去,所以我们应该给index改成对应的二级菜单的path:
    <el-menu-item :index="'/' + subItem.path " 
    v-for="subItem in item.children"                    
    :key="subItem.id" 
    @click="saveNavState ('/' + subItem.path)">
    • 因为path前面是没有自带/的,所以写的时候要自己给他拼接一个
      要不然实现不了跳转
    • 如果点击“角色列表”浏览器就会自动跳转到localhost:8080/#/roles这个路径,想只改变页面的主体区域的话就像【4.10】一样给他加一个路由重定向就好了

    5.主页-用户列表

    5.21 修改用户状态

    • 报错
    async userStateChanged (userinfo) {
          console.log(userinfo)
          const { data: res } = await this.$http.put(`users/${userinfo.id}/state/:${userinfo.mg_state}`)
          if (res.meta.status !== 200) {
            userinfo.mg_state = !userinfo.mg_state
            return this.$message.error('更新用户状态失败!')
          }
          return this.$message.success('更新用户状态成功!')
        }

    注意这里的:${userinfo.mg_state}前面必须加:,否则会报错Invalid prop: type check failed for prop “enterable”. Expected Boolean, got String with value “false”.是因为布尔值要用“:“动态来表示 否则会将布尔值”false”化为字符串形式。

    5.22 实现搜索功能

    • 1.把搜索框和data中的数据数据做双向绑定
    • 2.点击搜索按钮时调用获取用户列表的函数进行数据的查询

    5.24 渲染添加用户的表单

    【10.sublime一些快捷键】

    1.分屏显示

    • view–layout–column 2可以把页面变成两列显示
    • 在每一个窗口ctrl+p然后输入想打开的文件名即可

    2.文件列表的显示和隐藏

    ctrl+B,ctrl+K
    按住ctrl,然后按b再按k才行

    展开全文
  • 全面讲解了vue在企业中的应用,内含PDF和源码文件可以懂事实际演练。值的推荐
  • Vue项目实战

    千次阅读 2020-12-04 20:56:39
    Vue项目实战开发 1.电商业务概述 客户使用的业务服务:PC端,小程序,移动web,移动app 管理员使用的业务服务:PC后台管理端。 PC后台管理端的功能:管理用户账号(登录,退出,用户管理,权限管理),商品管理...

    Vue项目实战开发

    1.电商业务概述

    客户使用的业务服务:PC端,小程序,移动web,移动app

    管理员使用的业务服务:PC后台管理端。

    PC后台管理端的功能:管理用户账号(登录,退出,用户管理,权限管理),商品管理(商品分类,分类参数,商品信息,订单),数据统计

    电商后台管理系统采用前后端分离的开发模式

    前端项目是基于Vue的SPA(单页应用程序)项目

    前端技术栈:Vue,Vue-Router,Element-UI,Axios,Echarts

    后端技术栈:Node.js,Express,Jwt(模拟session),Mysql,Sequelize(操作数据库的框架)
    2.项目初始化

    A.安装Vue脚手架

    B.通过脚手架创建项目

    C.配置路由

    D.配置Element-UI:在插件中安装,搜索vue-cli-plugin-element

    E.配置Axios:在依赖中安装,搜索axios(运行依赖)

    F.初始化git仓库

    G.将本地项目托管到github或者码云中
    3.码云相关操作

    A.注册登录码云账号

    在这里插入图片描述
    B.安装git

    在Windows上使用Git,可以从Git官网直接下载安装程序进行安装。
    
    测试命令:git --version
    

    C.点击网站右上角“登录”,登录码云,并进行账号设置
    在这里插入图片描述
    D.在本地创建公钥:在终端运行:ssh-keygen -t rsa -C “xxx@xxx.com”
    在这里插入图片描述
    E.找到公钥地址:

    Your identification has been saved in /c/Users/My/.ssh/id_rsa.

    Your public key has been saved in /c/Users/My/.ssh/id_rsa.pub.

    当我们创建公钥完毕之后,请注意打印出来的信息“Your public key has been saved in”

    /c/Users/My/.ssh/id_rsa.pub : c盘下面的Users下面的My下面的.ssh下面的id_rsa.pub就是我们创建好的公钥了

    E.打开id_rsa.pub文件,复制文件中的所有代码,点击码云中的SSH公钥,将生成的公钥复制到公钥中
    在这里插入图片描述
    G.测试公钥:打开终端,输入命令

    ssh -T git@gitee.com
    在这里插入图片描述
    H.将本地代码托管到码云中

    点击码云右上角的+号->新建仓库
    在这里插入图片描述
    I.进行git配置:
    在这里插入图片描述
    4.配置后台项目

    A.安装phpStudy并导入mysql数据库数据
    在这里插入图片描述
    B.安装nodeJS,配置后台项目,从终端打开后台项目vue_api_server

    然后在终端中输入命令安装项目依赖包:npm install

    C.使用postman测试api接口
    在这里插入图片描述
    后续正在开发中

    展开全文
  • VUE项目实战

    2019-04-14 11:01:45
    vue2仿锤子商城实战项目课程2018 课程介绍 这是一个基于vue2.0的商城实战开发类课程,适用于对vue有些许基础的同学。课程会手把手教你如何在项目中使用vue及相关插件实现一个完整的购物流程。从商品的展示到加入...

    VUE 我看了下招聘,公司还是蛮高的 7000 + 所以值得细致研究下!

    商城实战教程,需要可去研究下

    vue2仿锤子商城实战项目课程2018

    课程介绍

    这是一个基于vue2.0的商城实战开发类课程,适用于对vue有些许基础的同学。课程会手把手教你如何在项目中使用vue及相关插件实现一个完整的购物流程。从商品的展示到加入购物车,再到商品的结算、订单等等,一应俱全。知识点:vue基础组件库、vuex、vue-router、vue-cli以及webpack。

     

     

    课程目录

     

    1Vue仿锤子商城实战

    1-项目介绍

    2-环境配置及目录结构

    3-商品列表页的布局

    4-商品列表套数据

    5-商品页组件

    6-商品加入购物车

    7-购物车商品删除

    8-购物车小球效果

    9-商品详情页数据

    10-商品详情页交互

    11-购物清单页

    12-购物清单的增删多选

    13-订单确认页商品数据

    14-收货地址及发票信息

    15-添加收货信息-上

    16-添加收货信息-下

    17-提交订单

    18-订单详情页

    19-我的订单页

    20-课后练习


    好,我们今天来复习下简单的vue-cli 实战,要做好笔记,为啥,因为你不做笔记,就代表你没有真正学会!

    好,我们先看下效果:

    整体是一个app 组件。里面包含两块,一个是addItem组件,一个列表组件, 而列表组件,包含一个个条目

    我们先不着急说项目,我们先看下 vue-cli 目录信息!

     

    以上都是配置信息,所以说vue-cli 做了好多事情

    开启一个简单的服务器


    组件的使用方式,三个步骤, 上面显示的很清楚!

    App.vue

    <template>
      <div id="app">
        <div class="panel panel-default">
          <div class="panel-body text-center">
            Basic panel example
          </div>
        </div>
        <hr>
        <div class="container">
          <div class="row">
              <AddItem :addMessage="addMessage" ></AddItem>
            <div class="col-md-7">
    
                  <p v-show="isShow()">
                     没有任何数据,请在左侧去添加
    
                  </p>
    
              <listItem :datas="datas" :del="del"></listItem>
    
            </div>
          </div>
    
        </div>
      </div>
    
    
    </template>
    <script>
    import AddItem from "@/components/AddItem.vue"
    import listItem from "@/components/listItem"
    export default {
      name: 'App',
      components:{
        HelloWorld,AddItem,listItem
      },
      data(){
        return {
    
          datas:[
            {name2:"action",message:"actions is ok "},
            {name2:"action3",message:"actions is ok3 "},
            {name2:"action2",message:"actions is ok2 "}
    
          ]
        }
      },
      methods:{
        isShow(){
            return this.datas.length==0;
        },
        del(index){
          this.datas.splice(index,1);
        },
        addMessage(item){
          this.datas.unshift(item);
        }
      }
    }
    </script>
    
    <style>
    #app {
    
    }
    </style>
    

    一个基本的vue 组件,基本是三大块

     

    就这三大块, template 写界面, style 写样式, script 主要写VM配置 对象

     

    AddItem.vue

    <template>
      <div class="col-md-5">
        <form>
          <div class="form-group">
            <label for="exampleInputEmail1">name</label>
            <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email" v-model="name2">
          </div>
          <div class="form-group">
            <label for="exampleInputPassword1">message</label>
            <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Password" v-model="message">
          </div>
          <button type="submit" class="btn btn-default" @click="addMessage2">add</button>
        </form>
    
      </div>
    
    </template>
    
    
    <script>
        export default {
            data() {
              return {
                name2: "",
                message: ""
              }
            },
            props:["addMessage"],
              methods:{
                addMessage2(){
                  let {name2,message} = this;
                  var comment = {
                    name2,message
                  }
    //              alert(comment)
                  this.addMessage(comment);
                }
              }
    
            }
    
    
    
    </script>
    
    
    <style>
    
    
    </style>
    

    listItem

    <template>
      <div>
      <div class="panel panel-default" v-for="(item , index) in datas" :key="index">
        <div class="panel-heading">{{item.name2}}</div>
        <div class="panel-body">
          {{item.message}}
          !-- Indicates a dangerous or potentially negative action -->
          <button type="button" class="btn btn-danger"
                  @click ="del2(index)">删除</button>
        </div>
      </div>
      </div>
    </template>
    
    <script>
        export default {
            props:["datas","del"],
            methods:{
              del2(index){
                this.del(index);
              }
            }
    
        }
    </script>
    <style></style>
    

    所有的代码我都标出来了,下面就是细节了!

    组件的引用!

    这个组件的引用,我用到了@ 符号,这个在配置中有配置

    代表src 路径


    属性传递,不光可以传数据,还可以传函数!

    属性的接受!

    其它就没有啥可标记的了!

     

    基本组件套路, 1, 拆组件(拆页面+ 拆css)

    2, 静态初始化

    3, 动态初始化显示

    4, 加事件+ 处理交互!

    ——————————————————————————————————

     

    行,这就是基本vue-cli的使用!

     

     

     

    展开全文
  • 旅行 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
  • 课程融合了实战中使用的多种VUE开发技术,主要以项目全程的开发为主,更适合有一定基础和经验的同学们进行深度研习。完成课程的学习可以极大的提高同学们对VUE开发的认识,提高系统化开发的能力。
  • 本资源下载直接可用 需要安装资源:python 3.6以上版本;django 最新版;node.js最新版;eli-ui最新 内容:前后端分离实战项目
  • SpringBoot+vue项目实战

    千次阅读 2020-07-18 20:51:30
    目录 前言: 技术准备 开发流程 项目展示 ...项目学习地址,点击了解:https://how2j.cn ...天猫整站 Springboot 版本,就是这样一个实践项目。 我会带着大家,从零开始,把整个项目...本项目使用 Springboot 框架进行系统

    目录

    前言:

    技术准备

    开发流程

    项目展示


    前言:

    项目学习地址,点击了解:https://how2j.cn

    天猫整站 Springboot 版本,就是这样一个实践项目。 我会带着大家,从零开始,把整个项目构建出来。

    成熟的项目规划与设计
    本教程作者,也就是我~ 有8年企业开发管理经验,7年教学经验,曾参与管理开发几十个商业项目。将展示如何合理设计与规划这样一个规模的电商项目,既做到功能丰富,又让开发节奏有条不紊。

    基于Springboot 框架技术
    本项目使用 Springboot 框架进行系统设计与开发,同学们可以观察并模仿到 Springboot 是如何成熟,并高效率地实现各种业务场景的。

    由浅入深
    以动手为主,代码驱动,从简单功能开始,逐一展开,配合图文视频讲解,由浅入深,迭代开发,享受一个项目的从无到有的构建过程

    典型场景
    一个完整的JAVA WEB应用包含的各种典型商务应用场景的需求,展示相应的解决思路与办法

    简历中的亮点
    一份能获得面试机会的简历,必须要有项目经验的。 踏踏实实地把这个项目跟完,让简历多一个亮点,多一项谈资,多一层砝码,多一些薪水

     步骤 1 : 

    技术准备

    为了完成这个J2ee项目,需要掌握如下技术,当然也可以以本项目为驱动,哪里不懂,学哪里,其实这也是最好的学习方式(带着目标去学习)
    1. Java
    Java基础 和 Java中级 的大部分内容
    2. 前端
    htmlCSSJavascriptJSONAJAXJQuery ,BootstrapVue.js
    3. 框架部分
    spring springmvc springboot
    4. 中间件
    redisnginxelasticsearchshiro
    5. 数据库:
    MySQL
    6. 开发工具
    Intellij IDEA,Maven

     

    开发流程

    模仿天猫整站是一个比较大的项目,将按照商业项目的开发流程有条不紊的一一展开:
    1. 需求分析
    首先确定要做哪些功能,需求分析包括前台后台
    前台又分为单纯要展示的那些功能-需求分析-展示,以及会提交数据到服务端的哪些功能-需求分析-交互

    2. 表结构设计
    接着是表结构设计,表结构设计是围绕功能需求进行,如果表结构设计有问题,那么将会影响功能的实现。除了表与表关系建表SQL语句之外,为了更好的帮助大家理解表结构以及关系,还特意把表与页面功能一一对应起来

    3. 原型
    接着是界面原型,与客户沟通顺畅的项目设计流程里一定会有原型这个环节。 借助界面原型,可以低成本,高效率的与客户达成需求的一致性。 同样的,原型分为了前台原型后台原型

    4. 后台-分类管理
    接下来开始进行功能开发,按照模块之间的依赖关系,首先进行后台-分类管理功能开发。严格来说,这是开发的第一个功能,所以讲解的十分详细,不仅提供了可运行的项目,还详细解释了其中用到的HTML 包含关系,以及每个具体的功能: 查询分页增加删除编辑修改。 把每个细节都掰的很细,可以更好的理解,消化和吸收。 在把后台-分类管理 吃透之后,后续的其他后台管理功能,做起来就会更加顺畅。

    5. 后台-其他管理
    在把后台-分类管理 消化吸收之后,就可以加速进行 后台其他页面的学习。

    6. 前台-首页
    前台也包括许多功能, 与后台-分类管理类似的,首先把前台-首页这个功能单独拿出来,进行精讲。前台-首页 消化吸收好之后,再进行其他前台功能的开发。

    7. 前台无需登录
    从前台模块之间的依赖性,以及开发顺序的合理性来考虑,把前台功能分为了 无需登录 即可使用的功能,和需要登录 才能访问的功能。 建立在前一步前台-首页的基础之上,开始进行一系列的无需登录功能开发。

    8. 前台需要登录
    最后是需要登录的前台功能。 这部分功能基本上都是和购物相关的。 因此,一开始先把购物流程 单独拿出来捋清楚,其中还特别注明了购物流程环节与表关系,这样能够更好的建立对前端购物功能的理解。随着这部分功能的开发,就会进入订单生成部分,在此之前,先准备了一个 订单状态图,在理解了这个图之后,可以更好的进行订单相关功能的开发。

    9. 总结
    最后总结整个项目的项目结构,都实现了哪些典型场景,运用了哪些设计模式,把学习到的知识都沉淀下来,转换,消化,吸收为自己的技能

     

    项目展示

    首页

    展开全文
  • Vue 项目实战

    千次阅读 多人点赞 2021-03-12 15:25:45
    为了练习Vue,写了一个小项目,主要内容是答题。 项目简介 ElementUI框架 无后端,数据来源为本地JSON文件 也可以改造成有后端的,查找题目种类就在后端完成 比较原生,适合刚刚接触Vue,想做练习的同学 笔者...
  • vue项目实战.zip

    2019-11-24 17:10:33
    vue视频教程,2019vue实战视频-不止三套 2019vue实战视频-不止三套 vue实战视频
  • 这个版本是使用 vue-cli2 创建的,现在已经更新到 vue-cli4 了。 这个版本熟悉之后,有兴趣的可以看一下 ,使用 vue-cli4 + Typescript + TSX ,模块完整并优化了代码结构和逻辑 此次调整 调整接口,解决接口数据...
  • vue项目实战sono

    2019-08-12 02:26:16
    vue是一个构建数据驱动的 web界面的渐进式框架。那这是官方给的解释,我自己的理解的就是一个mvvm框架,一个数据模型和数据双向绑定的前端框架。虽然我是一个前端菜鸟,但是其实对这种mvvm双向绑定的模式接触的比较...
  • 本文档为Vue.js项目实战 :源码,代码为:纪尧姆·周(Guillaume Chau) (作者) 周智勋 , 张伟杰 , 孔亚杰 , 李骏 (译者) 所编写的《Vue.js项目实战 》一书全部代码,代码可以自己学习,也可以跟随书籍学习,相对...
  • vue-cli框架,反向代理解决跨域问题,使用百度地图api显示地图,定位和添加图标,mint-ui美化界面
  • 2年vue项目实战经验汇总

    万次阅读 多人点赞 2020-02-05 08:30:00
    前言vue作为前端主流的3大框架之一,目前在国内有着非常广泛的应用,由于其轻量和自底向上的渐进式设计思想,使其不仅仅被应用于PC系统,对于移动端,桌面软件(electronjs)等也有广...
  • import VueAxios from 'vue-axios' axios.defaults.baseURL = '/api'; axios.defaults.timeout = 8000; //接口错误拦截 axios.interceptors.response.use(function(response) { let res = response
  • vue项目实战总结篇

    2020-11-27 14:17:25
    这篇文章把小编前段时间做的vue项目,做个完整的总结,具体内容请参考本文。 这次算是详细总结,会从项目的搭建,一直到最后的服务器上部署。 废话不多说了。干货直接上。 一、 必须node环境, 这次就不写node环境的...
  • SpringBoot+Vue项目实战开发 作者:令狐荣豪(编程小哥令狐) 一.使用 CLI 搭建 Vue.js 项目 因为需要使用 npm 安装 Vue CLI,而 npm 是集成在 Node.js 中的,所以第一步我们需要安装 Node.js,访问官网 ...
  • vue项目实战】Vue工程化项目--猫眼电影移动端

    万次阅读 多人点赞 2019-04-16 13:42:46
    使用 vue-cli 创建项目。现在先把主框架搭起来,熟悉路由和组件,后面在 项目demo 持续贴出完整项目代码。 vue初始化项目 首先全局安装Vue脚手架——vue-cli npm/cnpm install vue-cli -g 新建一个文件夹vue-demo...
  • vue的一个实战项目

    2018-06-16 10:54:28
    vue的一个实战项目,比较适合初学者对原理的理解 也适合有一定项目经验的写法借鉴
  • Vue项目实战.zip

    2021-09-24 18:38:17
    采用Vue实现前后端分离项目,能够支持简单的增删改查功能
  • 学习springboot+vue项目,网上找了很久,不是收费就是代码不全,直到找到这边教程,讲解很详细,代码下载可用,用到的技术可以根据自己的需要学习 地址 ... ...
  • vue项目实战语法

    2018-04-09 22:46:19
    vue项目实战语法,vue项目实战语法,vue项目实战语法,vue项目实战语法,vue项目实战语法,vue项目实战语法,vue项目实战语法
  • 一、vue-cli4进行前端项目的创建 二、如何使用vuex进行登陆信息的管理与同步 三、如何使用axios进行接口请求的封装与拦截 四、在脚手架里使用Element-UI 五、学习组件化编程的思想 六、如何解决接口前后端分离...
  • 2019最新尚硅谷VUE项目实战完整版

    千次阅读 2019-01-06 18:47:30
    VUE项目实战《硅谷外卖》 1.Vue项目_项目功能演示 2.Vue项目_项目开发准备 3.Vue项目_创建项目并运行 4.Vue项目_资源准备 5.Vue项目_项目源码目录设计 6.Vue项目_stylus使用 7.Vue项目_组件化编码 8.Vue项目_引入vue...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,344
精华内容 10,937
关键字:

vue项目实战

vue 订阅