歌谣--前端学习--vue2电商管理系统
Vue2实现电商管理总结
本文章为vue2+element总结
普通网友
这个作者很懒,什么都没留下…
展开
-
前端学习(2745):重读vue电商网站55之使用 pm2 管理应用
① 在服务器中安装pm2:npm i pm2 -g② 启动项目:pm2 start脚本--name自定义名称③ 查看运行项目:pm2 ls④ 重启项目:pm2 restart自定义名称⑤ 停止项目:pm2 stop自定义名称⑥ 删除项目:pm2 delete自定义名称...原创 2020-12-16 17:34:04 · 162 阅读 · 0 评论 -
前端学习(2744):重读vue电商网站54之配置 HTTPS 服务
为什么要启用 HTTPS 服务?传统的HTTP协议传输的数据都是明文,不安全 采用HTTPS协议对传输的数据进行了加密处理,可以防止数据被中间人窃取,使用更安全申请 SSL 证书(https://freessl.org)进入https://freessl.cn/官网,输入要申请的域名并选择品牌。 输入自己的邮箱并选择相关选项。 验证 DNS(在域名管理后台添加 TXT 记录)。 验证通过之后,下载 SSL 证书(full_chain.pem公钥;private.key...原创 2020-12-16 17:33:49 · 2395 阅读 · 4 评论 -
前端学习(2743):重读vue电商网站53之项目上线
通过 node 创建 web 服务器。 开启 gzip 配置。 配置 https 服务。 使用 pm2 管理应用。通过 node 创建 web 服务器创建node项目,并安装express,通过express快速创建web服务器,将vue打包生成的dist文件夹,托管为静态资源即可,关键代码如下:Javascript const express = require('express')// 创建 web 服务器const app = express...原创 2020-12-16 17:33:34 · 197 阅读 · 0 评论 -
前端学习(2742):重读vue电商网站52之路由懒加载
当打包构建项目时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。具体需要 3 步:安装@babel/plugin-syntax-dynamic-import包。 在babel.config.js配置文件中声明该插件。 将路由改为按需加载的形式,示例代码如下:Javascript // /* webpackChunkName: "group-foo" */表示路...原创 2020-12-15 12:26:50 · 297 阅读 · 0 评论 -
前端学习(2741):重读vue电商网站51之首页内容定制
不同的打包环境下,首页内容可能会有所不同。我们可以通过插件的方式进行定制,插件配置如下:Javascript chainWebpack: config => { config.when(process.env.NODE_ENV === 'production', config => { config.plugin('html').tap(args => { args[0].isProd = true return args }) }) confi...原创 2020-12-15 12:26:26 · 434 阅读 · 0 评论 -
前端学习(2740):重读vue电商网站50之Element-UI 组件按需加载
通过 CDN 优化 ElementUI 的打包虽然在开发阶段,我们启用了 element-ui 组件的按需加载,尽可能的减少了打包的体积,但是那些被按需加载的组件,还是占用了较大的文件体积。此时,我们可以将element-ui中的组件,也通过CDN的形式来加载,这样能够进一步减小打包后的文件体积。具体操作流程如下:① 在main-prod.js中,注释掉element-ui按需加载的代码② 在public/index.html的头部区域中,通过CDN加载elem...原创 2020-12-15 12:26:12 · 2479 阅读 · 9 评论 -
前端学习(2739):重读vue电商网站49之第三方库使用CDN
通过 externals 加载外部 CDN 资源默认情况下,通过import语法导入的第三方依赖包,最终会被打包合并到同一个文件中,从而导致打包成功后,单文件体积过大的问题。例如上述chunk-vendors.js体积很大,原因是全部import所依赖的包进行了合并给它。为了解决上述问题,可以通过webpack的externals节点,来配置并加载外部的CDN资源。凡是声明在externals中的第三方依赖包,都不会被打包。具体配置代码如下:Javascri...原创 2020-12-15 12:25:58 · 1409 阅读 · 3 评论 -
前端学习(2738):重读vue电商网站48之通过 chainWebpack 自定义打包入口
示例代码如下:Javascript module.exports = { chainWebpack: config => { config.when(process.env.NODE_ENV === 'production', config => { config.entry('app').clear().add('./src/main-prod.js') }) config.when(process.env.NODE_ENV === 'development...原创 2020-12-15 12:25:43 · 237 阅读 · 0 评论 -
前端学习(2737):重读vue电商网站47之生成打包报告
打包时,为了直观地发现项目中存在的问题,可以在打包时生成报告。生成报告的方式有两种:① 通过命令行参数的形式生成报告Javascript // 通过 vue-cli 的命令选项可以生成打包报告// --report 选项可以生成 report.html 以帮助分析包内容vue-cli-service build --report ② 通过可视化的UI面板直接查看报告(推荐)在可视化的UI面板中,通过控制台和分析面板,可以方便地看到项目中所存在的问题。通...原创 2020-12-15 12:25:29 · 4752 阅读 · 27 评论 -
前端学习(2736):重读vue电商网站46之执行build 时报错
Error: No module factory available for dependency type: CssDependency解决办法:参考:解决webpack打包报错 No module factory available for dependency type: CssDependency在执行build命令期间移除所有的consolebabel-plugin-transform-remove-console 官方文档传送门可以通过vue-ui面板,选择开...原创 2020-12-15 12:25:17 · 1512 阅读 · 3 评论 -
前端学习(2735):重读vue电商网站45之项目优化上线
优化Vue项目,部署Vue项目项目优化添加进度条nprogress 进度条官方文档传送门打开vue-ui面板,选择依赖,输入nprogress进行安装相关依赖。npmJavascript npm install --save nprogress 在main.js入口文件中,进行相关配置。首先先导入包对应的js和css:Javascript // 导入NProgress包对应的js和cssimport NPro...原创 2020-12-15 12:25:05 · 1396 阅读 · 3 评论 -
前端学习(2734):重读vue电商网站44之使用 echarts
echarts 官方文档传送门根据官方文档示例,我们先展示测试数据。Javascript <template> <div> <!-- 面包屑导航区域 --> <el-breadcrumb separator="/"> <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item> <el-br...原创 2020-12-15 12:24:52 · 1318 阅读 · 2 评论 -
前端学习(2733):重读vue电商网站43之使用 lodash 中 cloneDeep(obj) 来实现深拷贝
lodash 官方文档传送门Using npmJs $ npm i -g npm$ npm i --save lodash _.cloneDeep(value) 使用项目中使用cloneDeep需求:由于addForm中商品所属的分类数组goods_cat在商品分类模块需要使用v-model进行双向绑定数组形式,而我们调用添加商品api时,需要字符串形式的,这就产生了冲突,于是我们可以通过深拷贝操作来达到我们的需要。首先,导入lod...原创 2020-12-15 12:24:40 · 1902 阅读 · 3 评论 -
前端学习(2710):重读vue电商网站30之左侧菜单栏图标设计
我们想要的效果如下:如何设计?首先,我们可以在data中定义一个对象,对应于每一个菜单选项的id然后通过for循环遍历每一个菜单选项的id即可。原创 2020-12-13 17:38:13 · 218 阅读 · 0 评论 -
前端学习(2732):重读vue电商网站42之添加富文本编辑器
vue-quill-editor 官方文档传送门通过vue-ui界面,可以安装我们所需要的依赖,或者使用下文npm或yarn安装。NPMJs npm install vue-quill-editor --save# oryarn add vue-quill-editor Mount with globalJs import Vue from 'vue'import VueQuillEditor from 'vue-quill-...原创 2020-12-12 19:57:17 · 175 阅读 · 0 评论 -
前端学习(2731):重读vue电商网站41之自定义格式化时间的全局过滤器
在main.js入口文件全局注册格式化时间的过滤器,代码如下所示:Javascript // 自定义格式化时间的全局过滤器Vue.filter('dataFormat', function(originVal) { const dt = new Date(originVal) const year = dt.getFullYear() const mon = (dt.getMonth() + 1 + '').padStart(2, '0') const day =...原创 2020-12-11 17:46:34 · 156 阅读 · 0 评论 -
前端学习(2730):重读vue电商网站40之使用vue-table-with-tree-grid
安装新的依赖vue-tabel-with-tree-gridvue-tabel-with-tree-grid 官方文档安装完成后,在main.js入口文件内先导入tree-tabel然后全局注册组件tree-tabel页面中,我们使用了如下属性:data确定我们的数据源,columns定义我们的指定列,selection-type设置是否打开多选框,expand-type设置是否展示展开栏,show-index添加索引列,border给表格添加边框。使用模板列:...原创 2020-12-11 17:46:21 · 1812 阅读 · 2 评论 -
前端学习(2719):重读vue电商网站39之正则表达式验证邮箱和手机号码
Javascript // 验证邮箱的规则 var checkEmail = (rule, value, cb) => { const regEmail = /^([a-zA-Z]|[0-9])(\w|-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/ if (regEmail.test(value)) { // 合法的邮箱 return cb() } cb(new Error('请输入合法的邮箱原创 2020-12-11 17:46:07 · 364 阅读 · 0 评论 -
前端学习(2718):重读vue电商网站38之通过input输入框优化
通过增加clearable属性,我们的输入框就可以多一个x,然后通过绑定clear事件,当我们进行清除 (即点击由clearable属性生成的清空按钮时触发)时,就会重新获取我们的用户列表,不再需要用户再次点击搜索按钮去获取了。...原创 2020-12-11 17:45:55 · 265 阅读 · 0 评论 -
前端学习(2717):重读vue电商网站37之通过switch开关更改用户状态
首先,在switch开关添加一个change事件,并且通过作用域插槽的形式,将该行数据作为参数传入,目的是为了后续的修改。在函数内我们将传递过来的参数作为我们请求的参数,通过put方式修改我们的后台数据。...原创 2020-12-11 17:45:42 · 335 阅读 · 11 评论 -
前端学习(2716):重读vue电商网站36之slot插槽使用
项目需求:由于用户列表状态后台返回的是 true/false,无法进行渲染,而我们需要的是有一个Switch开关来控制我们的状态。添加一个template模板后,此时就可以用slot-scope作用域插槽来获取我们数据列表中的每一行数据,具体如下:最后,我们就可以得到如下效果图了:...原创 2020-12-11 17:45:31 · 285 阅读 · 0 评论 -
前端学习(2715):重读vue电商网站35之在sessionStorage保存左侧菜单栏的激活状态
为了让我们点击二级菜单时,会有一个激活效果,而且是保持状态,我们需要将利用 element-ui 菜单栏相关default-active属性,来让菜单保持激活。由于每个二级菜单都有一个路由链接,不妨将路由路径path存储在sessionStorage中,具体做法就是给二级菜单绑定一个事件:每次触发点击事件,我们需要更新当前路由路径,才能让点击的那个按钮高亮。然后在我们创建这个组件时,就获取当前的激活状态的路径即可。查看sessionStorage,可以看到我们存储...原创 2020-12-11 17:45:19 · 300 阅读 · 0 评论 -
前端学习(2714):重读vue电商网站34之侧边栏路由改造
通过给侧边栏设置router属性为true,我们就能开启vue-router路由模式,然后将我们二级菜单的index属性绑定我们的数据path即可。原创 2020-12-11 17:45:04 · 294 阅读 · 0 评论 -
前端学习(2713):重读vue电商网站33之实现首页路由重定向
我们想要在登录之后重定向到/welcome路径,于是需要添加子路由children属性,然后设置redirect重定向到我们的子路由。然后在我们组件Home.vue的右侧主体区域,放置一个路由占位符router-view即可。...原创 2020-12-11 17:44:52 · 288 阅读 · 0 评论 -
前端学习(2712):重读vue电商网站32之让菜单栏展开与折叠
通过点击一个按钮,让侧边栏进行展开与折叠。通过 isCollapse 的值来动态变化侧边栏的宽度。其中 cursor: pointer 设置是为了让鼠标放在折叠与展开处会有一个手指指向。letter-spacing: 0.2em 是为了让 ||| 有一定间隔...原创 2020-12-11 17:44:40 · 270 阅读 · 0 评论 -
前端学习(2711):重读vue电商网站31之左侧菜单栏图标设计
保持一个子菜单的展开直接在侧边栏区域添加上述属性即可原创 2020-12-09 12:43:01 · 215 阅读 · 0 评论 -
前端学习(2709):重读vue电商网站29之左侧菜单栏
关于这一块的话,由于后台数据已经写好,我们只需要通过双层for循环即可渲染我们的菜单栏,注意点::index只能绑定字符串,因此将后台请求过来的id值与空字符串进行拼接达到此效果,解决了点击某个菜单栏导致其它菜单栏同时打开的问题。最终实现效果如下:...原创 2020-12-09 11:26:23 · 243 阅读 · 0 评论 -
前端学习(2708):重读vue电商网站28之通过axios请求拦截器添加 token
通过axios请求拦截器添加 token,保证拥有获取数据的权限。原因是,后台那边除开登录的api,其它都需要进行授权。因此,我们可以利用axios中interceptors属性,其中有一个成员request,此时我们可以通过use函数为请求拦截器挂载一个回调函数,只要向服务器端发送了一个axios请求,会优先调用use函数。首先,在main.js添加如下代码:此时,打印config,查看结果如下,发现我们headers字段并没有一些授权字段。此时,我...原创 2020-12-09 11:25:43 · 1336 阅读 · 5 评论 -
前端学习(2707):重读vue电商网站27之通过axios请求拦截器添加 token
通过axios请求拦截器添加 token,保证拥有获取数据的权限。原因是,后台那边除开登录的api,其它都需要进行授权。因此,我们可以利用axios中interceptors属性,其中有一个成员request,此时我们可以通过use函数为请求拦截器挂载一个回调函数,只要向服务器端发送了一个axios请求,会优先调用use函数。首先,在main.js添加如下代码:此时,打印config,查看结果如下,发现我们headers字段并没有一些授权字段。此时,我...原创 2020-12-09 11:25:21 · 243 阅读 · 0 评论 -
前端学习(2706):重读vue电商网站26之JSON格式的配置文件
在项目根目录创建名为.prettierrc的文件,增加如下代码:Css { "semi": false, "singleQuote": true} semi设置false去掉分号,singleQuote设置true使用单引号。此外,还可以禁用function处空格报错,增加如下代码:Code 'space-before-function-paren': 0 ...原创 2020-12-09 11:24:54 · 300 阅读 · 0 评论 -
前端学习(2705):重读vue电商网站26之路由导航守卫控制访问权限
如果用户没有登录,但是直接通过URL访问特定页面,需要重新导航到登录页面。在之前的操作中,我们登录之后会种植一个token值,表示我们登录成功了,那么此时我们将token值去掉呢?直接点击上述clear all按钮去掉之后,我们依旧是可以访问/home的路由,没有登录也能访问我们的后台主页,这肯定不是我们想要的结果。在router/index.js中进行相关配置,具体如下,调用路由实例router的beforeEach方法,即可挂载我们的路由导航守卫。这里...原创 2020-12-09 11:24:35 · 2191 阅读 · 5 评论 -
前端学习(2704):重读vue电商网站25之保存token
将登录成功之后的token,保存到客户端的sessionStorage中项目中除了登录之外的其它api接口,必须在登录之后才能访问 token只应在当前网站打开期间生效,所以将token保存在sessionStorage中通过编程式导航跳转到后台主页,路由地址是/home在我们进行登录请求时,我们不妨打印一下,请求过来的数据,如下,服务端那边会传过来一个token值。下一步,我们在登录成功后,将服务端返回过来的token值直接种植到sessionStorage中...原创 2020-12-09 11:24:03 · 265 阅读 · 0 评论 -
前端学习(2703):重读vue电商网站24之配置axios
在main.js文件内进行配置那么,此时我们就可以通过this访问登录组件原型上$http方法,来发起对后端的请求了。原创 2020-12-09 11:23:35 · 161 阅读 · 0 评论 -
前端学习(2702):重读vue电商网站23之element-ui 如何按需导入
在element.js文件中,按照如下方式,进行按需导入即可。然后通过Vue.use()方法进行引用。(优化点:也就是将组建导入都放在一起,如果组件过多的话,支持换行)原创 2020-12-09 11:23:07 · 181 阅读 · 0 评论 -
前端学习(2701):重读vue电商网站22之如何重定向路由
在router配置页中使用redirect属性原创 2020-12-09 11:22:38 · 180 阅读 · 0 评论 -
前端学习(2700):重读vue电商网站21之如何导入全局样式表
直接在main.js将相关样式导入即可Code // 导入全局样式表import './assets/css/global.css'原创 2020-12-08 17:05:34 · 128 阅读 · 0 评论 -
前端学习(2699):重读vue电商网站20之使用Timeline 时间线
可视化地呈现时间流信息。由于vue-cli-plugin-element最后更新时间是2019年1月,而element-ui中Timeline 时间线更新是在3月份,因此我们没有办法直接进行引用。因此,我们直接通过手动导入的方式。然后,我们打开element.js,进行导入Js import Timeline from './timeline/index'import TimelineItem from './timeline-item/index'...原创 2020-12-08 17:05:21 · 763 阅读 · 1 评论 -
前端学习(2698):重读vue电商网站19之处理图片预览操作
图片预览窗可以用el-dialog组件来做,然后通过on-preview函数来处理图片预览的操作。Js <!-- 图片预览 --><el-dialog title="图片预览" :visible.sync="previewVisable" width="50%"> <img :src="previewPath" class="previewImg"></el-dialog> 通过函数来获取上传图片的真实u...原创 2020-12-08 17:05:09 · 202 阅读 · 0 评论 -
前端学习(2697):重读vue电商网站18之监听图片删除事件
Js // 处理图片移除的操作handleRemove(file) { // 1.获取将要删除的图片的临时路径 const filePath = file.response.data.tmp_path // 2.从pics数组中,找到这个图片对应的索引值 const idx = this.addForm.pics.findIndex(x => x.pic === filePath) // 3.调用数组的 splice 方法,把图片信息对象,从pics数组中移...原创 2020-12-08 17:04:56 · 198 阅读 · 0 评论 -
前端学习(2696):重读vue电商网站17之监听图片上传成功事件
原创 2020-12-08 17:04:43 · 294 阅读 · 0 评论