vue-cli的创建、基本配置和遇到的问题总结
vue-cli的创建及基本配置
1. 创建 vue-cli 项目
确保本地安装了最新版本的nodejs环境(会自带npm环境);
全局安装vue-cli,命令:npm i -g vue-cli
创建项目,以下都为例子创建步骤,命令:vue init webpack testone
3.1 Project name(testone):
默认括号内容,直接Enter3.2 Project description(A Vue.js project)
项目描述,默认括号内容3.3 Author (necrodiver neclodiver@live.com)
作者,默认括号内容3.4 Runtime + Compiler: recommended for most users
Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specific HTML) are ONLY allowed in .vue files - render functions are required elsewhere这里是上下两条,默认选第一条就行了3.5 Install vue-router(Y/n)
安装Vue路由,这里默认安装Y,直接Enter3.6 Use ESLint to lint your code?(Y/n)
是否使用ESLint管理代码,作用是统一代码规范,直接按默认Enter(提示:在后边使用Vux时这个可以选n,要么就会出一些问题还要调回去,比较麻烦)3.7 Standard (https://github.com/standard/standard)
Airbnb (https://github.com/airbnb/javascript)
none (configure it yourself)然后是选择三种js风格(编码规范),我也是选择第一个Standard,Enter3.8 Set up unit tests(Y/n)
是否安装单元测试,这里没时间搞单元测试,我是直接过了,输入n,Enter3.9 Setup e2e tests with Nightwatch? (Y/n)
用Nightwatch设置E2E测试,还是不使用,输入n,Enter3.91 Should we run
npm installfor you after the project has been created? (recommended) (Use arrow keys) Yes, use NPM
Yes, use Yarn
No, I will handle that myself
这里选择NPM,直接默认,然后Enter定位到testone文件夹,命令:npm run dev 然后Ctrl+下边出现的链接就可以在浏览器中预览了 (这时除非安装插件,我们不用关闭再打开,环境内置有根据内容变化重新生成预览)
2. 嵌入Vux
先使用Ctrl+C 来关闭正在运行的项目,按下后提示:终止批处理操作吗(Y/N)? 输入y ,然后Enter
命令:npm install vux --save 来安装vux组件环境 ,点击查看Vux安装配置 ,按这个来搞
命令:npm i vux-loader --save ,第2步的vux-loader在项目中没有,所以安装一下
提示:--save 和 --save-dev 的区别是 --save 会在 package.json 的 dependencies 下边,--save-dev则会生成在 devDependencies 下边- devDependencies 里面的插件只用于开发环境,不用于生产环境。
- dependencies 是需要发布到生产环境的。详细可百度查一下
3. 配置路由
打开目录下src>router>index.js,这个就是路由配置地址了,已经有一个HelloWorld了,我们可以按照这个方式来配,当然还有其他的方式
在routes下边新增一个IndexA吧,以下
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import IndexA from '@/components/IndexA' Vue.use(Router) export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},{
path:'IndexA',
name:'IndexA',
component:IndexA
}
]
})然后在 src>components 下新建一个 IndexA.vue 文件,可以写一些内容表示下,但是在运行时会报错,这时会提示ESLint语法的不规范,我们则需要
在 bulid>webpack.base.conf.js 下找到 config.dev.useEslint 定位到配置,
useEslint: true改成 false ,再运行一下,可以去掉 src>App.vue 里边的一些影响的样式设置,比如logo图如果其他人使用已经创建的项目时需要先运行 npm i 下载插件环境,因为插件环境在 node_modules 文件夹中的,如果使用SVN,在创建项目后首先需要删除 node_modules 文件夹,然后加入过滤,node_modules 文件夹不要上传到服务器,git 则不用考虑了,创建项目时就已经有了过滤文件夹了
使用vue单页面遇到的问题
- 单页面跳转不会销毁原js绑定事件,比如scroll(在移动端上拉加载更多数据,使用了scroll事件,如果跳转到子页面,在子页面进行上拉到底部,会发现在浏览器的NetWork监测中会有加载请求,说明之前的scroll未被销毁),这时需要在跳转前清除绑定的事件
- 性能低的手机在vue渲染页面前有可能js事件先执行了,比如列表渲染后需要取页面高度手动计算一些距离,这时候如果把需要计算的js写在setTimeout中需要适当的延迟执行,我这里之前给了10ms执行延迟,但是还是没有等到渲染完毕就执行了计算,导致报错,然后我把延迟提高到了200ms,这时体验也不是太好,有一段闪烁效果,但也只能这么做了
- 在IOS微信中,Vue单页面跳转后复制链接为原第一次打开的页面链接,如果在跳转后的页面进行分享,那么复制的链接就不当前页面了!解决办法就是在需要分享的页面来源页面使用window.location.href来跳转,而不使用其自带页面或者history.back()等方法(非vue单页面的在ios中使用history.back()/history.go(-1)有可能会出现返回页面不刷新,这时如果使用localStorage进行传值就出问题了)
- 在单页面里,我遇到了一个很奇葩的问题:使用单页面,有列表,初始化方法名为init(),然而在进入子页面后返回,init触发了2次!导致执行了2次获取数据,页面数据也就多了2次重复;单页面中如果methods中有init方法,谨记不能使用这种特殊的方法名,我指的是vue单页面有可能自己有方法名与此相同,导致有可能调用2次,从而出现一些问题,所以尽可能采用自己命名
- 数组列表渲染,并不会直接渲染外部元素,这个在单页面或非单页面都有问题(据了解Vue3.0 会解决这个问题 https://mp.weixin.qq.com/s/k6OhMNrpagtTmbhkW-tmZg)
https://cn.vuejs.org/v2/guide/list.html#注意事项
https://cn.vuejs.org/v2/guide/list.html#变异方法
另外终极解决办法:this.$forceUpdate(); - 单页面打包后的样式污染非常严重!非常严重!非常严重!最好不要使用Scoped,如果单页面新增样式,务必在最外层div添加一个唯一标识的class,下边所有css使用以最外层class为根节点引用。组件可以使用scoped,但是样式还是务必使用唯一class,不要直接在body上写样式,这样样式会带入其他页面
- 配置路由最好和页面文件路径差不多,如果不一样,也可以试试,反正最后你都不会很容易根据url地址找到文件所在位置
在移动端遇到的问题
- 移动端使用的是touch事件,而且浏览器判断事件是300ms,是浏览器设计如此,判断单击和双击的时间间隔为300ms,在连续300ms内单击1次为单击,连续300ms内单击2次为双击
- 移动端会有滚动穿透问题,此问题常出现场景:在页面中有滚动,然后在弹出层也有滚动,在弹出层中滚动非滚动内容时会把底层页面带着滚动,找了网上很多方法,最后还是有几种参考,不过实际效果并不是很理想,但是比起没有的来说还是很好了,首先可以给弹出蒙层添加阻止冒泡事件,另外也可以在弹出前把底部滚动页面的 position 设置为 fixed,然后在弹出层收回后把底部页面position还原 ,一定要记住在移动端尽量少用jquery,如果必须要使用jquery的一些事件,也要使用zepto.js
- IOS微信浏览器不支持中文cookie内容,可以使用encodeUrl进行转换一下,然后取的时候再使用decodeURI转一下
vue-cli的创建、基本配置和遇到的问题总结的更多相关文章
- VUE cli 4.x下配置多页面以及同时配置支持element-ui及mint-ui并且优化首页文件大小。
场景,公司的一个小型项目,需同时支持移动端和PC端.最开始考虑做两个独立的项目.但后来考虑到总共只有4个功能页面,布署起来相对麻烦.所以决定做在一个项目里. 1.升级vue-cli到4.x npm i ...
- @vue/cli 3.x 版本配置productionGzip提高性能
第一步:安装插件 npm i -D compression-webpack-plugin 第二步:引入.在文件vue.config.js里导入compression-webpack-plugin,并添 ...
- Vue CLI Webpack 创建Vue项目
简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还 ...
- node.js和vue cli脚手架下载安装配置方法
一.node.js安装以及环境配置 1.下载vue.js 下载地址: https://nodejs.org/en/ 2.安装node.js 下载完成后,双击安装包开始安装.安装地址最好换成自己指定的地 ...
- 使用vscode开发vue cli 3项目,配置eslint以及prettier
初始化项目时选择eslint-config-standard作为代码检测规范,vscode安装ESLint和Prettier - Code formatter两个插件,并进行如下配置 { " ...
- @vue/cli 3.x项目脚手架 webpack 配置
@vue/cli 是一个基于 Vue.js 进行快速开发的完整系统. @vue/cli 基于node服务 需要8.9以上版本 可以使用 nvm等工具来控制node版本 构建于 webpack ...
- vue cli 中关于vue.config.js中chainWebpack的配置
Vue CLI 的官方文档上写:调整webpack配置最简单的方式就是在vue.config.js中的configureWebpack选项提供一个对象. Vue CLI 内部的 webpack 配置 ...
- vue cli 3
介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-service-global 快 ...
- [Vue 牛刀小试]:第十七章 - 优化 Vue CLI 3 构建的前端项目模板(1)- 基础项目模板介绍
一.前言 在上一章中,我们开始通过 Vue CLI 去搭建属于自己的前端 Vue 项目模板,就像我们 .NET 程序员在使用 asp.net core 时一样,我们更多的会在框架基础上按照自己的开发习 ...
- Vue CLI 是如何实现的 -- 终端命令行工具篇
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供了终端命令行工具.零配置脚手架.插件体系.图形化管理界面等.本文暂且只分析项目初始化部分,也就是终端命令行工具的实现. 0. 用法 ...
随机推荐
- Python基础(十一) 异常处理
在程序运行过程中,总会遇到各种各样的错误,有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这样的错误我们通常称之为BUG,BUG是必须修复的.在Python中内置了一套异常处理机 ...
- #if 0的意义和好处
在调试中经常遇到,写好的程序,需要调试相反的两方面,如:有两款单片机的程序,分别对应着不同的硬件引脚,我们把代码都写上了,但是不能同时让他们起效,通常的办法是/**/屏蔽一些段落,但是调试起来很麻烦. ...
- 【Codeforces 1037D】Valid BFS?
[链接] 我是链接,点我呀:) [题意] 让你判断一个序列是否可能为一个bfs的序列 [题解] 先dfs出来每一层有多少个点,以及每个点是属于哪一层的. 每一层的bfs如果有先后顺序的话,下一层的节点 ...
- HTTP 请求的 GET 与 POST 方式的区别
HTTP 请求的 GET 与 POST 方式的区别 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST. GET - 从指定的资源请求数据. POST - 向指定的资源 ...
- HDU 5291 Candy Distribution
Candy Distribution Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- Ural 1091 Tmutarakan Exams
Tmutarakan Exams Time Limit: 1000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...
- Spring Cloud(4):Feign的使用
基于上一篇文章:https://www.cnblogs.com/xuyiqing/p/10867739.html 使用Ribbon实现了订单服务调用商品服务的Demo 下面介绍如何使用Feign实现这 ...
- 12、Java并发性和多线程-Java同步块
以下内容转自http://ifeve.com/synchronized-blocks/: Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免 ...
- js滚轮换切屏
因为全项目不是自己写的,仅仅是帮别人写js滚轮代码,并且别人项目也还未上线.所以仅仅贴出自己写的那段部分代码, 效果:鼠标滚轮滚动时.网頁屏幕一屏一屏的上下切换 (下面代码在本地电脑的IE,chrom ...
- 杭电 1548 A strange lift(广搜)
http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Time Limit: 2000/1000 MS (Java/Others) ...