
vue
前端技术负责人
不忘初心,砥砺前行
展开
-
vue项目国际化i18n插件使用
1.1、i18n的安装//npmnpm i vue-i18n -S1.2、i18n基本使用src/i18n/index.jsimport Vue from 'vue'import VueI18n from 'vue-i18n'Vue.use(VueI18n)// 准备翻译的语言环境信息const messages = { en: { message: { hello: 'hello world' } }, ch: { mess原创 2022-03-19 10:48:01 · 1341 阅读 · 0 评论 -
vue-cli3中使用less变量
1、安装vue-cli插件vue add style-resources-loader执行命令之后,会自动安装 vue-cli-plugin-style-resources-loader,并且在vue.config.js文件中会自动生成代码 pluginOptions: { 'style-resources-loader': { preProcessor: 'less', patterns: [ path.resolve(原创 2022-02-17 11:27:52 · 596 阅读 · 0 评论 -
[vuex] do not mutate vuex store state outside mutation handlers报错处理
修改数组数据的方法// let arrData= state.arr; // 数组深拷贝,VUEX就报错let arrData= state.arr.slice(); //不能直接操作state里面的属性,但是可以创建一个副本修改对象的方法// let objData= state.obj; // 对象深拷贝,VUEX就报错let objData= Object.assign({}, state.objData); //不能直接操作state里面的属性,但是可以创建一个副本...原创 2022-01-10 10:45:09 · 408 阅读 · 0 评论 -
vue3+ts封装一个button组件(多样式动态class优化、加载3秒后可点击)
<template> <button :class="classs" @click="handleClick" > <i v-if="loading" class="z-icon-loading"></i> <i v-if="icon && !loading" :class="icon"></i> <span v-if="$slots.default"><slo.原创 2021-12-17 20:31:35 · 1783 阅读 · 0 评论 -
vue3学习笔记五:v-model使用、异步组件引入的变化
1、VmodelTest.vue<template> <div @click="$emit('update:modelValue',modelValue+1)">counter:{{ modelValue }}</div></template><script>export default { props: { modelValue: { type: Number, default: 1,原创 2021-11-20 18:54:13 · 387 阅读 · 0 评论 -
vue3学习笔记四:全局API改为实例化方法
1.main.jsimport { createApp,h } from "vue";import App from "./App.vue";import "./index.css";createApp(App) .component("comp", { render() { return h('div','I am comp') }, }) .mount("#app");2、use.vue<template> &l原创 2021-11-20 18:23:12 · 327 阅读 · 0 评论 -
vue3学习笔记三:Emits
1、Emits.vue<template> <div @click="$emit('my-click')"> 自定义事件 </div></template><script>export default { // 防止原生事件被触发,子组件的@click尽量不要与父组件取一样的名字,如果一样必须加上emits,防止事件触发两次 emits:['my-click']}</script><原创 2021-11-20 18:11:45 · 838 阅读 · 0 评论 -
vue3学习笔记二:传送门Teleport的使用
1、ModelButton.vue<template> <div> <button @click="modelOpen=true">弹出一个模态窗口</button> </div> <!-- 挂载在body上 --> <teleport to="body"> <div v-if="modelOpen" class="modal">原创 2021-11-20 17:05:00 · 249 阅读 · 0 评论 -
vue3学习笔记一:ref、reactive、toRefs、watch、computed的使用
<template> <h1>{{ msg }}</h1> <button @click="counter++">counter is: {{ counter }}</button> <p> {{ doubleCounter }} </p> <p ref="desc"></p></template><script>import { co.原创 2021-11-20 16:41:01 · 611 阅读 · 0 评论 -
vue的传值props
props:{ recommentInsuranceList:{ type: Array, default:function (){ return []; } } },原创 2021-06-10 14:37:46 · 217 阅读 · 0 评论 -
Current existing ChromeDriver binary is unavailable, proceding with download and extraction
一、从官方网址上http://chromedriver.storage.googleapis.com/index.html?path=2.46/下载,然后解压放在vue所给出提示的目录中。二、npm 配置npm设置:npm config set chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver...原创 2021-05-17 15:09:46 · 328 阅读 · 0 评论 -
webpack中打包配置公共模块、分包处理
//webpack.config.jsoptimization: { minimize: false, concatenateModules: true, splitChunks: { chunks: 'all', // 拆分 minSize: 30,// 提取出的chunk的最小大小 minChunks: 2,// 模块被引用2次以上的才抽离 maxAsy.原创 2021-05-08 14:55:55 · 1181 阅读 · 0 评论 -
vue路由切换动画效果
router.js【路由守卫在元信息上加入时间戳】beforeRouteEnter (to, from, next) { next(vm => { to.meta.time=to.meta.time?to.meta.time.parse(new Date()); }); },app.vue<template> <div> <transi...原创 2021-05-08 09:20:31 · 418 阅读 · 0 评论 -
上线内容灰度发布方法
思路:新版前端版本由后台接口控制用户看到的页面,无需发布即可解决线上问题方法:将接口的返回值存入到vuex,经过computed来加工一下,最终实现控制新、老组件的显示<new v-if="isNew"/><old v-else><script>computed: { //新老组件判断 isNew (){ if(this.$store.state.xxx){ ..原创 2021-05-07 10:30:14 · 528 阅读 · 0 评论 -
常用的vuex方法、属性封装【利用mixins】
1、方法封装import { mapMutations, mapState } from "vuex";let mixins = {data () {return {};},computed: {...mapState("test", {products: state => state.test})},methods: {...m...原创 2021-05-04 16:26:54 · 199 阅读 · 0 评论 -
vue数据持久化存储用户模块的localstorage和清除localStorage【关键点:用户+模块】
1、定义存储方法local.test = function (val) { let key = "test_key" + empCode;//empCode用户工号唯一标识; if (val) { if (val === "remove") { localstore.removeSession(key); return; } loc.原创 2021-05-04 15:59:42 · 772 阅读 · 0 评论 -
vuex分模块后调用方法
新建了个shop的模块state.jsexport default { vshop:'123'}getters.jsexport default { ashop:state=>state.vshop+'哈哈'}actions.jsexport default { shopAction(ctx,item){ ctx.commit('shopMutation',item); }}mutations.jsexport default.原创 2021-05-04 15:54:29 · 1099 阅读 · 0 评论 -
自定义第三方插件引入的名称
1、引入中设置asimport { format as formatDate} from "koi/util/date";2、使用let time = format(getTime)原创 2021-05-04 11:18:15 · 135 阅读 · 0 评论 -
遍历一个数组,发送请求并且把返回请求的数组信息合并到原数组
let seats = result.combinationSeats; // 塞入火车两程信息 let { leftTicketResponse: trainsloc } = result; trainsloc = trainsloc.map((item, index) => { return trainHandle.handle.原创 2021-04-30 18:38:54 · 906 阅读 · 0 评论 -
promise.all应用场景【多种方案请求同时发送】
let seats = [{ totalPrice: this.ticketSelect[0].price *1 + this.ticketSelect[1].price *1, dtotalPrice: this.ticketSelect[0].price *1 + this.ticketSelect[1].price *1, firstSeat: this.ticketSelect[0], .原创 2021-04-29 11:40:20 · 227 阅读 · 0 评论 -
埋点系统的对象参数处理方式【encodeURIComponent、JSON.stringify】
//先转化string,再编码转化let str = encodeURIComponent(JSON.stringify({ transferType: this.transferType, defseats: _defaultSeat.join("&"), defmode: _defaultMode.join("&"), seats: _newSeat.joi.原创 2021-04-28 14:57:39 · 811 阅读 · 0 评论 -
请求的加载的实现逻辑
1、同步思路+aysnc/await请求方法// 查询极速出票 getfastticket (price, firstPrice, secondPrice) { return new Promise((resolve) => { let param = { ticketTotalPrice: price, platId: 501,原创 2021-04-28 14:23:37 · 148 阅读 · 0 评论 -
vue中接口请求规范,二次封装成一个方法,并且使用promise返回
// 查询极速出票 getfastticket (price, firstPrice, secondPrice) { return new Promise((resolve) => { let param = { ticketTotalPrice: price, platId: 501, pageId: 1,..原创 2021-04-28 12:16:59 · 797 阅读 · 0 评论 -
vue中利用koi实现任意时间格式的切换
1 、将YYYYMMDD转化标准时间date = new Date( [ it.fromDate.slice(0, 4), it.fromDate.slice(4, 6), it.fromDate.slice(6, 8) ].join("-") );原创 2021-04-28 11:04:03 · 224 阅读 · 0 评论 -
三元运算符的扩展用法【扩到多元】
let it = type == "F" ? trainobj.flightInfoList[0] : type == "T" ? trainobj.trains[0] : type == "B" ? trainobj.body .原创 2021-04-28 10:49:45 · 299 阅读 · 0 评论 -
利用promise.race来实现请求超时埋点功能
// 余票查询 queryTickets (index) { this.tsRefresh[index] = false; this.$forceUpdate(); let reason, code; //埋点用 Promise.race([new Promise((resolve, reject) => { this.$model.train[this.q.原创 2021-04-28 10:39:35 · 442 阅读 · 0 评论 -
缓存工具方法封装【实现存储sessionstorage、localstorage对象、获取对象格式】
localstore.jslet session = window.sessionStorage;let local = window.localStorage;// 测试本地存储是否可以用let canLS = true;try { local.setItem("ls_can", "1"); if (local.getItem("ls_can") != "1") { canLS = false; }} catch (e) { canLS .原创 2021-04-27 21:19:38 · 235 阅读 · 0 评论 -
vue强制刷新
this.$forceUpdate();原创 2021-04-27 21:18:25 · 314 阅读 · 0 评论 -
解决后台返回数据格式不统一导致报错问题
if(res.result && res.result.result && res.result.result.trains && res.result.result.trains.length > 0)原创 2021-04-27 20:53:11 · 575 阅读 · 0 评论 -
vue插件unicom【 eventBus+mixin的组合】
1、注册接收指令// unicom 是组件内部订阅消息设置的 unicom: { setSelectTicket (sender, seat, index) { this.$nextTick(() => { this.tickets[index].ticketArr.forEach(t => { if(t.cabinInfoKey == seat.CabinInfoKey原创 2021-04-27 20:28:39 · 486 阅读 · 0 评论 -
vue项目依赖下载报错问题处理
方案一:删除node-module,重新下载方案二:比较麻烦但是有效,找到项目中package.json,把项目中的依赖依次下载,例如:npm i axios原创 2021-04-27 10:03:21 · 1080 阅读 · 0 评论 -
vue登录后url参数替换问题处理
getQueryString(url,name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); let r = url.substr(1).match(reg); if (r != null) { return decodeURIComponent(r[2]); }; return null; },go(){t.原创 2021-04-26 21:19:20 · 410 阅读 · 0 评论 -
vue指令实现埋点
1. 自定义指令import Vue from 'vue'// 自定义埋点指令Vue.directive('track', { //钩子函数,只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置 /* * el:指令所绑定的元素,可以用来直接操作 DOM * binding:一个对象,包含以下 property: * name:指令名,不包括 v- 前缀。 * value:指令的绑定值,例如:v-my-directive="1 + 1" ...原创 2021-04-26 16:38:19 · 2457 阅读 · 3 评论 -
vue项目优化之直接在项目中配置cnpm
在package.jsonz中配置"scripts": { "ins": "npm install --registry=http://nexus.17usoft.com/repository/npm-all/ --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver --phantomjs_cdnurl=http://cdn.npm.taobao.org/dist/phantomjs", },方便没有安装cn原创 2021-04-26 16:00:19 · 224 阅读 · 0 评论 -
vue表单项目解决安卓键盘遮挡输入框问题
一、思路设计动态class,当输入框onfocus状态触发事件激活class,并且滚动到页面底部,当输入框onblur状态关闭class<style>.center-box-input-position { margin-top: 0px; }</style><div class="center-box" :class="{'center-box-input-position':customerMessageState}">原创 2021-03-26 14:46:30 · 1856 阅读 · 0 评论 -
vue实现短链接跳转、history模式【只实现短链接生成跳转功能】
1.app.vue<template> <div id="app"></div></template><script>import sourceOS from "./mixins/sourceOS";const ERROR_CODE = "ERRORCODE0000";export default { name: "Home", mixins: [sourceOS], components: {}, props:原创 2021-03-18 21:01:24 · 1348 阅读 · 0 评论 -
vue页面中单独使用vant组件
import { Button, Row, Col } from 'vant'export default{ components: { [Button.name]:Button // 有的组件有专门的引入方式,比如Dialog,可以看看 }}原创 2021-03-16 16:28:16 · 1109 阅读 · 1 评论 -
vue3.0新特性
1, 编译器编译器(Compiler)的优化主要在体现在以下几个方面:使用模块化架构 优化 "Block tree" 更激进的 static tree hoisting 功能 支持 Source map 内置标识符前缀(又名 "stripWith") 内置整齐打印(pretty-printing)功能 移除 source map 和标识符前缀功能后,使用 Brotli 压缩的浏览器版本精简了大约 10KB2,运行时运行时(Runtime)的更新主要体现在以下几个方面:速度显著提升 同原创 2021-03-16 13:41:08 · 220 阅读 · 0 评论 -
vue项目jenkins自动化部署
本篇主要讲解一下如何去配置 jenkins,如何使用 Fabric(python 脚本)去部署项目,怎么设置 gitlab 的钩子,实现我们提交代码及自动打包部署,实现真正的自动化部署。看归看,记得一定要实践一下才知道哪里有坑。如果你在尝试的过程中遇到什么问题,欢迎留言和我一起探讨。准备项目这里就不做过多介绍了,随便一个 vue 或者 react 的项目,或者 node 的项目都可以。前提是一定要上传到 git 上哦,我们后续会使用项目 git 的钩子函数去调用 jenkins 进行自...转载 2021-03-16 13:31:07 · 720 阅读 · 0 评论 -
vue实现角色权限控制
一、前言在广告机项目中,角色的权限管理是卡了挺久的一个难点。首先我们确定的权限控制分为两大部分,其中根据粒的大小分的更细:接口访问的权限控制 页面的权限控制 菜单中的页面是否能被访问 页面中的按钮(增、删、改)的权限控制是否显示下面我们就看一看是如何实现这些个权限控制的。二、接口访问的权限控制接口权限就是对用户的校验。正常来说,在用户登录时服务器需要给前台返回一个Token,然后在以后前台每次调用接口时都需要带上这个Token,然后服务端获取到这个Token后进行比对,如果通过则原创 2021-03-16 11:54:23 · 6339 阅读 · 7 评论