安装node.js
下载网址:https://nodejs.cn/download/
node -v #查看node版本
npm -v #查看npm版本,可以成功环境变量配置正确
npm config set registry http://registry.npm.taobao.org #设置npm为淘宝
npm config get registry # 查看npm配置的镜像源
npm config get prefix #查看全局安装位置
npm config set prefix F:\node\npm_global #修改全局安装位置
npm config set cache F:\node\npm_cache #修改缓存位置
npm config get cache #查看缓存位置
set path=%path%;F:\node\npm_global\ #node 添加到路径中
安装yarn npm install -g yarn
全局安装
yarn --version #查看yarn的版本
yarn global bin #查看 yarn的bin安装位置
yarn global dir #查看yarn的全局安装位置
yarn config set global-folder F:\node\yarn\global #修改全局安装位置和缓存位置
yarn config set cache-folder F:\node\yarn\cache #修改缓存位置
安装Vue-cli yarn global add @vue/cli
通过npm安装 npm install -g @vue/cli
需要把刚才设置的F:\node\npm_global添加到path中
vue -V
查看脚手架版本号
yarn global add 包名 #全局安装包或模块
yarn remove 报名 #卸载移除包或模块
yarn (yarn install) #根据当前目录下的packgae.json文件配置自动下载安装包列表
yarn dev #启动一个http服务器运行前端项目
yarn init #自动构建前端项目
yarn publish #发布到官方包管理器中
命令行切换到创建项目的文件夹
运行命令 vue create vue_test
创建应用程序vue_test
选择vue的版本以及自定义安装,方向键选择,选择第3项目自定义安装
Progressive Web App (PWA) Support #单页面应用
Router #路由
Vuex #全局数据管理器
CSS Pre-processors #CSS sass 预解释器
Linter / Formatter
如果安装了yarn选择通过npm 还是yarn创建(一定要设置淘宝镜像)
进入项目根目录 cd vue_test
运行项目 npm run serve
运行 vue ui
命令打开网页窗口
选择【创建】,修改项目存放的路径
项目文件夹中输入项目名称
选择系统预设的配置,这里选择【手动】
选择功能这里同命令模式。一般需要选择Babel、Route、Linter(建议不要选)、使用配置文件
对功能进行配置:vue版本,历史模式路由关闭(采用哈希模式),css选择sass,linter 选择standard,Lint on save打开(保存时进行校验)
是否把刚才的配置保存为新的预设
配置Element-UI组件库
vue-cli-plugin-element
配置axios
axios
,要选择运行依赖安装less相关依赖
less
npm install
进行安装,本地开发的依赖库执行index.html
main.js
App.vue 进行路由
页面组件
具体组件
当在事件中需要对模板中template 定义的元素进行引用时的操作。即进行DOM操作,通过 this.$refs.name
可以获取到ref 为 name 的模版元素。
<template>
template>
<script>
……
methods:{
getEcle(){
this.$refs.contentDiv.innerHTML="改变div的文本"
this.$refs.username.vaule="你好" //给input赋值
}
}
script>
import MyCom from “./components/MyCom.vue”
导入组件
在components中注入组件
export default{
components:{my-com:MyCom}
}
通过
进行使用
前面的组件注册都是局部注册,可以在main.js中对组件进行全局注册。流程如下:
Vue.component("标签名",组件名)
的方式进行注册props
列表对象,来自动组件的属性,实现传值操作。props:["title"]
这里的title为组件的属性名称,相当于在组件data()内定义了一个为title的数据。父组件通过给title赋值从而实现给子组件传值的目的。this.$emit("事件名称",传递的数据)
定义在父组件中通过@事件名称
来调用子组件的事件,从而触发子组件定义的原生事件。 通过数据完成相应的数据传递。
可以加载在父组件引用子组件标签中的HTML内容默认插槽内容>
v-slot:插槽名称
指定插槽的名称,从而指定模板内容具体绑定到哪个插槽上v-slot:插槽名称
可以简写成#插槽名称
的形式可以通过Vue.prototype
实现全局变量的定义。
在main.js中添加一个变量到 Vue.prototype
Vue.prototype.$appName = 'My App'
这样 $appName 就在所有的 Vue 实例中可用了,甚至在实例被创建之前就可以,通过this. $appName
使用这个全局变量
$ 是在 Vue 所有实例中都可用的 property 的一个简单约定。这样做会避免和已被定义的数据、方法、计算属性产生冲突。
export 与import是es6中新增模块功能最主要的两个命令:
应用场景:用于一个文件内暴露多个属性的场景,分别暴露,每一个属性都进行暴露
//暴露
export const a =()=>{
console.log(999);
}
export const b = 2
export const c = 1
//引入
import {a,b,c} from '@/api/api'
//使用:可直接通过a,b,c获取
created(){
a()
console.log(b,c);
应用场景:用于一个文件内暴露多个属性的场景,统一进行暴露
//暴露
const a =()=>{
console.log(999);
}
const b = 2
const c = 1
export{a,b,c}
//引入
import {a,b,c} from '@/api/api'
//使用
created(){
a()
console.log(b,c);
}
应用场景:对于只需要暴露一个属性的时候使用
//暴露
const a =(data)=>{
return data+1
}
export default a
//引入
import a from '@/api/api'
//使用
created(){
console.log(a(5));
}
参考网址:https://router.vuejs.org/zh/guide/
导入组件
在routes数组中添加字典 path :路由的路径 component : 组件名称要和导入组件名称一致
import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from "../components/Login.vue"
Vue.use(VueRouter)
const routes = [
{path:"/", redirect:"/login"},
{ path:"/login",component:Login}
]
const router = new VueRouter({
routes
})
export default router
在app.vue 中注册路由配置
<router-view>router-view>
在routes数组中添加字典 path :“/”,redirect : “/login”
在路由中配置路由,形成页面的嵌套。
{
path:"/home",
component:home,
redirect:"/welcome",
children:[
{path:"/welcome",component:welcome},
{path:"/userlist",component:UserList},
{path:"/catgory",component:Catgory},
{path:"/goodslist",component:Goodslist},
{path:"/goods/add",component:GoodsAdd, name: 'MtainGoods'},
{path:"/order/list",component:Orderlist}
]
}
当访问没有需要登录的页面,这时就需要通过路由拦截进行实现。在路由配置中通过下面方法实现路由拦截。
//路由拦截
router.beforeEach((to,from,next)=>{
//to 将要访问的页面
//from 从哪个路径跳转而来
//next 是个函数,表示放行 next('/login') 强制跳转到登录页
if(to.path==='/login') return next()
const tokenstr=window.sessionStorage.getItem('token')
if(!tokenstr) return next('/login')
next()
})
router-link
我们没有使用常规的 a
标签,而是使用一个自定义组件 router-link
来创建链接。这使得 Vue Router 可以在不重新加载页面的情况下更改 URL,处理 URL 的生成以及编码
<div id="app">
<h1>Hello App!h1>
<p>
<router-link to="/">Go to Homerouter-link>
<router-link to="/about">Go to Aboutrouter-link>
p>
<router-view>router-view>
div>
router-view
router-view
将显示与 url 对应的组件。你可以把它放在任何地方,以适应你的布局。
在 Vue 实例中,你可以通过 $router
访问路由实例。因此你可以调用 this.$router.push
,基本用法如下:
this.$router.push("/home")
params
传参,显示参数。这种利用 params
不显示 url
传参的方式会导致在刷新页面的时候,传递的值会丢失
在路由配置中定义好路由的名称。
{path:"/goods/add",component:GoodsAdd, name: 'MtainGoods'}
在父路由中指定参数,通过name指定跳转的路由名称,实现跳转路径,通过query字典设置传递的参数
this.$router.push({
name:'MtainGoods',
query:{id:123}
})//传参跳转路由
3、在子路由中接收参数值,通过this.$route.query
获取传递的参数值
if(this.$route.query.id){
this.formbaseData.id=this.$route.query.id
this.Isadd=false
this.getGoodsinfo()
}
import "./assets/css/global.css"
在main.js中导入字体图标的iconfont.css文件即可。
username:[
{required:true,message: '请输入用户名', trigger: 'blur'}, /*, trigger指定触发时机,blur失去焦点验证 */
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'change' }
],
trigger 属性指定验证时机,blur 表示失去焦点验证 ,change 表示内部改变的过程中验证(这一点比uniapp好)
submitForm(){
this.$refs.form.validate((valid)=>{
console.log(valid)
})
}
通过表单的validate方法中的回调函数的第一个参数返回状态,true 表示通过,false 表示没有通过
通过vue ui 运行vue脚手架ui界面
选择已有项目或者导入项目
选择依赖,在运行依赖中安装nprogress
导入进度条以及进度条依赖的样式。
// 加载进度条
import NProgress from 'nprogress'
// 进度条样式
import 'nprogress/nprogress.css'
配置axios
axios
,要选择运行依赖配置访问的根目录
//配置请求跟路径
axios.defaults.baseURL= 'http://localhost:5000'
配置request拦截,并加载进度条,设置数据提交的头部信息
// 在request拦截器中展示进度条NProgress.start()
axios.interceptors.request.use((config)=>{
NProgress.start()
config.headers.token=window.sessionStorage.getItem('token')
return config
})
配置response拦截,关闭加载进度条
// 在response拦截器中隐藏进度条NProgress.done()
axios.interceptors.response.use(config =>{
NProgress.done()
return config
})
设置异步加载全局变量
// 设置全局变量,this.$http调用,(this.$http.post或者this.$http.get)
Vue.prototype.$http = axios