vue移动端开发全家桶

- import Vue from 'vue'
- import VueResource from 'vue-resource'
- import VueRouter from 'vue-router'
- import Vuex from 'vuex'
- import App from './App.vue'
- Vue.use(VueResource)
- Vue.use(VueRouter)
- Vue.use(Vuex)
- new Vue({
- el: '#app',
- render: h => h(App)
- })

其他预处理器sass/less、ui组件、插件按项目/需求各自喜好加载。
rem 适配:(index.html引入)

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

# 移动端点击事件300ms延迟
建议使用 fastclisk 插件,在 webpack 入口文件 main.js 中如下配置:
- const FastClick = require('fastclick');
- document.addEventListener('DOMContentLoaded', function () {
- FastClick.attach(document.body);
- }, false);
# 异步加载组件(以YDUI为例)
打包构建应用时,Javascript 包会变得非常大,影响页面加载。为了提高效率,可以把不同路由对应的组件分割成不同的代码块,当路由被访问的时候才加载对应组件。
可以通过 Vue 的 异步组件 和 Webpack 的 code splitting feature 实现:

- import Vue from 'vue';
- import VueRouter from 'vue-router';
- Vue.use(VueRouter);
- const router = new VueRouter({
- routes: [
- {
- path: '/XXX1',
- component: resolve => require(['./routers/XXX1.vue'], resolve) /* <== 主要代码是这 */
- },
- {
- path: '/XXX2',
- component: resolve => require(['./routers/XXX2.vue'], resolve) /* <== 主要代码是这 */
- }
- ]
- });
- import App from './app.vue';
- const app = new Vue({
- router,
- render: v => v(App)
- }).$mount('#app');

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

- import Vue from 'vue';
- import Vuex from 'vuex';
- const store = new Vuex.Store({
- state: {
- isLoading: false
- },
- mutations: {
- updateLoadingStatus(state, isLoading) {
- state.isLoading = isLoading;
- }
- }
- });
- const app = new Vue({
- store,
- router,
- render: v => v(App)
- }).$mount('#app');


- 其次通过 vue-router 的 beforeEach 和 afterEach 更改 isLoading 状态:
- router.beforeEach((route, redirect, next) => {
- /* 显示加载中动画 */
- store.commit('updateLoadingStatus', true);
- next();
- });
- router.afterEach(route => {
- /* 隐藏加载中动画 */
- store.commit('updateLoadingStatus', false);
- });
- 最后在 App.vue 里通过 isLoading 显示/隐藏加载中动画即可:
- <template>
- <div style="height: 100%;"><!-- 特别注意:若页面结构使用 yd-layout 组件时,这里需加上 height: 100%; -->
- <div v-show="isLoading">加载中</div>
- <router-view v-show="!isLoading"></router-view>
- </div>
- </template>
- <script type="text/babel">
- export default {
- computed: {
- isLoading() {
- return this.$store.state.isLoading
- }
- }
- }
- </script>

vue移动端开发全家桶的更多相关文章
- Vue-移动端开发全家桶
内容:node.js,vue-cli,vuex,axios,postcss-pxtorem,lib-flexible,vant ,babel-plugin-import 1.安装脚手架工具: npm ...
- vue 移动端开发
1.vue开发中的路由: 关于require 与import 的区别 2.vue中的mock数据 3.
- RxJava Android(RxAndroid) 开发全家桶
RxJava 在 Android 应用开发中越来越流行,但是由于其门槛稍高,初次使用不免遇到很多问题,例如在 RxJava 常见的错误用法 和 不该使用 RxJava 的一些情况 中所描述的情况.为了 ...
- [转]vue全面介绍--全家桶、项目实例
慢慢了解vue及其全家桶的过程 原文http://blog.csdn.net/zhenghao35791/article/details/67639415 简介 “简单却不失优雅,小巧而不乏大匠”. ...
- vue全面介绍--全家桶、项目实例
简介 “简单却不失优雅,小巧而不乏大匠”. 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们 ...
- Vue全家桶
简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...
- Vue 全家桶介绍
Vue有著名的全家桶系列,包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https: ...
- Vue全家桶介绍
一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...
- Nuxt + Vue 全家桶
引子 情由无中有,一旦有了,便万劫不复 简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建 ...
随机推荐
- 三分钟教你学Git(十四) 之 线下传输仓库
有时候还有一个人不能从远程直接clone仓库或者说由于非常大,clone非常慢或其他原因.我们能够使用bundle命令将Git仓库打包,然后通过U盘或者是其他介质拷贝给他,这样他拿到打包好的仓库后能够 ...
- 微信小程序 navigateTo 传对象参数
当微信小程序navigateTo传入参数是个object时,请使用JSON.strtingify将object转化为字符串,代码如下: wx.navigateTo({ url: '../sendChe ...
- 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 ...
- 用jetty起maven工程debug报source not found
之前基本都是tomcat启maven本工程 惯性的处理方式是 直接点击lookup source 直接先删除default工程 然后选择导入java project 找到源码所在的工程 但是一般情况下 ...
- ExtJS常用代码集合
ExtJS常用代码集合,包括弹出提示框,登陆框,树状结构等等.1. [代码]弹出提示框 <html> <head> <title>Ge ...
- Java经典算法大全
1.河内之塔.. 2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6. ...
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- Viewpager animation duration setting
private void animatePagerTransition(final boolean forward) { ValueAnimator animator = ValueAnimator. ...
- 【POJ 2407】 Relatives
[题目链接] 点击打开链接 [算法] 欧拉函数 [代码] #include <algorithm> #include <bitset> #include <cctype& ...
- 【前端】Nodejs给没有引号的json数据添加引号
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/node_json.html 我们经常会遇到一些json数据需要放到json文件中,然后动态加载的场景. 但是也经常 ...