一个vue项目的简单分享
回首用vue已经2个多月了,今年7月底根据vue社区提供的api写了一个小移动端的小dom
通过这个项目也让我更深入的了解了vue(组件之间的通讯,计算属性,数据绑定、数据驱动....),用数据驱动型的框架做项目好处就是基本上不需要自己操作dom,框架会通过数据改变帮你最优的操作,也让你开发更加迅速
vue数据的更新: 获取数据(转换数据) →绑定事件→渲染dom →监听事件→改变数据(计算)→重新绑定事件→改变dom
首先vue会遍历一遍你定义的 data 然后通过 这个ES5的属性(Object.defineProperty)把你的data全部转为 getter/setter。
每个组件都有一个自己的 观察数据的 实例对象(watcher ) 当你的数据改变是 这个实例对象会得到一个通知,然后重新计算更新
vue还在内部做了很多优化我们看不见,比如异步更新,等等
vuex: vuex是vue的状态管理器 就行 angular的状态机 react 的 redux。
他提供了 一个(或者多个state)
getter: 获取vuex的state。
mutation:设置vuex的state(最好通过这个设置才能让vue观察到vuex数据的绑定,官网介绍只能在这修改vuex数据不然vue会给警告,但发现其实在别的地方,如action也可以修改并且无警告)。
action: 大量或者需要异步提交的 数据可以通过 action (甚至能通过这个去发ajax请求,因为他是异步的)
分割 state: Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割( getter、action可以通过rootState 获取上游的 state但mutation似乎不行)
vuex的使用环境:(跨组件数据通信多,频繁,或者想通过vue更加直观的观察数据,因为数据传递有时候会不好追踪,尤其是双向改变的时候。当数据传递多的时候更是)
如果不用vuex的话:
父组件向子组件:传递用 props传递,然后子组件就可以拿到数据
子组件向父组件:传递通过this.$emit(‘事件名’, data)然后父组件监听事件拿到传过来的数据
非父子组件: 创建一个 空vue实例 new Vue() 然后 用这个实例 派发事件让别的组件去监听(用的少,基本上遇到这个就是vuex)
vue-router:
组件内定义一个<router-view><router-view/>标签 该组件旗下所有的子路由都会进入这个 标签内(可以定义多个,单页面多路由操作)
路由钩子: 可以创建全局钩子,或者单个路由的独享钩子 每个钩子都有三个参数(to, from, next)
to: 即将要进入的目标 路由对象 可以通过这个参数获取 对面路由传的参数和 路径等等
from:没用过
next:想要离开这个路由就要这些这个参数(他是一个方法),可以通过他跳到别的路由或者中断路由
ps: 甚至可以通过 watch 去观察路由 做一些不可描述的事情
编程式的导航: this.push({}) this.go() 指哪打哪
传递路由参数获取参数: 如果是通过 router.push的话 加一个query参数(它是一个对象),进入的如有通过 this.$router.query.***获取
动态路由: 可以设置动态路径参数,达到数据不同但组件同一个的效果
懒加载: vue的异步组件 加 code splitting feature (简单粗暴)
const *** = () => import('@/views/***')
路由动画: 给路由包裹一个 <transition name='***'></transition> 通过给name设置class
***-enterr: 初始状态
***-leave-active:离开变成什么样
***-enter-active: 进来时变化成什么样
可以通过 watch 观察router 然后动态 设置name 设置不一样的动画。官网有例子
还有很多,以后多总结一些经验再写吧
附上github地址: https://github.com/Xudaobin/VueCommunity
项目用到的技术:vue+vuex+vue-route+vue-cli+axios+vue-lazyload+better-scroll
欢迎各路大神 指出问题
一个vue项目的简单分享的更多相关文章
- vue-用Vue-cli从零开始搭建一个Vue项目
Vue是近两年来比较火的一个前端框架(渐进式框架吧). Vue两大核心思想:组件化和数据驱动.组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用:数据驱动是前端的未来发展方向,释放了对 ...
- Vue系列——如何运行一个Vue项目
声明 本文转自:如何运行一个Vue项目 正文 一开始很多刚入手vue.js的人,会扒GitHub上的开源项目,但是发现不知如何运行GitHub上的开源项目,很尴尬.通过查阅网上教程,成功搭建好项目环境 ...
- 利用 vue-cli 构建一个 Vue 项目
一.项目初始构建 现在如果要构建一个 Vue 的项目,最方便的方式,莫过于使用官方的 vue-cli . 首先,咱们先来全局安装 vue-cli ,打开命令行工具,输入以下命令: $ npm inst ...
- 如何搭建一个VUE项目
搭建环境 搭建node环境 下载 1.进入node.js官方网站下载页,点击下图中框出位置,进行下载即可,当前版本为8.9.4,下载网址为:https://nodejs.org/zh-cn/downl ...
- 如何搭建一个vue项目(完整步骤)
参考资料 一.安装node环境 1.下载地址为:https://nodejs.org/en/ 2.检查是否安装成功:如果输出版本号,说明我们安装node环境成功 3.为了提高我们的效率,可以使用淘宝的 ...
- 搭建一个VUE项目
搭建环境 搭建node环境 下载 1.进入node.js官方网站下载页,点击下图中框出位置,进行下载即可,当前版本为8.9.4,下载网址为:https://nodejs.org/zh-cn/downl ...
- 1.如何运行一个Vue项目
如何运行一个Vue项目 需要的环境: node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm npm的淘宝镜像 1. 安装node.js 从node.js官网下载并安装node ...
- 创建一个vue项目的过程
创建一个vue项目: 1.首先从UI手上拿到PSD设计图,然后看设计搞的内容,需要做个大概的页面布局 2.做vue之前不许安装node,因为做vue项目要和node结合使用 3.然后安装vue脚手架: ...
- VUE系列一:VUE入门:搭建脚手架CLI(新建自己的一个VUE项目)
一.VUE脚手架介绍 官方说明:Vue 提供了一个官方的 CLI,为单页面应用快速搭建 (SPA) 繁杂的脚手架.它为现代前端工作流提供了 batteries-included 的构建设置.只需要几分 ...
随机推荐
- 开发wordpress主题
查看我的wordpress站点 第一步:下载wordpress安装包 官网下载==> 第二步:本地安装开发环境 官网给出的环境要求: 可以选择安装wamp/xampp集成PHP开发环境,安装很简 ...
- IntelliJ Idea设置护眼浅绿色背景方法
老版本的设置位置 新版本的设置位置不一样(下图新版本为2017.5.4)的设置位置
- 详解功能版本管理之使用eoLinker
先看一个对话: "这里,你改一下,这里返回一个object." "好...好......" "还有这里,返回个String." ...... ...
- C# 委托与事件详解(三)
今天我接着上面的3篇文章来讲一下,为什么我们在日常的编程活动中遇到这么多sender,EventArgs e 参数:protected void Page_Load(object sender, Ev ...
- iOS动态性:动态添加属性的方法——关联(e.g. 向Category添加属性)
想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative ...
- 框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解)
框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解) 通过昨天的讲解,我们已经理解了运行时类型识别是什么. 比如 CObject * pthis = (Cobject *)Cre ...
- Python学习(五):易忘知识点
1.列表比较函数cmp >>> a = [1,2,3,4] >>> b = [1,2,3,4,5] >>> c = [1,2,3,4] >& ...
- ES6 let和const命令(4)
const声明的常量只在当前代码块有效.如果想设置跨模块的常量,可以采用下面的写法. //constants.js模块 export const A = 1; export const B = 3; ...
- 编译Twitter的Heron时一直报错“heron/bazel_configure.py", line 25, in <module> import semver ImportError: No module named semver”如何处理。
今天编译heron的时候,从官方git到的源码bazel_configure的时候一直报错如下: Traceback (most recent call last): File , in <mo ...
- PHP 购物车 php闭包 array_walk
<?php class Cart { const PRICE_BUTTER = 1.00; const PRICE_MILK = 3.00; const PRICE_EGGS = 6.95; p ...