vue-cli的使用

现在使用前端工程化开发项目是主流的趋势,也就是说,我们需要使用一些工具来搭建vue的开发环境。一般情况下我们都会选择使用webpack进行项目的构建,在这里我们直接使用vue官方提供的,基于webpack的脚手架工具进行项目开发。

注意: 要求node.js版本是8+

安装方法

全局安装vue-cli:
cnpm install -g @vue/cli
or
yarn global add @vue/cli
检测安装:
vue -V

脚手架创建项目

vue create 项目名称
这里如果你是第一次使用脚手架进行项目创建的话,是只有两项提示。
第一项是默认配置,我们一般选择第二项自定义配置进行项目构建。
我们可以自由的选择哪些配置,按键盘上下键进行选中,安装。
选中哪一个,通过键盘空格键确定,所有的都选择完毕后,按键盘的Enter键进行下一步。
需要注意的是:模板创建的时候会询问需要使用EsLint来标准化我们的代码规范,地址如下:
https://www.cnblogs.com/mingjian/p/9361027.html
如果sass安装失败的话,可以重新安装sass试一下
cnpm i node-sass
yarn直接装一遍:yarn

然后会报一次eslint的错,用yarn lint运行一下
然后yarn serve运行

关闭eslint

​ 如果当前项目使用了eslint,并且需要关闭。需要创建vue.config.js文件,采用如下代码:

module.exports = {devServer: {overlay: {warnings: false,errors: false}},lintOnSave:false //直接关闭eslint检查
}

alias别名配置

configureWebpack: {resolve: {alias: {'assets': '@/assets',      //@直接选择src文件'con': '@/components','views': '@/views',}}
}

proxy代理配置

devServer: {open:true, //自动开启浏览器port:8000, //随便改端口号proxy: {'/api': {target: 'https://*.*.com',host: '*.*.com',changeOrigin:truepathRewrite:{           //完事后将api开头的去除掉,变为空'^/api':''}}}
}

axios异步的方法

axios.get("地址",{headers:{请求头}
}).then(res=>{console.log(res)})//第二种
axios({url:"地址",method:"请求方式",headers:{请求头}
}).then(res=>{console.log(res)})

css样式设置:scoped、/deep/或>>>穿透

<!--1.scoped属性只能限制样式在当前组件可以用原理:就是给当前组件的标签上面添加了额外的一些属性,不仅仅根据class匹配了,还可以同时根据属性选择器进行匹配2.在标签上面可以支持lang属性  例如可以使用sass语法(css的预处理语言)进行高效的css代码的编写scoped的穿透 子组件或者第三方插件的某些样式需要用到了,使用/deep/进行穿透如果对于普通的css样式来说的话,用  >>> 语法即可
-->
scss语法
<style scoped lang="scss">.helloworld /deep/ p{color:skyblue;}
</style>普通css样式
<style scoped>.helloworld >>> p{color:skyblue}
</style>

移动端媒体查询、12格栅系统

/*通过media媒体查询标签,根据不同的分辨率显示不同效果*//*当浏览器的窗口小于等于1500px的时候就变色*/@media screen and (max-width:1500px){div{background:red}}@media screen and (max-width:1000px){div{background:orange}}

col-xs-6(移动端) col-sm-6(iPai端) col-md-6(中等屏幕,比iPad大一点) col-lg-6(超大屏)
12格栅系统后面数字的计算方法:12 / 后面数字 = 几列
div.col-xs-6.col-sm-4 (移动端显示两列,ipad端显示3列 12栅格系统)

动态设置rem

dbr(设备像素缩放比)=物理像素(设备像素)/ 逻辑像素(css像素)
计算动态的font-size = 逻辑像素(css像素)/ 设定rem(表示视口的总宽) + “px”
如下

<script>//动态计算remdocument.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + "px"window.onresize = function(){document.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + "px"}</script>
通过meta标签来设置viewport

标签提供关于 HTML 文档的元数据。它不会显示在页面上,但是对于机器是可读的。可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。

meta标签大全

1px边框问题

连接:1px边框
在移动端中,如果给元素设置一个像素的边框的话,那么在手机上看起来是会比一个像素粗的。
解决方法:使用伪类元素模拟边框,使用transform缩放
利用transition:scaleY(0.5)进行缩放
dpr为2缩放0.5,为3的话缩放0.333
响应式图片为题
当图片外面的元素加宽的话,内部的图片就玩会变形
解决方法:让图片最大只能是自己的宽度

img{max-width: 100%;display: block;margin: 0 auto;
}

移动端事件

移动端中的事件和PC的事件有一些是不同的,例如,mouse部分事件在移动端里没有了
取而代之的是touch事件:
touchstart/touchmove/touchend/touchcancel(玩游戏 忽然来电话)
添加事件的时候可以用ontouchstart,但是有的时候很可能失效,建议使用addEventListener的方式
touchcancel比较少见,在系统取消触摸的时候触发
touch事件对象里面的属性和mouse的略有不同,例如在mouse事件里可以直接从事件对象里取出pageX,clientX,screenX
touch事件对象里有touches,changedTouches,targetTouches三个属性,上面保存着关键的位置信息
它们里面保存的是触发事件的手指的信息,但是要注意,虽然三个里面保存的信息看似都一样,但是在touchend事件里,只能使用changedTouches

click的300ms延迟问题

在移动端中,click事件是生效的,但是它有一个问题,点击之后会有300ms的延迟响应

原因:safari是最早做出这个机制的,因为在移动端里,浏览器需要等待一段事件来判断此次用户操作是单击还是双击,所以就有click300ms的延迟机制,Android也很快就有了

  1. 不用click,用自定义事件tap
    tap是需要自定义的:如果用户执行了touchstart在很短的时间又触发了touchend,且两次的距离很小,而且不能触发touchmove
    使用zepto类库的时候,里面自带tap事件,,但是需要在zepto.js后面加上一段js
    zepto官网;Touch模块
    百度有一款touch.js的插件教程
    hammer.js也是一个手势事件库文档

  2. 引入fastclick库来解决

点透bug的产生

点透bug有一个特定的产生情况:

当上层元素是tap事件,且tap后消失,下层元素是click事件。这个时候,tap上层元素的时候就会触发下层元素的click事件

解决方式:

  1. 上下层都是tap事件,缺点:a标签等元素本身就是自带的click事件,更改为tap比较困难

  2. 缓动动画,让上层元素消失的时候不要瞬间消失,而是以动画的形式消失,事件超过300ms就可以了

  3. 使用中间层,添加一个透明的中间元素,给它添加click事件并消失,这个时候接收点透的是透明的中间层

  4. 使用fastclick

移动端测试

  1. 使用chrome浏览器有移动设备模拟功能,在这里可以做一些模拟测试,但是要注意的是,毕竟不是真机,会有一些测试不到的问题

  2. 手机连接上电脑的无线,总之使其在同一个网络里,然后就可以通过ip访问

需要测试的浏览器:

chrome,firefox,UC,百度,QQ,微信,Android,safari

移动端交互

动画效果全部使用css3

JQ生成二维码

可以使用jquery.qrcode.js插件,可以快速的生成基于canvas绘制的二维码

兼容查阅网站

can i use ,在这里可以查看很多属性、api的兼容性

vue-cli、脚手架创建、eslint、alias别名配置、proxy代理配置、axios、scoped、穿透、媒体查询、12栅格、动态rem、1px边框、移动端事件、300ms延迟问题(六)相关推荐

  1. 猿创征文|【Vue五分钟】 Vue Cli脚手架创建一个项目

    目录 前言 一.创建项目的操作步骤 选择路由模式 选择CSS预编译器 选择如何存放配置 自动下载项目所需的包文件 二.启动vue项目 1.项目目录 2.启动项目 3.浏览器打开项目首页界面 三.项目的 ...

  2. vite以及webpack(@vue/cli 5.x) vue3 alias别名配置

    一.vite 之前写了一个vite的项目,配置找了半天,结果如下: import { defineConfig } from 'vite' import vue from '@vitejs/plugi ...

  3. 前端如何通过vue/cli脚手架创建vue项目

  4. vue cli 解决跨域 线上 nginx 反向代理配置

    前后分离 axios 接 api 跨域问题如图: 解决办法: 1. npm start 本地开发环境解决: 在webpack配置文件 /config/index.js 里找到 proxyTable 开 ...

  5. 【Vue】—Vue脚手架创建项目时的 linter / formatter config配置选择

    [Vue]-Vue脚手架创建项目时的 linter / formatter config配置选择 ESLint with error prevention only 只进行报错提醒 ESLint + ...

  6. Vue2.x 核心基础(Vue概述,Vue基本使用,@vue/cli脚手架,Element-UI 的基本使用,Vue模板语法)

    1. Vue概述 尤雨溪:Vue.js的创建者 2014年2月,Vue.js正式发布 2015年10月27日,正式发布1.0.0 2016年4月27日,发布2.0的预览版本 Vue:渐进式JavaSc ...

  7. vue CLI脚手架搭项目

    1.安装 node.js环境 官网下载:https://nodejs.org/en/download/ 一直默认就行,路径可以改变但要记得到 安装完成后cmd打开终端,输入node -v ,npm - ...

  8. 如何查看vue版本号以及vue/cli脚手架版本号

    查看vue版本号 方法一:直接在项目的package.json文件,找到dependencies就能看到了 方法二:输入命令npm ls vue (或者npm list vue) 查看vue/cli脚 ...

  9. vue.config.js配置proxy代理解决跨越;proxy代理报404;

    像我们本地的vue项目运行起来,访问的地址一般是localhost,这个时候请求后台的接口,端口号也不一致,肯定就会存在跨域问题,所以我们要是想正常访问接口的话,就需要解决掉跨域问题. 本文我们是在v ...

最新文章

  1. java在线编译器_什么是Java内存模型
  2. 大鱼吃小鱼easyx_对于一个大一计科新生,有什么代码行数在 500~1000 的程序(C 语言)可以试着写来练手?...
  3. Python助力中学数学教学:绘图验证反比例函数与矩形交点的关系
  4. 理解Asp.Net自定义控件的生命周期
  5. 从零开始,CentOS6安装ghost博客
  6. 关于计算机用途的ppt,计算机组成与用途课件.ppt
  7. za压缩图片的几种方法
  8. ListView分页显示
  9. 【转载】CMMI与敏捷开发模式比较
  10. 《Nature》《Science》封面发表的AI相关文章
  11. (executor 1 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after
  12. Java GC G1 详解
  13. 全球机场与航空公司准点率数据报告,为五一小长假做足准备
  14. jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
  15. 计算机基础频率单位转换,hz换算(hz与秒单位换算)
  16. ANDROID 开源库
  17. 基于qiankun搭建ng-alain15微前端项目示例实践
  18. Comparison method violates its general contract 出现原因和解决方法
  19. 中国企业软件公司的转型之路
  20. Springboot集成Brpc

热门文章

  1. Angular报注入错误,以及解决方式,$injector:unpr
  2. python中的matplotlib绘图
  3. 在七牛云建对象存储用于上传图片
  4. 21世纪,黑客是这样抢银行的
  5. 鸿蒙 悟空遥控,悟空遥控器(com.wukongtv.wkremote.client) - 3.9.3.0 - 应用 - 酷安
  6. Android Studio 连接阿里云数据库【制作基于数据库的多人远程聊天APP】
  7. 视觉设计中发现的11种光学错觉
  8. 如何解决租房烦恼?阿里工程师写了一套神奇的代码
  9. 查看Mac本机路由器IP地址
  10. A Brief History of Just-In-Time 简读