最近,在公司给一些刚刚使用vue进行开发的同学做了一次分享, 其中包括一些vue开发中需要注意的点, 以及一些可能会踩到的坑.具体内容如下:

一.生命钩子使用需要注意的地方

1.beforeCreate
文档描述:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
注意: 在这个钩子上,this变量还不能使用,data里的属性,methods方法里的方法,watcher中的事件都无法获得;
2.created
文档描述:在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
注意: 这个时候可以操作vue实例中的数据和方法, 但是由于还没有挂载, 还不能对dom节点进行操作.
3.mounted
文档描述:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
注意: 挂载完毕,这时dom节点被渲染到文档内,一些需要dom的操作在此时才能正常进行

二.重要选项的使用注意的地方

data
data 用来存放实例的响应式属性
*组件的定义只接受function
*data 应该只能是数据 - 不推荐观察拥有状态行为的对象。
*以 _ 或 $ 开头的属性 不会 被 Vue 实例代理,因为它们可能和 Vue 内置的属性、API 方法冲突。

computed
*依赖的必须是响应式属性变化才会重新计算。

methods,watch
*不应该使用箭头函数来定义 method 函数,理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例

三.组件通信中需要注意

通过 Prop 向子组件传递数据
*props 的大小写,父组件中的template中属性使用kebab-case,在子组件的props接收时使用camelCase.vue会自动转换.(不在template中使用camelCase的原因是因为html对大小写不敏感)
*props 只能实现父到子的单向下行绑定,防止从子组件意外改变父级组件的状态
*不应该在一个子组件内部改变 props

通过事件向父级组件发送消息
*和prop 不同,事件名不存在任何自动化的大小写转换,官方推荐始终使用 kebab-case 的事件名.

四.其他常见的问题

1.无法覆盖ui库样式
vue提供了组件作用域的css, 覆盖ui库的样式, 不能设置scoped属性
<style lang=“less” scoped></style>

2.生产环境代码去除.map文件
map文件用于定位到源码的位置,方便调试,但是文件会比较大,生产环境建议关掉
在文件Config/index.js中,设置productionSourceMap: false

3.是否使用vuex
官方: 由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长。为了解决这个问题,Vue 提供 vuex.

4.组件的划分粒度
根据项目情况, 项目越大越复杂, 粒度越细

5.使用axios请求失败
get请求数据放在 params中, post,put等其他method时,请求数据放在data中, 两者可以一起使用

6.是否使用vuex
官方文档: 由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长。为了解决这个问题,Vue 提供 vuex.
即: 大型项目,状态较复杂时才使用.在小型项目中,不建议使用,因为反倒会增加项目的复杂度.

7.vue-cli默认配置打包后部署至特定路径下静态资源路径错误问题

原因: 由上可以看出是资源打包路径有误,打包后的资源使用了绝对根目录路径,因此将项目部署到特定目录下,其引入的资源路径无法被正确解析。

解决方法:
在打包时需要使用相对路径来处理静态资源
config/index.js, build对象
assetsPublicPath: '/' 改为 assetsPublicPath: './'

8.静态资源打包使用相对路径后css文件引入大图片路径错误问题。
原因: css是写在vue文件中的,css文件首先被less,postcss等处理,处理后会被ExtractTextPlugin处理,ExtractTextPlugin将js中的css全部抽离至app.css文件中,ExtractTextPlugin抽离css文件时没有转换资源引入路径.

解决方案:
1.修改webpack.prod.conf.js webpackConfig的extrat: false(不推荐)
2.build/util.js
设置:
return ExtractTextPlugin.extract({
fallback: 'vue-style-loader',
publicPath:"../../"
})
3.将静态资源放在static目录下(图片名称中无法增加md5字符串,不利于版本控制)

使用vue开发项目需要注意的问题和可能踩到的坑的更多相关文章

  1. vue开发项目详细教程(第一篇 搭建环境篇)

    最近做vue做项目碰到了不少坑,看了三天文档便开始上手做项目了,不是我牛b,是因为项目紧,我没有时间去深入学习,所以只能一边学一边做了. 我要做的项目是一个官方网站(包括管理后台),也因为是我第一次使 ...

  2. 基于VUE开发项目

    前言 最近由于公司需要,需要写一个相对来说比较大型的后台管理系统.为了保证管理系统操作体验较为舒适并且项目后期益于维护,最后决定基于VUE全家桶来开发一个高度组件化的单页SPA应用. 技术选型 vue ...

  3. 前端 go.js 流程图基于vue开发项目案例

    一.流程图效果 最近一段时间在研究go.js,它是一款前端开发画流程图的一个插件,也是一个难点,要说为什么是难点,首先,它是依赖画布canvas知识开发.其次,要依赖于内部API开发需求,开发项目需求 ...

  4. Vue开发项目全流程

    只记录vue项目开发流程,不说明怎样安装node和vue-cli等 确认安装 安装好node之后,可查看是否安装成功,有版本则安装成功.输入node -v 查看vue是否安装成功,有版本则安装成功.输 ...

  5. 项目中遇到的各种bug和踩过的坑

    zepto 赋值时单位转换问题 zepto 的 animate 方法移动某个元素的位置时,例如修改某个绝对定位的元素的 left 值,要与修改前的值单位一致,修改前如果是像素值,修改后也要是像素值,否 ...

  6. 十分钟上手-搭建vue开发环境(新手教程)

    想写一些关于vue的文章已经很久了,因为这个框架已经火了很久,在公司里用的框架都比较老旧,但怎么也得跟上前端发展变化的潮流,这不,开始使用vue开发项目了,一遍开发一边踩坑中,今天要记录的是五分钟搭建 ...

  7. vue开发之图片加载不出来问题解决

    在使用vue开发项目的时候,经常会遇到的一个问题就是:图片加载不出来.下面是我总结的几种图片加载不出来的情况及解决办法. 一.项目打包完成后,打开整体空白 1.路径问题 原因 在vue+webpack ...

  8. vscode下面开发vue.js项目

    vscode下面开发vue.js项目   https://blog.csdn.net/linzhiqiang0316/article/details/79176651 vscode下面开发vue.js ...

  9. vue开发(开发环境+项目搭建)

    Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...

随机推荐

  1. Windows下对拍

    What is 对拍 Tool: 你的程序 可以输出正解的暴力程序 数据生成器 输出对比器 RP 用来干什么? 用来造数据,检验你的程序的正确性,以方便修改和出现未考虑到的情况 如何工作? 数据生成器 ...

  2. java监听器之实现在线人数显示

    在码农的世界里只有bug才能让人成长,The more bugs you encounter, the more efficient you will be! java中的监听器分为三种:Servle ...

  3. php根据地球上任意两点的经纬度计算两点间的距离 原理

    地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米.如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R.如 ...

  4. 遍历php数组的几种方法

    第一.foreach() foreach()是一个用来遍历数组中数据的最简单有效的方法. <?php $urls= array('aaa','bbb','ccc','ddd'); foreach ...

  5. 如何在ES5与ES6环境下处理函数默认参数

    函数默认值是一个很提高鲁棒性的东西(就是让程序更健壮)MDN关于函数默认参数的描述:函数默认参数允许在没有值或undefined被传入时使用默认形参. ES5 使用逻辑或||来实现 众所周知,在ES5 ...

  6. JSP转译成Servlet详细过程【转】

    JSP转译成Servlet详细过程 JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术.Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTM ...

  7. C语言下double转char*或者std::string,可以精确转换不含多余的0

    char* GetDoubleStr(double value) { char buf[32]={0};//长度可以自定义 sprintf(buf,"%.8f",value);// ...

  8. Vlan 原理

    VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN所指的LAN特指使用路由 ...

  9. git的个人配置

    一..gitconfig存储在当前用户所在文件目录下,如图1.1. 图1.1 二.git拉取代码的服务器.用户名.密码,存储的所在位置,如图1.2. 图1.2 三.是否保存密码,由.gitconfig ...

  10. Python 3.6 中文手册——前言

    1. 前言 如果你在电脑上做了很多工作,最终你会发现有一些任务你想要自动化.例如,你可能希望对大量的文本文件执行搜索和替换,或者以复杂的方式重命名并排列一堆照片文件.也许你想写一个小的自定义数据库,或 ...