原文链接:https://juejin.im/post/5b1e2b01f265da6e494def6b

1.新cli工具生成项目配置webpack,根路径创建vue.conf.js

module.exports = {configureWebpack: config => {// 为生产环境修改配置...if (process.env.NODE_ENV === 'production') {//html文件引入绝对地址config.output.publicPath = ''//不生成.map文件config.devtool = false;} else {// 为开发环境修改配置...}}
}

2.npm run serve自动启动用本地ip打开浏览器

"serve": "vue-cli-service serve --open --host 192.168.1.169"

window系统可以在cmd里面用ipconfig查看本地ip,然后直接把地址复制发送到手机,在手机上调试页面,前提是手机和你电脑在一个网络环境下

3.移动端click点击清除300ms延迟

import FastClick from'fastclick'window.addEventListener('load', () => {FastClick.attach(document.body)
})

在main.js引入代码,然后页面和组件都可以直接使用@click来绑定事件

4.使用rem来写移动端页面

//main.js 引入依赖
import 'amfe-flexible'//_base.scss 设计图宽度除以10,假如设计图宽度是750px那么,基础宽度就是75
$baseWidthSize: 75 !default;
@function to($px) {@return $px / $baseWidthSize * 1rem;
}//组件和页面使用; to()里面的数值是photoshop里测量的值
<style lang="scss">@import "../scss/_base.scss";.box{width: to(750);height: to(100);}
</style>

5.自定义指令上拉加载(div内滚动)

//main.js 引入import directive from'./directive'
directive(Vue)//./directive/index.js import ScrollFix from'scrollfix'exportdefault (Vue) => {Vue.directive('scroll', {inserted: (el) => {new ScrollFix(el);}});Vue.directive('pull', {bind: (el, binding, vnode) => {if (!binding.value) {return;}let { self } = binding.value;el.addEventListener('scroll', utils.throttle(() => {let { scrollTop, offsetHeight, scrollHeight } = el;//整个列表的高度 - ( 滚动的高度 + 盒子的高度 )if ((scrollHeight - offsetHeight - scrollTop < 200) && self.isMore) {self.isMore = false;self.pullRequest && self.pullRequest();console.log('上拉指令');}}), false);}});
}

这里定义了2个指令 v-scroll用来处理ios div内滚动bug v-pull 用来做上拉加载

我习惯做div内滚动上拉加载,因为结合ScrollFix这个插件,在下拉页面的时候可以看不见此网页由 192.168.1.169:8080 提供底色的背景;

utils.throttle 是一个节流函数,utils是个对象我挂载到全局了,使用utils的地方多嫌import麻烦;

在页面中使用

<div class="done" v-scroll v-pull="self">…
</div>export default {data() {return {data: [],page:1,self: this,isMore: true}},created(){this.pullRequest({page:1})},methods: {//上拉加载async pullRequest() {let { data } = await API.getList({ page: this.page });if(data.length == 0){this.isMore = false;}else{this.isMore = true;this.page ++;}}}
}

6.对请求函数的封装

./api/server.js

import'whatwg-fetch'import * as config from'@/config'functioncheckStatus(response) {if (response.status >= 200 && response.status < 300) {return response} else {var error = newError(response.statusText)error.response = responsethrow error}
}functionparseJSON(response) {return response.json()
}exportdefault (url, params = {}, method = 'GET') => {returnnewPromise((resolve, reject) => {fetch(config.url + url, {method,headers: {'Content-Type': 'application/json','Accept': 'application/json','Authorization': 'Bearer ' + (params.token || utils.getStorage('token'))},body: JSON.stringify(params)}).then(checkStatus).then(parseJSON).then((data) => {resolve(data);}).catch((err) => {reject(err)})})
}

请求用的fetch这个包,她可以跨域请求数据

对每个请求函数的封装 ./api/index.js; 在main.js中引入,并且把API对象挂载到了全局

import request from'./server'import config from'./api'let API = {};
for (let key in config) {let matchs = key.match(/^(\S+)\s*(.*)$/);API[`${matchs[1]}`] = async (params) => {returnawait request(config[key], params, matchs[2]);}
}
exportdefault API;

定义接口函数 key [ 方法名,请求类型 ] : 请求url

以后就在这个文件里面加入请求函数,并且比较方便快捷

exportdefault {'login POST': 'user/login','getDetails POST': 'user/getDetails','getCaptcha POST': 'user/getCaptcha','sendMsg POST': 'user/sendMsg','verifyinfo POST': 'user/verifyinfo','modifyPwd POST': 'user/modifyPwd',
}

页面中使用

exportdefault {async created(){let { data } = await API.getDetails({ page: this.page });}
}

7. 设置不同路由下的页面title ./utils/index.js

exportlet setTitle = (title) => {document.title = titlevar mobile = navigator.userAgent.toLowerCase()if (/iphone|ipad|ipod/.test(mobile)) {var iframe = document.createElement('iframe')iframe.style.visibility = 'hidden'// 替换成站标favicon路径或者任意存在的较小的图片即可iframe.setAttribute('src', '')var iframeCallback = function () {setTimeout(function () {iframe.removeEventListener('load', iframeCallback)document.body.removeChild(iframe)}, 0)}iframe.addEventListener('load', iframeCallback)document.body.appendChild(iframe)}
}

8. 使用新的vue-cli工具,使用yarn初始化项目报错command failed: yarn

这时如果无法解决又想切换回npm来安装,可以这样做:

C:\Users\你的用户名\ .vuerc 找到这个文件修改packageManager

packageManager: npm

用vue做项目的一些总结相关推荐

  1. ant vue 设置中文_vue+Ant design vue做项目-Go语言中文社区

    哈喽哈喽,这期带来蚂蚁金服的一个 Ant Design 的 Vue 实现. 样式还是很现代化的,嗯...现在是2019年9月17,对现在来说还很fashion过几年就不知道了. 话不多说直接上手,喜欢 ...

  2. 使用vue做一个“淘宝“项目——3

    做出分类页面 前言:做出首页,详细请看前两篇文章 1.使用vue做一个"淘宝"项目(做出首页) 2.使用vue做一个"淘宝"项目(显示商品栏) 目录: 创建项目 ...

  3. vue做h5项目横屏

    vue做h5项目横屏竖屏切换,主要叙述横屏样式 逻辑是旋转页面就可以 页面代码结构: <div class="widDiv"><div></div&g ...

  4. 宝塔面板部署nuxt_MacOS下创建及部署vue.js项目(及Nuxt.js、PM2等相关流程)

    开发环境 权限准备 为避免后续流程出现权限不足的相关提示,首先在终端中输入以下代码检查当前系统是否已开启了对系统文件夹的保护: csrutil status 若结果为csrutil enabled,则 ...

  5. Vue.JS项目输入框中使用v-model导致number类型值自动转换成string问题的解决方案

    老文章了,目前用el-input v-model.number就能解决 很简单的操作,不知道当初在做什么,下文请直接忽略- Vue.JS项目中v-model导致输入框中number类型值自动转换成st ...

  6. 从头开始vue创建项目_我正在以设计师的身份开始一个被动的收入项目。 从头开始。...

    从头开始vue创建项目 Do you ever read an article on Medium (or elsewhere) about passive income, side projects ...

  7. vue框架项目部署到服务器_在浏览器中在线尝试无服务器框架项目!

    vue框架项目部署到服务器 无服务器框架是无服务器工具的一致领导者. 但是,没有简单的方法可以在线试用无服务器框架项目. 您确实需要一个体面的开发人员设置,并且需要一些工作来设置sls , npm等. ...

  8. 哟,2020年了!试着用vue做一个自己的小程序吧~~

    Table of Content 前言 1. 生命周期 1. Vue的生命周期 2. 微信小程序页面生命周期 3. uni-app生命周期 1. 应用生命周期 2. 页面生命周期 2. 项目搭建 1. ...

  9. Vue+ElementUI项目使用webpack输出MPA【华为云分享】

    [摘要] Vue+ElementUI多页面打包改造 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目 ...

最新文章

  1. 简单配置 docker swarm
  2. c语言初始化字符数组为空,怎么把已经初始化的字符数组设置为空?
  3. laravel 模型(2)
  4. linux下安装mysql5.7方法与常见问题
  5. 清华大学python视频_涨见识了,清华大学全套Python642集视频教程泄露,拿走玩去...
  6. 系统学习深度学习(三十六)--Actor-Critic
  7. 190710每日一句
  8. lzw编码过程详解_【手打】LZW编码的C/C++实现
  9. 完整版28K易支付系统源码+第四方Oreo支付源码
  10. 杨凌职业技术学院计算机专业宿舍,杨凌职业技术学院宿舍条件怎么样,有独立卫生间和空调吗...
  11. 频响函数和传递函数详解-工程实例
  12. 信息技术前言讲座报告
  13. java reader类子类_Java之InputStreamReader类的实现
  14. 光子晶体的应用背景和研究历史
  15. 斜挎包长度到哪里合适_一般斜挎包长多少厘米_身高170斜挎包带长
  16. ShowType=0,● 交换机命令show interfaces type 0/port_# switchport|trunk用于显示中继连接的配置情况,下面 - 赏学吧...
  17. spinnaker-简介
  18. 使用MATLAB的EEGLAB和BCT工具箱画脑网络连接图
  19. FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
  20. 睡眠的一场革命!-读《睡眠革命》笔记(中)

热门文章

  1. ACL初识(访问控制列表)
  2. 命令python所在的驱动器和文件夹_Python读取不同本地驱动器位置的文件
  3. Oracle具有开放性吗,Oracle数据库的特点与工作原理
  4. python比较两个二进制文件_python三种方法判断文件是否为二进制文件
  5. 队列判空_三分钟基础:什么是队列?
  6. linux文件 内存映射 锁,linux – mmap:将映射文件立即加载到内存中吗?
  7. 获取用户列表为空_数据结构和算法(Golang实现)(15)常见数据结构-列表
  8. linux分区 挂盘,linux分区与格式化磁盘挂载磁盘与自动挂载详细教程
  9. c语言 地址+1,C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?...
  10. linux网卡口闪烁,LINUX 下网卡口绑定整理