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):
默认括号内容,直接Enter
3.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,直接Enter
3.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,Enter
3.8 Set up unit tests(Y/n)
是否安装单元测试,这里没时间搞单元测试,我是直接过了,输入n,Enter
3.9 Setup e2e tests with Nightwatch? (Y/n)
用Nightwatch设置E2E测试,还是不使用,输入n,Enter
3.91 Should we run
npm install
for 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. 用法 ...
随机推荐
- C语言编程规范试题(标准答案)
C语言编程规范试题(标准答案) 一.单选题(每小题3分,共20小题60分) 1.1-1.5 B D A C B 1.6-1.10 C A D B C 1.11 ...
- NOIP2011 提高组合集
NOIP 2011 提高组合集 D1 T1 铺地毯 模拟,题目让你干啥你就干啥 #include <iostream> #include <cstdio> using name ...
- springboot整合dubbo的简单案例
使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目 ...
- ojdbc.jar
Oracle的jdbc驱动是ojdbc.jar 文件,那么mysql的jdbc驱动是什么呢? 匿名 | 浏览 689 次 发布于2015-06-07 02:06 最佳答案 MySQL的JDBC ...
- Android: 长按及松开处理
长按及松开处理 // 长按触发handle final Handler handler = new Handler(); final Runnable mLongPressed = new Runna ...
- Android学习路线(十八)支持不同设备——支持不同的屏幕
Android系统使用两个普通属性:尺寸和密度,来对设备屏幕进行分类. 你须要先预測你的应用将会在什么样屏幕的设备上安装,包含屏幕尺寸和密度.这种话,你就须要提供一些可选的资源类让你的应用在不同屏幕的 ...
- 在Java中按字节获得字符串长度的三种方法
转载:http://www.blogjava.net/nokiaguy/archive/2010/04/11/317982.html 由于Java是基于Unicode编码的,因此,一个汉字的长度为1, ...
- HDFS学习笔记(2)hdfs_shell & JavaAPI
FileSystem shell指令 官方文档: HDFS Commands Reference appendToFile cat checksum chgrp chmod chown copyFro ...
- wpf slider进度条的样式模板,带有进度颜色显示
效果图: 仅仅需在前台加上这段代码就可以: <UserControl.Resources> <!--笔刷--> <LinearGradientBrush x:Key=&q ...
- iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别
1.enum可以声明一般类型和位掩码(bitmasked)类型 例如: enum Test{// 一般枚举 TestA, TestB, TestC, }; enum{// 匿名枚举 TestA, Te ...