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. 用法 ...
随机推荐
- java 8新特性 匿名内部类的使用
package com.atguigu.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.Com ...
- npm安装node包时怎么显示安装进度
npm config set loglevel=http 打开这个你会看到所有的 HTTP 请求,除此之外如果还有 \ 长时间打转,那就是外部模块的编译过程,一个字:等. 具体地址可参考https:/ ...
- 解决win10磁盘占用过大的问题(亲测有效)
问题:打开任务管理器,经常会发现磁盘占用95%以上,电脑很卡,下面是解决方案 方法: 1.关闭家庭组. (1)搜索服务,找到“HomeGroupListener”服务,右键单击“属性”.在弹出属性界面 ...
- P3372 【模板】线段树 1 洛谷
https://www.luogu.org/problem/show?pid=3372 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 ...
- Ubuntu 16.04安装WPS
1.下载 http://community.wps.cn/download/ 根据需要对应版本进行下载deb包. 2.安装 sudo dpkg -i wps-office_10.1.0.5672~a2 ...
- Ubuntu 16.04常用快捷键(转)
注意:在Linux下Win键就是Super键 启动器 Win(长按) 打开启动器,显示快捷键 Win + Tab 通过启动器切换应用程序 Win + 1到9 与点击启动器上的图标效果一样 Win + ...
- Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询
FeatureLayer是要素图层,也是Arcgis的主要图层.用这个图层可以加载本地的shp文件.下面我们看怎样加载shp文件到MapView中.查看ArcGis API可知FeatureLayer ...
- what happens if we dont resolve or reject the promise
https://stackoverflow.com/questions/36734900/what-happens-if-we-dont-resolve-or-reject-the-promise I ...
- update city_demo set city=(select city from city order by rand() limit1);
update city_demo set city=(select city from city order by rand() limit1); 因为使用了rand()函数,所以每一次查询的结果是不 ...
- Android Studio怎样改动快捷键
在Android Studio中.如果你认为某个快捷键太复杂,要想改动.怎么改动呢,首先要找到这个快捷键,可是Android Studio搜索快捷键有一个bug,就是你不能依据快捷键来搜索相应的功能点 ...