完全的组件化开发能力:提升代码 完整的 Vue.js
开发体验html
这句话的意思呢,就是说 mpvue
基本集成了 vue
的核心代码,亦即继承了 vue
的核心功能-组件。组件能够拓展 html
、封装以及复用代码,它阐述一个组件树是由无数的组件去组成的。一般一个应用会以一棵嵌套的组件树的形式来组织:前端
而一个好的组件树具备封装性、复用性、拓展性。vue
组件的封装过程有这几步骤:【建立一个 .vue
文件】-【进行独立的逻辑处理】-【向外暴露必要的属性、方法等】。 举个 demo
:列表卡片。里面的信息包括标题 title
、内容 content
、图片 image
、时间 time
等。这是一个独立的功能项,能够将其封装起来,只暴露一个 Array
的属性变量,很是简洁、独立。 此时,其余开发者能够不用关注列表项的细节,只须要专一于当前模块的逻辑处理。node
组件的复用,换个专业术语即是,组件间通讯。之前面的 demo
列表卡片来说,它只负责里面UI功能的实现,不负责与服务端进行打交道;而它的父组件能经过它暴露的 Array
属性,将须要的数据传进去,达到数据的渲染,这样即可以达到减小耦合的效果,同时若是其余模块须要用到卡片这个组件,好比收藏啊,评论呀等等。所以,能够复用的组件亦即称为通用组件。webpack
谈到拓展性,这个能够说是 vue
的优秀作法了,利用面向对象的思想,达到组件间相互继承的目的。 举个 demo
: Echarts
实现的数据可视化图。经过组件化进行图表的基础配置,在业务实现的过程当中,将extends图表组件进行折线图、柱状图以及力导向图等的切换。 小小聊一下, vue
也有一个钩子叫作 mixins
,这个其实跟 extends
功能很类似,都是起到混合合并的做用,而它们的区别是 extends
的优先级较高,执行的顺序要优先于父组件。git
关于mpvue初始化的项目结构,一块儿来看一张图,展现的是主要的目录结构,github
project └───build //编译打包的node.js脚本和webpack配置文件 └───config //用于开发和生产环境下的不一样配置 └───src //主要进行小程序功能编写的地方 │──components │──pages │──utils │──app.json │──App.vue │──main.js └───static //用于存放各类小程序本地静态资源 └───package.json //项目的主配置文件 └───project.config.json //用于管理微信开发者工具的小程序项目的配置文件
从这张图能够看出各个目录结构的功能以及应用。通常进行业务开发的时候,通常也只须要在src目录下进行开发便可。web
mpvue
( github 地址请参见 )是一个使用 Vue.js开发小程序的前端框架。框架基于 Vue.js
核心, mpvue
修改了 Vue.js
的 runtime和 compiler实现,使其能够运行在小程序环境中,从而为小程序开发引入了整套 Vue.js
开发体验。json
所以,mpvue的生命周期既包括vue的生命周期也包括了小程序的生命周期。 对于小程序的生命周期来说,分为2种状况。 APP对象有 onLaunch
, onShow
以及 onHide
。 Page对象有 onLoad
, onShow
, onReady
, onHide
和 onUnload
。 而对于vue的生命周期来说,主要有8个钩子。 【 beforeCreate
】-【 created
】-【 beforeMount
】-【 mounted
】-【 beforeUpdate
】-【 updated
】-【 beforeDestroy
】-【 destroyed
】。 mpvue
因为关联了小程序与 vue
这两种,所以 mpvue
的生命周期其实是 vue
的实例兼容小程序的生命周期的。一块儿来参照下mpvue的源码【 mpvue
/ mpvue-quickstart
初始化后的项目】-【 node_modules
】-【 mpvue
】-【 LIFECYCLE_HOOKS
数组】。小程序
从这张图片能够看出, mpvue
的生命周期就是按照这个顺序来对应的。
简介:利用 mpvue
初始化的项目,进行实现一个简单的增删改查的列表 demo
,过程分为几个小步骤。
1.建立一个todolist组件 首先,咱们须要在【 src
】-【 components
】建立一个【 todolist.vue
】;接着在 pages
新建一个文件夹【 todolist
】,这是小程序新建一个页面,专门来显示todolist。
project └───build └───config └───src │──components │──todolist.vue //建立一个组件 │──pages │──todolist //建立一个文件夹 │──utils │──app.json │──App.vue │──main.js └───static └───package.json └───project.config.json
2.着手入口文件 在 todolist
的文件夹里,新建一个入口文件 main.js
,这是一个统一的写法,将新建立的组件进行引用以及挂载。
import Vue from 'vue'; import App from './index'; const app = new Vue(App); app.$mount();
3.新建一个入口组件 建立一个 index.vue
的页面,在里面调用 components
下的 todolist.vue
组件
<template> <div> <todo-list></todo-list> </div> </template> <script> import TodoList from '@/components/todolist'; export default{ components: { TodoList }, } </script>
4.实现 todolist
的业务逻辑
<template> <div> <todo-list></todo-list> </div> </template> <script> import TodoList from '@/components/todolist'; export default{ components: { TodoList }, } </script>
5.呈现的效果
ok,基本一个简单的增删改查 demo
已完成,虽然简单,但里面的坑位很多,好比 eslint
规则, wx:for
问题等等,因此有空的老铁能够去 GitHub 那里拿下个人代码对比下,但愿能有个更深的学习。