一句命令搞定全家桶:  npm install vue-router vue-resource vuex --save 
main.js配置:
  1. import Vue from 'vue'
  2. import VueResource from 'vue-resource'
  3. import VueRouter from 'vue-router'
  4. import Vuex from 'vuex'
  5. import App from './App.vue'
  6. Vue.use(VueResource)
  7. Vue.use(VueRouter)
  8. Vue.use(Vuex)
  9. new Vue({
  10. el: '#app',
  11. render: h => h(App)
  12. })

其他预处理器sass/less、ui组件、插件按项目/需求各自喜好加载。

rem 适配:(index.html引入)

  1. !function (window) {
  2.  
  3. /* 设计图文档宽度 */
  4. var docWidth = 750;
  5.  
  6. var doc = window.document,
  7. docEl = doc.documentElement,
  8. resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
  9.  
  10. var recalc = (function refreshRem () {
  11. var clientWidth = docEl.getBoundingClientRect().width;
  12.  
  13. /* 8.55:小于320px不再缩小,11.2:大于420px不再放大 */
  14. docEl.style.fontSize = Math.max(Math.min(20 * (clientWidth / docWidth), 11.2), 8.55) * 5 + 'px';
  15.  
  16. return refreshRem;
  17. })();
  18.  
  19. /* 添加倍屏标识,安卓为1 */
  20. docEl.setAttribute('data-dpr', window.navigator.appVersion.match(/iphone/gi) ? window.devicePixelRatio : 1);
  21.  
  22. if (/iP(hone|od|ad)/.test(window.navigator.userAgent)) {
  23. /* 添加IOS标识 */
  24. doc.documentElement.classList.add('ios');
  25. /* IOS8以上给html添加hairline样式,以便特殊处理 */
  26. if (parseInt(window.navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/)[1], 10) >= 8)
  27. doc.documentElement.classList.add('hairline');
  28. }
  29.  
  30. if (!doc.addEventListener) return;
  31. window.addEventListener(resizeEvt, recalc, false);
  32. doc.addEventListener('DOMContentLoaded', recalc, false);
  33.  
  34. }(window);

# 移动端点击事件300ms延迟
建议使用 fastclisk 插件,在 webpack 入口文件 main.js 中如下配置:

  1. const FastClick = require('fastclick');
  2. document.addEventListener('DOMContentLoaded', function () {
  3. FastClick.attach(document.body);
  4. }, false);

# 异步加载组件(以YDUI为例)
打包构建应用时,Javascript 包会变得非常大,影响页面加载。为了提高效率,可以把不同路由对应的组件分割成不同的代码块,当路由被访问的时候才加载对应组件。
可以通过 Vue 的 异步组件 和 Webpack 的 code splitting feature 实现:

  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3.  
  4. Vue.use(VueRouter);
  5.  
  6. const router = new VueRouter({
  7. routes: [
  8. {
  9. path: '/XXX1',
  10. component: resolve => require(['./routers/XXX1.vue'], resolve) /* <== 主要代码是这 */
  11. },
  12. {
  13. path: '/XXX2',
  14. component: resolve => require(['./routers/XXX2.vue'], resolve) /* <== 主要代码是这 */
  15. }
  16. ]
  17. });
  18.  
  19. import App from './app.vue';
  20.  
  21. const app = new Vue({
  22. router,
  23. render: v => v(App)
  24. }).$mount('#app');

# 页面切换加载中提示
当用户网络较慢时,异步加载组件需要一定时间,此时显示加载中动画相对比较友好。 可以通过 vue-router 和 vuex 轻松实现:
首先通过 vuex 定义一个状态(isLoading):

  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3.  
  4. const store = new Vuex.Store({
  5. state: {
  6. isLoading: false
  7. },
  8. mutations: {
  9. updateLoadingStatus(state, isLoading) {
  10. state.isLoading = isLoading;
  11. }
  12. }
  13. });
  14.  
  15. const app = new Vue({
  16. store,
  17. router,
  18. render: v => v(App)
  19. }).$mount('#app');
  1. 其次通过 vue-router beforeEach afterEach 更改 isLoading 状态:
  2. router.beforeEach((route, redirect, next) => {
  3. /* 显示加载中动画 */
  4. store.commit('updateLoadingStatus', true);
  5. next();
  6. });
  7.  
  8. router.afterEach(route => {
  9. /* 隐藏加载中动画 */
  10. store.commit('updateLoadingStatus', false);
  11. });
  12. 最后在 App.vue 里通过 isLoading 显示/隐藏加载中动画即可:
  13. <template>
  14. <div style="height: 100%;"><!-- 特别注意:若页面结构使用 yd-layout 组件时,这里需加上 height: 100%; -->
  15. <div v-show="isLoading">加载中</div>
  16.  
  17. <router-view v-show="!isLoading"></router-view>
  18. </div>
  19. </template>
  20.  
  21. <script type="text/babel">
  22. export default {
  23. computed: {
  24. isLoading() {
  25. return this.$store.state.isLoading
  26. }
  27. }
  28. }
  29. </script>

vue移动端开发全家桶的更多相关文章

  1. Vue-移动端开发全家桶

    内容:node.js,vue-cli,vuex,axios,postcss-pxtorem,lib-flexible,vant ,babel-plugin-import 1.安装脚手架工具: npm ...

  2. vue 移动端开发

    1.vue开发中的路由: 关于require 与import 的区别 2.vue中的mock数据 3.

  3. RxJava Android(RxAndroid) 开发全家桶

    RxJava 在 Android 应用开发中越来越流行,但是由于其门槛稍高,初次使用不免遇到很多问题,例如在 RxJava 常见的错误用法 和 不该使用 RxJava 的一些情况 中所描述的情况.为了 ...

  4. [转]vue全面介绍--全家桶、项目实例

    慢慢了解vue及其全家桶的过程 原文http://blog.csdn.net/zhenghao35791/article/details/67639415 简介 “简单却不失优雅,小巧而不乏大匠”.  ...

  5. vue全面介绍--全家桶、项目实例

    简介 “简单却不失优雅,小巧而不乏大匠”. 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们 ...

  6. Vue全家桶

    简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...

  7. Vue 全家桶介绍

    Vue有著名的全家桶系列,包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https: ...

  8. Vue全家桶介绍

    一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...

  9. Nuxt + Vue 全家桶

    引子 情由无中有,一旦有了,便万劫不复 简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建 ...

随机推荐

  1. 三分钟教你学Git(十四) 之 线下传输仓库

    有时候还有一个人不能从远程直接clone仓库或者说由于非常大,clone非常慢或其他原因.我们能够使用bundle命令将Git仓库打包,然后通过U盘或者是其他介质拷贝给他,这样他拿到打包好的仓库后能够 ...

  2. 微信小程序 navigateTo 传对象参数

    当微信小程序navigateTo传入参数是个object时,请使用JSON.strtingify将object转化为字符串,代码如下: wx.navigateTo({ url: '../sendChe ...

  3. ERROR: cannot start Android Studio. No JDK found. Please validate either ANDROID_STUDIO_JDK, JDK_HOME + Unrecognized VM option '+UseCodeCacheFlushing

    想学下android,在本来想用myeclipse安装下sdk和adt,谁知在官网看到http://developer.android.com/sdk/index.html Google I/O 20 ...

  4. 用jetty起maven工程debug报source not found

    之前基本都是tomcat启maven本工程 惯性的处理方式是 直接点击lookup source 直接先删除default工程 然后选择导入java project 找到源码所在的工程 但是一般情况下 ...

  5. ExtJS常用代码集合

    ExtJS常用代码集合,包括弹出提示框,登陆框,树状结构等等.​1. [代码]弹出提示框     <html>    <head>        <title>Ge ...

  6. Java经典算法大全

    1.河内之塔.. 2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6. ...

  7. 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  8. Viewpager animation duration setting

    private void animatePagerTransition(final boolean forward) { ValueAnimator animator = ValueAnimator. ...

  9. 【POJ 2407】 Relatives

    [题目链接] 点击打开链接 [算法] 欧拉函数 [代码] #include <algorithm> #include <bitset> #include <cctype& ...

  10. 【前端】Nodejs给没有引号的json数据添加引号

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/node_json.html 我们经常会遇到一些json数据需要放到json文件中,然后动态加载的场景. 但是也经常 ...