Vue 的完整学习(Updateing)

v-html  : 

1.v-bind用来绑定数据和属性以及表达式,缩写为':'

2.v-model

使用在表单中,实现双向数据绑定的,在表单元素外使用不起作用

// 计算属性 因为是内部get方法所以调用时不用加小括号

//

计算属性比方法好 因为不管做多少次 内部只调用一次做缓存

 

@是v-on的缩写 监听dom事件 比如 @input监听输入事件

@click 监听点击事件

 

Webpack配置注意

 

Path 引用node里的包

Path调用resolve函数可以动态获取绝对路径

 

在package.json中的scripts中 引用变量名

然后 用npm run 变量名 去运行 build:”wenpack”

Npm run

bulid 运行时 优先去找本地的

npm init 初始化webpack

 

一般全局webpack在开发中不用

本地webpack根据项目需求的版本去安装对应的版本  

Npm install

webpack@对应版本--save-dev    3.6.0

 

DevDependencies开发时依赖

 

 

打包css时 直接在入口require 然后安装对应的依赖在webpack配置

 

对于打包不同的文件 有不同的规则需要

 

打包图片时因为找不到路径 需要在webpack中配置

publicPath:'dist/'

对图片的格式进行hash处理 防止冲突 在图片配置中设置

img/[name].[hash:8].[ext]'

 

 

网页兼容性

Es6转换es5

npm install--save-dev babel-loader@7 babel-core babel-preset-es2015

 

修改presets: ['es2015']

 

 

 

安装vue后要去webpack中配置vue 因为vue默认是用runtime vue.js

要编译 网页显示 需要用esm.js

 

 

开发vue文件 需要install vue-loader vue-template-complier

然后配置webpack  才可以识别 vue的版本改为13.0.0 合适的版本 看需要

 

在webpack配置文件中的resolve中 配置extendions [‘.js’] 文件可以实现不加后缀名引入

 

 

plugins

:插件 用来扩展webpack的功能

 

 

打包html的plugins

Npm install html-webpack-plugin–save-dev

 

需要在webpack配置文件中引入html-webpack-plugin

然后进行模板配置

 

 

Js压缩所需要的plugin 丑化是要发布的时候才用开发阶段不推荐

Npm install uglifyjs-webpack-plugin@1.1.1–save-dev

 

若安装不了 则npm i -D uglifyjs-webpack-plugin

然后再package.json改版本号为1.1.1 然后npminstall

 

 

Cli2脚手架中使用对应的 webpack版本是3.6.0  dev-sever对应版本是2.9.3

Vue init

webpack 项目名称

 

搭建本地服务器

Npm install webpack-dev-server@2.9.3–save-dev

contentBase 决定为哪个文件夹服务 默认是根文件夹

port 端口号

inline页面实时刷新

historyApiFallback:在Spa页面 依赖html的history模式

 

在webapck配置文件的script配置命令"dev": "webpack-dev-server--open",

--open自动打开

 

 

Webpack配置之配置分离

开发时的依赖dev

生产时依赖prod

公共依赖base

 

npm install

webpack-merge --save-dev 安装工具进行合并依赖

 

在devconfig.js中配置 拉取对应

const WebpackMerge= require('webpack-merge');

const baseConfig = require('./base.config.js')

module.exports = WebpackMerge(baseConfig,{

  devServer:{

    contentBase:'./dist',

    inline:true,

  }

})

 

然后再package.json中配置

"dev":"webpack-dev-server --open --config ./build/dev.config.js"

              打包指定的上一层目录下../     

path :path.resolve(__dirname,'../dist'),

 

 

vuecli 脚手架安装

npm install-g @vue/cli

 

拉取旧版本

Npm install-g @vue/cli-init

 

初始化

Vue init

webpack 项目名称

 

初始化 ES-lint是只编程规范限制 关掉限制的话 到index.js改为false

 unit单元测试 一般不用

Js以前在浏览器才能跑起来 现在直接用node加js名称 跑

 

Babelrc 是对浏览器兼容的一些配置

 

两种模式

Runtime-coplier之后的开发如果还想用到template 就使用它

Runtime-only:之后的开发使用的是.vue文件开发 就使用它

[if !supportLists]1.     [endif]性能更高2. 代码量更少

 

 

Vci3的创建 vue  create项目名称    

Vue ui 实现用户界面管理项目

 

若想在js文件实现配置 则需要新建一个vue.config.js  在里面进行配置 导出modules.export

 

 

 

 

箭头函数中的this是如何查找

向外层作用域中 一层层的查找this  知道this有定义

 

 

Vuerouter学习

 

首先 必须要安装对应的vuerouter 插件 然后 引入 安装

//配置路由信息

import Vue from 'vue'

import Router from 'vue-router'

// 1.

通过vue.use安装插件 导入vue

Vue.use(Router);

//2.

创建vuerouter对象

const routes = [];

constrouter = new VueRouter({

  routes

})

// 3.

将router对象传入到vue实例中

export default  router

 

最后在main.js中使用配置router  配置映射关系 一个映射就是一个对象

 

使用vuerouter的步骤是1.创建路由的组件2.配置路由的映射3.使用router-view和router-link

 

Router-link渲染为一个a标签

Tag=button 是渲染成一个按钮 就不是默认渲染成a标签了replace不可返回按钮

active-class="active" 意思是把默认的激活类名改为active或者在配置文件改

 

 >首页

关于

 

Redirect属性:默认跳转的网页

在newrouter里 mode:history 可以去掉网页url上的#

 

Vuerouter在全局加了一个$router属性用来跳转url this.$router.push

 

 

动态路由学习p

path: '/user/:userId',

component: User,

 

User组件中

// route当前哪个活跃

return this.$route.      .userId;

 

动态绑定

 

懒加载 用的时再加载 加快速度

const Home = () =>  import('../components/Home')

const About = () => import('../components/About')

const User = () => import('../components/User')

 

 

query查询 ?

<router-link :to="{path:'/profile',query:{name:'linhuan',id:'001'}}">档案</router-link>或者通过button事件

再通过

{{$route.query.id}}

 

 

Router全局守卫

router.beforeEach((to,from,next)=>{

  document.title =to.matched[0].meta.title;

  next(); //next必须有

})

 

meta为每个组件的属性

aftereach 后置钩子

 

 

beforeRouterleave  记录离开之前 当前组件的状态 下次回来时回到这个时刻

有next一般都要用next  要在homevue中路径加入activated() {

  console.log('activated');

  this.$router.push(this.path)

},

 

beforeRouteLeave (to, from, next) {

  //导航离开该组件的对应路由时调用

  //

可以访问组件实例`this`

}

actived和disactived 只有在组件保持了keep-alive时才有效 keepalive保持只创建一次

 

keep-alive的两个属性

include 包含的才不会重复渲染 exclude 排除组件

 

tagbar项目

[if !supportLists]1.     [endif]在style 标签中引入css @import指令

 

Css样式

Flex 水平 分布

vertical-align: middle; //设置图片与文字直接无缝隙

 

components里面放公共的组件

独立的组件放在view里面

 

 

indexOF  注释:indexOf() 方法对大小写敏感!用来判断path是否为当前活跃route

注释:如果要检索的字符串值没有出现,则该方法返回 -1

 

v-bind : 如果过于复杂 可以放在一个methods或者计算属性中

ActiveStyle是一个计算属性 动态绑定 然而v-model是和表单有关的动态绑定

 

 

路径取别名 在webpack公共配置里 respsolve 配置 用的时候加~

 

 

Promise学习

[if !supportLists]1.     [endif]// promise本身是一个函数 两个参数也是函数 resolve里面参数data 代码放在then里面进行处理 箭头函数只有一个参数时可以省略括号

[if !supportLists]2.     [endif]Reject处理请求失败 失败后用catch捕获接收

 

All方法传入的是一个数组 []可以放入多个请求 当多个请求都完成时才执行then

 

Vuex

[if !supportLists]1.     [endif]安装2.使用3.挂载在main.js

 

[if !supportLists]2.     [endif]直接通过mutation来修改公共属性 详情见代码 两种提交风格

 

State  公共属性

mutations 一些处理方法

getters 类似于计算属性 处理好的值放在里面 再由$store调用

getters里面的属性要传参数 必须返回一个函数 该函数的参数就是动态填入的值

       fifter过滤函数 过滤一些不满足条件的 find找到条件符合的函数

[if !supportLists]3.     [endif]修改store里的state 都是通过action 添加到state里

Mutation里的函数的第二个参数 是一个值 而getters中的第二个参数是getters本身

incrementCount(state,count){

  state.counter +=count;

}

4.Vuex的响应式系统中  新添加的属性不会响应虽然可以添加到数组中 若想要响应直接用 vue的set方法 删除则用Vue的 delete方法

// 官方推荐写法

this.$store.commit(INCREMENT) 

在另外一个js文件定义好并导出

 

[if !supportLists]4.     [endif]action 类似于mutation 就是帮mutation 处理异步操作的

看图线上的方法 action通过dispatch

Action里面的参数是$store

 

[if !supportLists]5.     [endif]modules可以模块化 每个模块对应state mutation acition

module里的东西 自动添加到整个的state

关于 每个module里的getters 第三个参数是根state

fullName3(state,getters,rootState){

  return getters.fullName2 +rootState.counter

}

[if !supportLists]6.     [endif]对项目结构进行分解

Axios学习 通过npm安装npm install axios –save 运行时用到 所以加save

 

[if !supportLists]1.          [endif]Promse方式相关

[if !supportLists]2.          [endif]抽取axios相关共同配置 若不想用公共配置 可以用axios的create方法进行配置 具体看文档   

[if !supportLists]3.          [endif]当请求方式为post 时 查询对象要放在请求体里

 

购物商城开发

[if !supportLists]1.     [endif]一般css会有normalize这个css  在github引入 还有base.css

[if !supportLists]2.     [endif]取别名 html引用要加~ 创建一个vue.config.js 进行配置  然后从vuecli2中复制editorconfig 统一编程风格

[if !supportLists]3.     [endif]Home.vue 面向home.js请求开发

[if !supportLists]4.     [endif]在vue中请求来的数据 保存在当前组件的data中 方便使用 通过浏览器插件vuedevtool进行查看

[if !supportLists]5.     [endif]Iview ui组件

[if !supportLists]6. [endif].tab-control{


position: sticky;


top: 44px;

}

这个sticky属性

[if !supportLists]7.     [endif]将一个数组与另外一个数组连接

const nums1=[1,2,3,4]

const nums2 = [5,6,7]

nums2.push(...nums1);

8. display: flex;

/*布局包裹*/

flex-wrap: wrap;

justify-content: space-around; 均等分padding: 2px;

商品样式进行展示包裹样式

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • Vue知识点的总结 Vue中的指令及其基本语法: 第一步:从官网上下载vue开发版本的js文件 引入js文件 ...
    往前走莫回头_2cd6阅读 1,457评论 0 1
  • 个人基于对 Vuejs 的学习制作了一个 Todo 单页应用 Lightodo,功能包括:添加待办事项卡片,对卡片...
    AlessiaLi阅读 21,544评论 16 308
  • MVVM Vue的指令 基本概念: Vue中指令都是以v-xx开头,指令的作用,最终都是拿着数据,渲染我们指令标签...
    getElementsByMK阅读 1,844评论 0 2
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,071评论 0 2
  • vue框架的搭建流程: 具体如下: 1. vue2.js核心 2. VueRouter实现路由组织工具。 3. v...
    泡泡糖_966c阅读 457评论 0 0