vue

Vue实战之【企业开发常见问题】

…衆ロ難τιáo~ 提交于 2020-02-21 17:11:10
1.vue框架使用注意事项和经验 1.1 解决Vue动态路由参数变化,页面数据不更新 问题描述: 遇到动态路由如:/page/:id 从/page/1 切换到 /page/2 发现页面组件没有更新 解决方式1: 给<router-view :key="key">增加一个不同:key值,这样vue就会识别这是不同的了。 <router-view :key="key"></router-view> ... computed:{ key(){ return this.$route.path + Math.random(); } } 解决方案2: 在组件内使用v2.2新增的beforeRouteUpdate beforeRouteUpdate (to, from, next) { // 在当前路由改变,但是该组件被复用时调用 // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候, // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。 // 可以访问组件实例 `this` }, 1.2 vue组件里定时器销毁问题** 问题描述: 在a页面写一个定时器,每秒钟打印一次,然后跳转到b页面,此时可以看到,定时器依然在执行。 推荐的解决方式: 通过

Docker 部署 vue 项目

青春壹個敷衍的年華 提交于 2020-02-21 11:35:11
Docker 部署 vue 项目 Docker 作为轻量级虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优势。本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思路和具体步骤,以方便有类似需要的同学参考。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,该容器包含了应用程序的代码、运行环境、依赖库、配置文件等必需的资源,通过容器就可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在同一种环境下。 1 .具体实现: 用 vue cli 创建一个vue项目,修改一下创建出来的项目,在页面上写一个前端接口请求,构建一版线上资源 ,基于nginx docker镜像构建成一个前端工程镜像,然后基于这个前端工程镜像,启动一个容器 vuenginxcontainer。 启动一个基于 node 镜像的容器 nodewebserver,提供后端接口。 修改 vuenginxcontainer 的 nginx 配置,使前端页面的接口请求转发到 nodewebserver 上。 稍作优化和改进。 2 创建 vue 应用 3.1 vue cli 创建一个vue项目 3.2 构建vue项目 运行命令 yarn build / npm run build

Vue中Class与Style绑定

我们两清 提交于 2020-02-21 11:29:12
操作元素的class列表和内联样式是数据绑定的一个常见需求。因为它们都是属性,所以我们可以使用 v-bind 处理它们: 只需要通过表达式计算出字符串结果即可。 不过拼接字符串比较麻烦,因此在 v-bind 用于class和style时,vue做了专门的增强, 表达式结果的类型除了字符串之外,还可以是对象和数组。 绑定HTML Class (1) 对象语法 可以给 v-bind:class 一个对象,以动态切换class: <div v-bind:class="{active: isActive}"></div> 如上表示active这个class存在与否将取决于数据属性isActive。 也可以在对象中传入更多属性来动态切换多个class。此外,v-bind指令也可以与普通的class共存: <div class="static" v-bind:class="{active: isActive, text-danger: isDanger}"></div> 绑定的数据对象不必内联定义在模板里面: <div v-bind:class="classObject"></div> data: { classObject: { active: true, 'text-danger': false } } 我们也可以在这里绑定一个返回对象的 计算属性 ,这是一个强大的模式: <div v

vue-cli3查看webpack配置、插件

眉间皱痕 提交于 2020-02-21 05:10:19
方式一 通过 vue inspect 命令。 这个命令会在命令行列出配置,但是由于配置太多的话会显示不全,命令行有字符数限制的。 通过如下命令查看规则配置的列表: vue inspect -- rules 如: 具体配置可以通过如下命令: vue inspect -- rule vue 注意这里是rule。vue是上面列出的规则,vue是vue-loader的规则配置。 如果想看用了哪些插件,可以通过如下的命令: vue inspect -- plugins 如: 查看具体的插件配置: vue inspect -- plugin vue - loader 注意:这里是plugin ,查看的是vue-loader插件的具体配置。 方式二 通过 vue ui 命令打开可视化工具。 来源: CSDN 作者: 柒月梦 链接: https://blog.csdn.net/guo187/article/details/104416313

vue路由-编程式导航

…衆ロ難τιáo~ 提交于 2020-02-21 01:52:47
除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。 router.push(location, onComplete?, onAbort?) 注意:在 Vue 实例内部,你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push 。 想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。 当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 router.push(...) 。 声明式 编程式 <router-link :to="..."> router.push(...) 声明式 编程式 <router-link :to="..."> router.push(...) 该方法的参数可以是一个字符串路径,或者一个描述地址的对象。例如: // 字符串 router.push('home') // 对象 router.push({ path: 'home' }) // 命名的路由 router.push({ name: 'user', params: { userId: 123

Vue内存泄露原因及解决办法

谁都会走 提交于 2020-02-21 01:16:22
Vue-Cli内存泄露部分原因 1、echarts图未彻底删除; 2、setTimeout和setInterval未清除; 3、全局定于变量未清除; 4、侦听器未清除 场景分析 其中全局对象onresize,侦听事件应在组价销毁前清除。 重点:在vue中,echarts绘图是十分消耗资源的,所以在组件销毁前,一定要清除对应的数据。 在data中定义如下: 在销毁组件前,应进行如下操作: 以上几个部分是在项目中遇到过的内存泄露问题,希望对大家有帮助。 来源: CSDN 作者: qq_1075654056 链接: https://blog.csdn.net/qq_33991007/article/details/104417177

Vue指令学习

浪子不回头ぞ 提交于 2020-02-20 23:09:11
# new Vue({ vue所有的数据都是放到data里面的 # data:{ vue对象的数据 # a:1,对象 # b:[] , # } # methods:{vue对象的方法 # dosomthing: function() # { # this.a ++ # console.log(this.a) # } # # } # watch: { vue对象的监听 # 'a': function(val, oldVal) { # console.log(val, oldVal) # # } # } # # }) # 数据渲染 v-text, v-html, {{}} # < p >{{a}}</ p > 双向绑定了a # < p v-text="a"></ p > # < p v-html="a"></ p > html保存了html结构 #这里的a都是对应到了Vue数据源中的a # 控制模块隐藏 v-if,v-show, # < p v-if="isShow"></ p > # < p v-show="isShow"></ p > # new Vue({ # data:{ # isShow:true, # } # }) #区别if 不渲染这个dom元素 show 是通过css的display:none对元素进行隐藏 #渲染循环列表v-for # < ul > # < li v

前端学习——插槽

时光总嘲笑我的痴心妄想 提交于 2020-02-20 18:09:42
文章目录 一 插槽的简单用法 1.1 用处和用法 1.2 编译作用域 1.3 使用默认内容 二 具名插槽 三 作用域插槽 3.1 解构插槽Prop(?) 四 动态插槽名(?) 五 缩写 5.1 具名插槽的缩写 5.2 默认插槽的缩写 六 示例 #疑问 1. 页面渲染的详细、具体过程 一 插槽的简单用法 1.1 用处和用法 当自定义组件没有 slot 元素的时候,则该标签开始至结束之间的全部内容都会被丢弃。 当使用插槽 slot 的时候,插槽内可以包含任意内容,包括 HTML ,如: < div id = " app " > < my_div > input: < input type = " button " value = " 按钮 " > </ my_div > </ div > new Vue ( { el : '#app' , components : { my_div : { template : ` <div> <slot></slot> </div> ` } } } ) 1.2 编译作用域 重要 :VUE的作用域应该好好整理下 插槽不在标签作用域的范围内,比如这里的 {{message}} 就没有用, VUE 会报错 [Vue warn]: Property or method “message” is not defined on the instance but

【Vue常用指令】

天涯浪子 提交于 2020-02-20 12:31:49
目录 v-html v-text v-for v-if v-show v-bind v-on v-model 指令修饰符 计算与侦听属性 自定义属性 获取DOM元素 "@ *** Vue.js官方给自己的定义为==数据模版引擎==,并给出了一套渲染数据的指令。本文将详细介绍Vue.js的常用指令 导入vue.js https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js Vue.js使用了基于HTML的模版语法,使用vue最简单的方式就是渲染数据,渲染数据最常见的形式就是使用"Mustache"语法(双大括号)的文本插值。 ==- - - - - - - - - - - - - - - - - - - - - -== 一个简单的示例: <body> <div id="sign">{{ message }}</div> <script> let sign = new Vue({ el: '#sign', data: { message: 'Hello Vue!', }, }); </script> </body> 首先,创建一个vue实例,并在创建实例的过程中传入一个对象。 · 该对象的第一个属性名为el,它的值是我们需要渲染的目标标签,我们通过属性查找定位这个标签。 · 该对象的第二个属性名为data

Vue API 3 (模板语法 ,指令)

微笑、不失礼 提交于 2020-02-20 11:33:57
条件 v-if    v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。 v-show    v-show 指令也是用于根据条件展示一块内容。 v-show 只是简单地切换元素的 CSS 属性 display 。 v-if 与 v-show    v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。 v-else    v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。 v-else-if    v-else-if 也必须紧跟在带 v-if 或者 v-else-if 的元素之后。 循环 v-for    可以用 v-for 遍历数组中的元素 两个参数:item - 数组元素 , index - 索引 <ul> <li v-for="(item, index) in items"> {{ parentMessage }} - {{ index }} - {{ item.message }} </li> </ul>    遍历对象中的属性 两个参数:value - 值 ,name - 键名 <div v-for="(value, name) in object"