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. 用法 ...
随机推荐
- 2018百度之星资格赛T2 子串查询
[题解] 很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数.效率O(N^2),无法通过全部数据. 我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0 ...
- HDU - 6158 The Designer
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6158 本题是一个计算几何题——四圆相切. 平面上的一对内切圆,半径分别为R和r.现在这一对内切圆之间,按 ...
- 九度oj 题目1066:字符串排序
题目1066:字符串排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6487 解决:2670 题目描述: 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到 ...
- 对象和变量的并发访问synchronized解析以及死锁分析排查
一.synchronized java并发编程中存在“非线程安全"问题.“非线程安全"是指发生在多个线程对同一个对象中的实例变量并发访问时,产生的”脏读“现象,使用synchron ...
- zoj——3624 Count Path Pair
Count Path Pair Time Limit: 3 Seconds Memory Limit: 65536 KB You are given four positive intege ...
- 《Linux内核分析》MOOC课程
http://www.cnblogs.com/wickedpriest/p/4315189.html
- jquery注冊文本框获取焦点清空,失去焦点赋值
在我们开发过程中特别是用户注冊时会有一个效果.就是文本框获取焦点清空提示,假设用户没有输入信息失去焦点赋值上我们的提示语 <html> <head> <meta http ...
- The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)
The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题目链接 没去现场.做的网络同步赛.感觉还能够,搞了6题 A:这是签到题,对于A堆除掉.假设没剩余 ...
- tomcat连接mysql的3个问题解决
转载请标明出处: 本文出自:[ouyida3的博客] 1.BasicDataSourceFactory Caused by: java.lang.ClassNotFoundException: org ...
- [译]使用AssetBundle Manader
AssetBundle and the AssetBundle Manager 介绍 AssetBundle允许从本地或者远程服务器加载Assets资源,利用AssetBundles技术,Assets ...