vue基础内容

一,基础篇

1,指令篇  v-if , v-show , v-for  ,v-on ,v-once,自定义指令   常问问题

   (1) v-if 和 v-show  

 都能控制元素的显示和隐藏,

 v-show本质就是通过控制css中的display设置为none(切换开销比较小),v-if是动态的向DOM树内添加或者删除DOM元素(切换开销比较大),

     (2) v-if 和 v-for

 v-for 具有比 v-if 更高的优先级,所以不应该一起使用

      (3)v-for和key

key属性可以用来提升v-for渲染的效率!key属性可以避免数据混乱的情况出现(和vue用的的diff算法有关)

      (4)v-on和v-once

v-on事件;v-once: 只绑定一次

     (5)自定义指令 directive

 Vue.directive('focus', {el.focus() }})  全局

directives: {  focus: {  inserted: function(el){el.focus() } }} 局部

自定义组件里面的钩子在vue3 里面跟组件的什么周期相似  

2,生命周期篇 

经典八项生命周期篇 

beforeCreate:创建前

create:创建前完成

beforeMount:挂载前

mounted:挂载完成

beforeUpdate: 更新前

updated:更新完成

beforeDestory:销毁前

destroyed: 销毁完成

后面加入的三项

activated:被 keep-alive 缓存的组件激活时调用

deactivated:被 keep-alive 缓存的组件停用时调用

errorCaptured:当捕获一个来自子孙组件的错误时被调用

3,组件篇

(1),注册引入

通过 import 引入

Vue.component()全局,频繁使用的需要用

components:{} 局部

(2),通讯

 子组件   =》    接收值在props里面定义,向父组件提供方法(自定义方法)$emit, 调用父组件方法或值 this.$parent, 直接调用未定义的属性 $attrs

父组件   =》 传值v-model, 接收方法v-on,直接调用 $refs.name.

(3),插槽

  未命名插槽 <slot />  直接在里面写代码

  具名插槽     

            不传值  <slot name=“name1” />  使用  <template v- slot ="name1" > </template >  

            传值    <slot  left="123" name=“name1” />    使用  <template v- slot :name1="left" > </template >  

(3),动态组件,name是组件名称

< component  v-bind:is="name" />

4,计算属性和侦听器(自行了解)

二,vuex 篇

 原理:建的一个store仓库,与vue组件中data类似,但是是一个全局对象

state: 存储数据

getters: 相当于计算属性,可以把state中的数据派生到getters中处理,定义 name:(state,getters)=>{return  1}

mutation: 同步函数, 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,定义 name(state,n){state.count = n} 使用store.commit('name',10)

Action: 异步函数,一般用于提交mutation中的方法,使其变成异步, 定义 name(上下文对象,products){处理方法,需要提交 commit } ,上下文对象的使用 { commit ,dispatch, getters ,rootGetters, rootState, state},使用 store.dispatch('name',10),

上下文对象包含: commit ,dispatch, getters ,rootGetters, rootState, state

map映射: state及getters在computed里面写, mutation和Action在methods里面写

                 引入: import{mapMutations}from'vuex'

                  两种映射: ...mapMutations(['name'])  和 ...mapMutations({add:'name'})   

Module: 模块化,其实就是在里面分一下小组

三,路由 篇

1, hash 和 history 模式的区别

hash 本质上是改变window.location的href属性,你只能改变#后面的url片段。 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新

history接口是HTML5新增的, history 它有五种模式改变URL而不刷新页面.

2.路由定义

2 路由传参

(1)params   刷新页面参数会丢失

传  <router-like to="user/name" /> 定义{path:user/:name''}       取   this.$route.params.name

传    this.$router.push({ name: 'news', params: { userId: 123 }})       取   this.$route.params.userId

(2)query     刷新页面参数不丢失

传 his.$router.push({ path: '/news', query: { userId: 123 }});       取   this.$route.query.userId

3, 路由守卫(其实就是监听路由状态)

全局守卫: 

跳转前:   router.beforeEach((to,from,next)=>{

to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如 replace: true、name: 'home' 之类的选项以及任何用在 router-link 的 to prop 或 router.push 中的选项。

next(error)导航会被终止且该错误会被传递给 router.onError() 注册过的回调

})

跳转后 : router.afterEach((to,from)=>{// ...})

可以在路由配置里面添加监听,

也可以在组件里面使用,但是名称变了: beforeRouteEnter    beforeRouteUpdate(跳到当前页面)      beforeRouteLeave

4.方法

router.push(url) 导航到新url,向 history栈添加一条新访问记录,等同于window.history.pushState

router.replace(url) 导航到新url,替换 history 栈中当前记录,等同于window.history.replaceState

router.go(n) 在 history 记录中向前或者后退多少步,类似 window.history.go(n)

router.go(1) 在浏览器记录中前进一步,等同于 history.forward()

router.go(-1) 后退一步记录,等同于 history.back()

router.go(0) 刷新当前页面

router.back() 导航回退一步,类似于router.go(-1)

router. forward() 导航前进一步,但是不刷新前进页的表单,类似于router.go(1)

四,存储篇

Cookie,localstorage、sessionstorage,vuex

Cookie: 采用键值对的方式存储( document.cookie =  键= 值; 键= 值),可以定义过期时间(document.cookie ="expires=有效期"),存储大小4k

localstorage: 使用方法进行键值对的方式存储(getItem(键,值)),永久存储,但是可以根据方法清除, 存储大小5m

调用setItem()方法,将对应的名字和值传递出去,可以实现数据存储

调用getItem()方法,将名字传递出去,可以获取对应的值

调用removeItem()方法,名称作为参数,可以删除对应的数据

调用clear()方法,可以删除所有存储的数据

sessionstorage:跟 localstorage 方法一样,但是是单页面回话存储,跳转页面被清除,

vuex:相当于全局变量,刷新页面清除,想长久保持数据存在,只能使用Cookie和localstorage存储,然后再赋值回去

五,前端优化篇

1.图片处理

      尽量使用字体图标和SVG图标,来代替传统的PNG等格式的图片,图片压缩,图片懒加载,图片寄放其他服务器,零碎图片集成采用精灵图

2.DOM的操作

减少DOM的频繁操作,主要是减少DOM的重绘和回流

3.js及css

js及css进行代码的合并和压缩,css处理动画的性能优于js,加载顺序:将css放在body上,将js放在body下

js避免“嵌套循环”和“死循环”,减少递归,进行js封装,减少冗余代码,

4请求

代码进行合并和压缩和采用精灵图来减少请求次数,接口合并较少接口调用次数

六,前端安全篇

1,创建一个唯一的令牌(token),对任何请求, 都检查二者是否一致,时常用于用户是否登录

2、对于任何重要的请求都需要重新验证用户的身份;

3.加密传输,采用特定的加密方式,进行加密解密传输

4.检查报头中的referer参数确保请求发自正确的网站

5,输入数据时进行数据验证,防止sql注入

6,保存的数据尽量使用post传输,因为post传输的数据不会被保存

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容