**才见岭头云似盖,已惊岩下雪如尘。—《南秦雪》**前言这几天好多地方都下雪了,雪花真美呀,特地在网上搜上好看的图片和诗句写上。本文主要从template【模板】讲到一个demo,快速上手vue、react和微信小城序的项目开发。如果你不熟悉这中间的某一个技术栈,可以clone下来跑一跑。 如果全部能上手,中间有些细节耶可以看看。开撸1.template篇1.1 vue-template-pc1.效果图vue-template-pc项目,欢迎star2.技术栈vue+vue-router+vuex+axios+element-UI+iconfont(阿里)3.适配方案左侧固定宽度,右侧自适应左侧导航和右侧导航分别配置滚动条4.技能点分析技能点对应api常用指令@(v-on)绑定事件, v-if/v-show是否创建/和是否显示,v-for循环生命周期8个生命周期beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy和destroy观察计算computed和watchdata属性定义变量,同样变量使用必须先定义组件注册components局部注册,Vue.component()全局注册组件通讯子传父:this.$emit,父传子:props,平级组件:vuex或路由传参插件注册Vue.use()注册插件,如Vue.use(element)是调用element内部的install方法路由注册vue-router:Vue.use(router)也是调用内部的install方法,挂载到vue实例中生成route和router属性路由模式mode属性可以设置history和hash子路由children:[]可以配置子路由路由钩子router.beforeEach(实现导航钩子守卫)和router.afterEachvuex4个属性,state,getters, actions(异步获取数据)和mutations(同步获取数据)vuex4个辅助函数,mapState,mapGetters, mapActions和mapMutations,就是辅助处理commit或distapch方法axios拦截器,interceptors.request请求拦截器,interceptors.response响应拦截器axiosbaseUrl配置公共请求路径,必须符合http标准的链接,否则设置无效axios请求方法,get,post,put,delete等axios跨域,withCredentials: true,需要后端支持csssass,对应嵌套不超过三层,滚动条样式设置,文本两行超出build问题iconfont阿里字体图标,可以自定义icon5.那么问题来了?computed和watch的区别? 解析路由传参的方法? 解析vue.use,vue.install,mixins方法区别? 解析history和hash区别及实现原理? 区别解析原理解析vue-router官网使用history和hash模式部署服务器有什么问题?问题解析vuex的辅助函数和基本属性使用的区别?vuex官网axios原理?axios源码简单实现一个vue+vue-router+vuex的框架?1.2 react-pc-template1.效果图react-pc-template项目, 欢迎star2.技术栈dva+umi+ant-design-prodva:可拔插的react应用框架,基于react和reduxmui:集成react的router和reduxant-design-pro:基于react和ant-pc的中后台解决方案3.适配方案左侧固定宽度,右侧自适应右侧导航分别配置滚动条.控制整个page4.技能点分析技能点对应apiJSXreact是基于jSX语法生命周期实例化(5个):getDefaultProps,getInitialState,componentWillMount,render,componentDidMount生命周期更新:5个生命周期生命周期销毁:componentWillUnmout路由基于umi,里面有push,replace,go等方法状态管理dva里面的redux的封装,属性有state,effects,reducers组件传值父子:props,平级redux或umi的routermodel项目的model和dom是通过@connect()连接并将部分属性添加到props里登陆登陆是通过在入口js里面做路由判断5.那么问题来了?umi的router传参形式? 解析dva封装的redux和原生的redux使用有那些不同? dva使用解析redux使用解析umi里面router实现原理?umi源码对比vue和react在原理和使用上的区别?1.3 vue-mobile-template移动端代码见demo篇1.4 小程序模板由于小程序的IDE里面有生成的模板,mobile也是基于vue,所以只在demo篇展示demo1.5 快应用模板1.template代码实现官方template生成教程2.技能点分析技能点对应api布局基于弹性布局指令for:循环,if、show生命周期页面的生命周期:onInit、onReady、onShow、onHide、onDestroy、onBackPress、onMenuPressapp生命周期onCreate、onDestroy事件$on、$off、$emit、$emitElement路由配置manifest文件的router属性配置路由跳转router.page组件通讯父子组件:$emit,props,兄弟组件:通过 Publish/Subscribe 模型原生组件list,map,tabs和canvas消息机制websocket使用2.demo篇2.1 vue-demo(vue-pc-demo)1.效果图vue-demo项目地址, 欢迎star2.技术栈vue+vue-router+vuex+axios+element-UI+高德map+vue-split-table高德map:高德地图vue-split-table:表格拆分插件,vue-split-table插件3.适配方案同上4.技能点分析比template篇多了map的使用,高德使用手册实现axios的api模块化,并全局挂载api和axios所以由此可以看出只要有了template,后期开发so-easy,只是新加tab页2.2 react-pc-demo参考ant的ant-design-pro项目2.3 vue-mobile-demo1.效果图vue-mobile项目2.技术栈vue+vue-router+vuex+vant+rem+sass+iconfont(阿里)vant:有赞的电商mobile插件3.适配方案rem4.技能点分析iconfont的使用:官网配置icon,导出图标,引入assets目录下vant使用:详见vant官网全局配置rem:在index.html文件配置全局配置sass函数和mixin:在build/utils下面的scss的options属性配置static目录下面的函数和混入5.那么问题来了vue-cli生成的项目src下面的assets和根路径下面的static目录的区别?解析2.4 小程序demo1.效果min-program-demo项目,欢迎star2.技术栈weui+tabbar+分包+iconfont+自定义顶部导航+组件传值+wx.request封装weui:Tencent推出的小程序UI3.适配方案rpx:微信小程序的单位4.技能点分析技能点对应api常用指令bindtap绑定事件, wx:if/wx:show是否创建/和是否显示,wx:for循环生命周期1应用生命周期(app.js里):launch,show,hide生命周期2页面生命周期(page里):load,show,ready,hide,unload生命周期3组件周期(component里):created,attached,moved,detachedwx.requestajax请求背景音乐wx.getBackgroundAudioManager音频wx.createAudioContext图片wx.chooseImage文件wx.getFileInfo路由在app.json里面pages属性定义pages目录下面的文件路由切换wx.navigateTo,wx.navigateBack, wx.redirectTo,wx.switchTab,wx.reLaunch分包在app.json里面subPackages属性定义分包路由weui组件weui官网原生组件微信原生组件业务组件在json文件usingComponents注册组件通讯定义globalData,storage和路由5.那么问题来了小程序的生命周期执行顺序?page和应用生命周期 , component生命周期解释几种路由切换有什么不同?路由介绍小程序怎么实现watch监听数据变化?实现watch6.小程序框架wepy官网基于wepy的商城项目mpVue基于mpVue的项目分析:这两个框架都是通过预编译将对应风格的格式转化成小程序格式2.5 快应用demo类似书单项目的快应用3.结语对比下vue,react,微信小程序和快应用这几种技术栈开发,可以分为两类,一类是mvvm式的开发:vue,微信小程序和快应用一类是基于JSX的view开发